在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 固件烧录
安装esptoolpip 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
的用法就说了,很多地方可以看。推荐一些资料,看完这些,基本需求一般都能掌握了
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!