用 vscode 在单片机上写 python 是什么体验?
背景
我是个很讨厌 C 系语言的人(中文发音不算🌚)。任何应用如果是用 c++、c 开发的,多少我都会有点反感,原因很简单,它写起来不美观,看上去也不够优雅,重点是它晦涩难懂,虽然我知道它性能好。但也不影响我打心眼里讨厌它!
所以我在任何以其它语言实现的🐂🍺项目的时候,都会思考:
能不能用node来实现它?(再不济 python 也行啊!)
功夫不负有心人。虽然没有找到 JavaScript 的解决方案,但是在调试 esp32 主板的时候无意发现了 micropython 这玩意儿。从官网上看它基本上和 python 语法上没啥差别。想到能在单片机上运行python代码,也算是很开心了。
说干就干。以下是我用 vscode 搭建一个 micropython 开发环境并且运行了一个简单项目的过程。
前期准备
- ESP32-c3-supermini x 1
- 数据线 x 1
涉及的技术
micropython、tailwindcss、vscode
环境搭建
以下内容我就默认你懂一点 python 的语法
1. 安装 Pymakr
主要是用来识别单片机、并且上传下载代码的一个插件。这个简单,在 vscode 的插件库安装就好了
在vscode 上有另外一个更热门的插件:RT-Thread,但是我体验下来,因为我是用的 mac 开发,芯片都识别不出来,相当不好用👎,所以放弃了。windows 用户可能比较友好吧。
2. 烧录 micropython
进入官网,进入 download 页面,选择适合自己主板的驱动进去,下载 xxx.bin 文件。(最新的就行)
下载好了之后,通过终端进入这个文件所在的根目录,依次执行以下命令:
1 | # 擦除esp32c3 的所有数据 |
当终端输出 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 | # boot.py -- run on boot-up |
代码写好之后,点击上传按钮,再点击开发板上的 reset 键即可运行。
如果代码正常运行并且 wifi 连接成功的话,单片机的指示灯会先亮一下,再变暗,终端就会提示类似以下代码:
1 | Connection successful: |
小结
这是第一次使用 micropython 作为开发环境搭建的一个项目,问题其实还是蛮多的,最值得诟病的还是速度确实很慢,这个和 esp32-c3 的架构有关系。根据查阅的相关资料说明,这款开发板不太适合 micropython 的开发模式,据说它会比正常的 C++ 开发模式慢100倍…
但是说实话,开发的爽感还是有的,但是如果追求性能和稳定性就不太推荐了。可以选择其它性能更好的板子。
所以在使用了这个 demo之后,我还是切回了正常的 platformIO 开发模式😂。
参考
用 vscode 在单片机上写 python 是什么体验?
http://blog.jzxer.cn/20241205/20241205_micorpy_with_esp32C3/