在esp32上使用micropython的一些心得

其实老早之前买了物联网Python开发实战这本书的时候就注意到了Pyboard(基于stm32),还买了个板子实践了下,但是感觉micropython这个东西有点冷门,像个半成品一样(狭隘了),就把板子丢一边,继续用Arduino个树莓派了。最近在寻找单片机的时候,发现了esp32以及micropython,发现好像有点厉害,某宝店铺什么的的热度都不错,就买回来些许测试一波,发现很好用,顺便记录一些关键点。

1. 什么是Micropython

1.1 语言优势

MicroPython是以Python语言为基础能用于MCU的编程语言系统集合,它是运行在一系列微控制器硬件平台上的系统的名称,类似于Arduino。是近年来开源社区中很是热门的项目之一,它功能强大,使用简单,是创客、DIY爱好者、工程师相当好的工具,适用于小学到大学各个年龄段同学们完成对Python语言的入门,掌握基础电路知识和理解编程思想及原理,同时也适合熟练使用python或其他高级语言(JAVA,.NET,PHP等)但不懂或不熟悉硬件知识的程序猿完成嵌入式开发,同时也可以使用在专业开发中。相比另一个创客神器Arduino,MicroPython使用更加简单、方便,入门更快,性能也更好,更加适合初学者。

相比于C语言上,切身的感受到,需要学习者花费更多的精力去理解引用,指针等等对于一个新手而言完全搞不清楚的概念。而且当我们使用C语言开发时,一个很小的功能就需要花费很多行代码去实现,吃尽了苦头且没有吃到过甜头

1.2 MicroPython VS 传统硬件开发

对于传统的硬件开发而言,大多使用C/C++这类编译型语言。
这种开发方式往往需要以下几个步骤:1.编写代码 2.编译代码 3.烧录到芯片 4.运行程序

在这种模式下,当你发现自己的代码里有一行出了bug,即使是很微小的改动就能够修复,但你仍旧需要重新执行编译和烧录,才能够正确的运行。

而对于MicroPython而言,只要我们给芯片刷入了MicroPython固件,(结合我们上节所解释的解释器的概念,这就相当于我们为自己雇佣了一个私人翻译官,随时在芯片里等待着为我们翻译解释代码给芯片去执行。)之后的一切就简单得多。我们可以以两种方式来进行开发:

进入交互式解释器 测试和运行代码
我们可以进入交互式的解释器环境随时输入代码执行(进入这位翻译官的办公室,当面发号施 令),发现代码有误,可以立即更改。

将代码保存到文件系统,让解释器开机之后按特定规则去执行
我们还可以将代码整理好,保存到MicroPython的文件系统中(没错这就相当于这位翻译官的文件夹,你可以让这位翻译官按照你规定的顺序去执行这些文件中的代码)。MicroPython默认开机后从boot.py开始执行,然后开始执行main.py。

2.板子选择以及固件烧录

2.1 板子选择

我选择了我国的乐鑫公司设计研发的NodeMCU-32S,高性能,低功耗,物美价廉,自带了WIFI和蓝牙模块

2.2 固件烧录

安装esptool
pip install esptool
擦除整个闪存
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
烧入固件,固件从地址0x1000开始:
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20190125-v1.10.bin

3. Micropython工作流程

来到了开发中的工作流程,这是比较适合自己的方法,值得着重记录。
Pycharm中的micropython插件本来是所有任务一把梭,但是有时候REPL会失效,上传文件倒是很好,所以REPL有其他选择

因为我是在Ubuntu中开发,所以存在串口权限问题,在连上电脑时,必须sudo usermod -a -G dialout $USER 一劳永逸!

3.1 REPL

交互式的Python会话,爽爆了,测试语法,,硬件啥的简单的一笔,再也不用烧录测试了。
rshell中的repl虽然好,但是当单片机中本来跑着一个循环任务,然后你repl进去会强制中中断或者没反应,也不知道啥情况,怪怪的,所以我直接使用
串口终端picocom:picocom -b 115200 /dev/ttyUSB0,如要退出,先按Ctrl + A进入转义模式,再按Ctrl + Q即可正常退出。
在特定情况下也可以用WebREPL,允许你通过WiFi使用MicroPython的REPL,通过浏览器连接,使用了WebSockt通信协议。但我没尝试过,=。=,具体看文章末的链接

3.2 代码部署

Pycharm中的micropython插件自带的Flash上传文件很好用,但是有时候还想要看看单片机里面的文件系统,这里rshell就派上用场了,我们用rshell -b 115200 -p /dev/ttyUSB0进入串口文件系统,ls /pyboard或者ls /flash查看单片机中的文件,当然也可以进行复制编辑等

4. 资料补充

一些micropython的用法就说了,很多地方可以看。推荐一些资料,看完这些,基本需求一般都能掌握了