如何在 esp32-c3 上使用 micropython

如何在 esp32-c3 上使用 micropython

背景

我是个很讨厌 C 系语言的人(中文发音不算🌚)。

所以相对的,如果任何应用是用 c++、c 开发的我都会有点反感,原因很简单,它写起来不美观,看上去也不够优雅,重点是它晦涩难懂,虽然我知道它的性能是最好的。但也不影响我讨厌它!

真的很讨厌!

所以我在任何 idea 迸发出来的时候,都会去思考:能不能用node来实现它?再不济 python 也行啊!

这不,下功夫就永远不会辜负我的。在调试 esp32 主板的时候无意发现了 micropython 这玩意儿。从官网上看它基本上和 python 没差,虽然还有点距离。但是想到能在单片机上运行python代码,也是很开心了。

顺着这个脚步就开始探索下去。以下是我搭建一个 micropython 开发环境并且运行了一个实例的过程。

前期准备

  1. Esp32-c3 x 1
  2. 数据线 x 1

涉及的技术

micropython、tailwindcss、vscode

环境搭建

以下内容我就默认你安装了 vscode、python,并且懂一点 python 的语法了

1. 安装 Pymakr

这个简单,就在 vscode 的插件库安装就好了

image-20241205171010168

在vscode 上有另外一个插件:RT-Thread,但是我体验下来,因为我是用的 mac 开发,相当不好用👎,所以放弃了。windows 用户可能比较友好吧。这个看个人喜欢。

2. 烧录micropython

进入官网,进入 download 页面,选择适合自己主板的驱动进去,下载 xxx.bin 文件。(最新的就行)

esp32-c3

下载好了之后,通过终端进入这个文件所在的根目录,依次执行以下命令:

1
2
3
4
5
# 擦除esp32c3 的所有数据
esptool.py --chip esp32c3 --port ${当前设备的端口} erase_flash

# 烧录系统到主板
esptool.py --chip esp32c3 --port ${当前设备的端口} --baud 460800 write_flash -z 0x0 ${下载的文件完整文件名}

当终端输出 success,说明你烧录成功了!接下来就可以愉快的编写 python 代码了。

3. 连接设备

把设备通过usb连接到电脑,打开 vscode 侧边的tab页面,一般就会显示当前连接的设备。我这里是已经连接的状态。

资源管理器

如果这个时候如上图所示,上传、下载、打开文件夹都是灰色状态,但是设备是已经连上的,说明设备在执行命令中,可以通过下面的 stop script, 让它停下来,对应用进行操作。一般这个界面我只会用到这个功能和 soft reset device 偏多。

弹框

4. 上传代码

设备正常连接,退出执行代码状态之后,就是正式的编写脚本的阶段了,这个时候自由发挥就好了。就正常的编写 python 脚本。

需要注意的点是,如果通过 pymakr 创建的示例代码会自动创建三个文件:boot.py、main.py、pymakr.conf

它们分别代表的作用是:

  • boot.py: 初始化脚本,一般这里面执行的内容都是一次性的,比如初始化wifi这种。
  • main.py: 正式脚本,里面就是正常的逻辑代码。
  • pymakr.conf: 配置文件,这个是必须的,作为项目的可配置内容,具体参数可以参考官网。

在本文中我提供一个在初始化 wifi连接的方法,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# boot.py -- run on boot-up
from machine import Pin
import time
import network

ssid = 'Xiaomi_F2ED'
password = '123456789jzx'
light = Pin(8, Pin.OUT)

station = network.WLAN(network.STA_IF)
station.active(True)
light.value(1)
print("start...")
print("connecting...")
# 连接超时设置
station.connect(ssid, password)
while station.isconnected() == False:
pass

print('Connection successful: ')
print(station.ifconfig())
# 关闭 LED 灯
time.sleep(1)
light.value(0)

代码写好之后,点击上传按钮,再点击开发板上的 reset 键即可运行。

esp32-c3

如果代码正常运行的话,终端就会提示类似以下代码:

1
2
Connection successful: 
('192.168.xx.xx', '255.255.255.0', '192.168.xx.1', '192.168.xx.1')

小结

这是第一次使用 micropython 作为开发环境搭建的一个项目,问题其实还是蛮多的,最值得诟病的还是速度确实很慢,这个和 esp32-c3 的架构有关系。根据查阅的相关资料说明,这款开发板不太适合 micropython 的开发模式,据说它会比正常的 C++ 开发模式慢100倍…

但是说实话,开发的爽感还是有的,但是如果追求性能和稳定性就不太推荐了。可以选择其它性能更好的板子。

所以在使用了这个 demo之后,我还是切回了 platformIO 的开发模式😂。

参考

dev 的艺术空间

gary W

如何在 esp32-c3 上使用 micropython

http://blog.jzxer.cn/20241205/20241205_micorpy_with_esp32C3/

作者

dev

发布于

2024-12-05

更新于

2024-12-31

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×