# pikapython_esp32_demo **Repository Path**: kcfkwok/pikapython_esp32_demo ## Basic Information - **Project Name**: pikapython_esp32_demo - **Description**: This program demonstrate the porting of pikapython to different kinds of esp32 series. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2023-07-26 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pikapython_esp32_demo #### 介绍 该程序演示了将pikapython移植到不同类型的esp32系列。 测试了以下硬件: * PIKA_PI_WIRELESS, esp32s3 参考: [李昂 / PikaPython-OpenHardware](https://gitee.com/Lyon1998/pikapython_openhardware?_from=gitee_search) * M5Paper, esp32 * ESP32C3-DEVKIT-RUST-1, esp32c3 #### 软件架构 它基于pikapython,请参阅 [pikapython 文件](https://pikapython.com/doc/index_intro.html) #### 安装教程 1. 从 [dl.espressif.cn](https://dl.espressif.cn/dl/esp-idf/?idf=5.0) 下载 esp-idf v5.1. 成功安装后,运行“ESP-IDF 5.1 Power Shell”. 2. 从 https://pikapython.com/ 下载 pikaPackage.exe. 将其放在components/pikapython文件夹下. 3. 运行pikaPackage.exe,将创建pikascript-api、pikascript-core和pikascript-lib文件夹,并生成相关文件。 4. 安装Visual Studio Code。在ESP-IDF 5.1Power Shell下运行 Visual Studio Code。安装“CMake Tools”插件。它可以帮助您轻松地浏览源代码。 5. 下载 [PikaPython Studio](https://gitee.com/Lyon1998/pikapython/attach_files/1285327/download)。当只更改python代码时,就不需要重新编译整个项目并再次覆写闪存。PikaPython Stutdio 可以编译python代码来构建一个新的 archive 档案,并上传到开发板上重新运行。这样能加快开发过程。 #### 使用说明 1. 支持的开发板已列在“boards”文件夹下。该文件夹包含每个受支持硬件的以下文件: 1.1 sdkconfig.defaults.BBBB.xxxx , 其中,BBBB 是开发板名, 如PIKA_PI_WIRELESS,xxxx 是MCU 现在仅支持esp32、esp32s3和esp32c3。 1.2 partitions.BBBB.csv. 这是用于开发板 BBBB 的partitions table 。 2. 选择硬件并开始运行演示: 2.1 运行“python set_target_boards.py”选择硬件。它将从上述“boards”文件夹中选择相关设置来覆盖sdkconfig.defaults。然后运行“idf.py set target xxxx”。这样比每次切换不同的开发板时,要调用“idf.py menuconfig”来调整设置节省不少时间。 2.2 如果使用的新开发板未在“boards”文件夹中定义。使用“boards”文件夹中的文件作为模板可以很容易地构建sdkconfig.default.NEW_BOARD.xxxx和partitions.NEW_BOARD.csv。 2.3 当使用“idf.py menuconfig”更改某些配置并希望将更改保存到“boards”文件夹为默认文件时。可以使用工具“sdconfig_diff.py”识别所更改的配置。 2.4 运行“make.bat”。这将调用“rust-msc-latest-win10.exe”来重新构建python archive 档,然后调用“idf.py build && idf.py flash”来重新编译项目并将其闪存到目标开发板 2.5 运行“idf.py-monitor”启动与pikapython Shell 作交互,或者 2.6 运行“pikaPython Studio”将python archive 案上传到开发板上(请参阅第4节) 3. 实现的功能和相关配置设置 3.1 CONFIG_USING_SD. 这允许使用CSNP4GCR01-BOW(4Gb SD NAND)来支持文件系统。现在仅适用于PIKA_PI_WIRELESS。当它被禁用时,内部闪存文件系统将安装为“/sd”,以兼容测试上传python archive。 3.2 CONFIG_USING_LCD. 这允许使用ZJY180SN009液晶显示器。现在仅适用于PIKA_PI_WIRELESS。 3.3 CONFIG_USING_BEEP. 这允许使用GPIO P6输出嘟嘟声。现在仅适用于PIKA_PI_WIRELESS。 3.4 CONFIG_USING_ERASE_TASK. 这使得可以使用GPIO引脚擦除上传的python archive档 (名为“sd/app.pika”)。可以用于所有开发板,但必须设置不同的GPIO引脚,该引脚由CONFIG_ERASE_TASK_GPIO_IN配置。 3.5 CONFIG_USING_AHT20. 这使得可以使用 C 和 python 读取 aht20 中的温度和湿度。 4. 上传python archive 档 4.1 纯python代码可以放在“components/pikapyson”文件夹中,用于测试python档案上传。为了避免混淆,可以创建新的文件夹“python_workspace”来测试上传python档案。此类文件夹必须包含以下文件: * 正在测试中 python 代码。 * "rust-msc-latest-win10.exe". 它被PikaPython Studio调用,将python代码编译为 python archive 档案, 以便上传到开发板。 * "/pikascript-api"子文件夹,用于存储要上载的python archive档。 4.2 运行“PikaPython Studio”,连接到开发板,选择要上传的python archive 档案("components/pikapython/pikascript-api/pikaModules.py.a" 或 “python_workspace/pikascript-api/pikaModules.py.a”)。成功后,终端上将显示以下消息,MCU将重新启动。并运行新的python代码: ``` =============== [File] =============== [ Info] Recived size: 1728 [ Info] Saving file to '/sd/app.pika'... [ Info] Writing 1728 bytes to '/sd/app.pika'... [ OK ] Writing to '/sd/app.pika' succeed! =============== [REBOOT] =============== abort() was called at PC 0x4200ac9a on core 0 .... [Info] load app from sd card .... mem used max: 8.40 kB mem used now: 6.14 kB test from test2 from python workspace ``` 4. 3 有时python代码会陷入死循环,无法响应到终端,此时便无法上传python档案。如果CONFIG_USING_ERASE_TASK已启用。按下CONFIG_ERASE_TASK_GPIO_IN 中的GPIO引脚 5秒便可以擦除上传的python archive档案。然后,MCU将重新启动,并运行原来的代码。终端输出将显示: ``` [Info] erase key pressed(1/5) [Info] erase key pressed(2/5) [Info] erase key pressed(3/5) [Info] erase key pressed(4/5) [Info] erase key pressed(5/5) [Info] erase flash and reboot abort() was called at PC 0x4200ac9a on core 0 .... [Info] load app from firmware .... mem used max: 6.71 kB mem used now: 4.45 kB test from test2 ``` 4.4 如果python代码触发立即重启,在重置后一秒内按下 CONFIG_ERASE_TASK_GPIO_IN 中的GPIO引脚也可以擦除上传的python档案。然后,MCU将重新启动,并运行原来的代码。终端输出将显示: ``` [Info] erase key pressed within 1s after reset [Info] erase flash and reboot abort() was called at PC 0x4200acea on core 0 .... mem used max: 6.71 kB mem used now: 4.45 kB test from test2 ``` #### Pika_PI_Wireless 快速演示 1. git clone https://gitee.com/kcfkwok/pikapython_esp32_demo.git 2. cd pikapython_esp32_demo/components/pikapython, run pikapackage.exe 3. cd pikapython_esp32_demo 4. 运行“python set_target_board.py”并选择PIKA_PI_WIRELESS 5. 运行“make.bat”编译并闪存到PIKA_PI_WIRELESS 6. 运行“idf.py monitor”或“pikapython studio”。然后键入“utest()” ``` >>> utest() [----------] tests from test1 [ RUN ] test1.test_readHumidity humi: 72.037506 [ OK ] test1.test_readHumidity [ MEM LACK ] 0.105469 [ RUN ] test1.test_readTemp temp: 29.381180 [ OK ] test1.test_readTemp [ RUN ] test1.test_read temp: 29.405403 humi: 71.911049 [ OK ] test1.test_read [----------] 3 tests from test1 [==========] [ PASSED ] 3 tests ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)