8266 micropython 折腾笔记

搞了个 esp8266 来玩,我手上这一款 8266 到手是 NodeMcu Lua,奈何不会 c 语言。发现有能用 python 的固件,折腾走起。对这些东西一无所知,踩了许多坑,记录一下。

环境配置

  1. 刷入固件

固件相当于电脑的系统,是运行程序的环境。这里选择 micropython。

这一步就踩了很多坑。先后用了ESP8266Flasher,NodeMCU-PyFlasher,刷完之后串口总是会偶尔断开。

后来用了esptool,就没有这个问题了,不知道是巧合还是我操作不当了。

固件获取 https://micropython.org/download/

官方文档 https://docs.micropython.org/en/latest/esp8266/tutorial/intro.html

安装 esptool. (需要 python 环境)
https://github.com/espressif/esptool/

1
pip install esptool

擦除原有固件(这一步似乎非常重要,在使用 8266 过程中出现奇怪的问题的话就多擦除几次)

1
esptool.py --port com8 erase_flash

官网给出的两条刷入指令

1
esptool.py --port com8 --baud 921600 write_flash --flash_size=detect 0 esp8266-20220117-v1.18.bin
1
esptool.py --port com8 --baud 921600 write_flash --flash_size=detect -fm dout 0 esp8266-20220117-v1.18.bin

到此应该已经刷入成功了

串口调试工具

这里也遇到了许多问题。很多人推荐 putty, 这东西以前搞服务器 ssh 的时候就用过,感觉非常不好用。在用 8266 时,经常遇到没反应的情况,鼠标和键盘的使用风格实在是适应不来,搞不懂。还有安信可的调试工具、sscom,可能是我不会用。

这里推荐

ESPlorer

好像是毛子开发的软件。需要 java 环境。支持 nodemcu 和 micropython

  1. 自带编辑器,可以多行发送,非常方便

  2. 还可以保存 16 个快捷命令,方便调试

  3. 传送文件会出错,我没研究为什么。可能是编码或缩进的问题

  4. 无法发送 KeyboardInterrupt,写错了死循环退不出来就头疼。

MicroPython File Uploader

看名字其实知道,这其实是来传送文件的

  1. 程序小,仅几十 kb。简单发送命令,能发送 KeyboardInterrupt,重启等指令

  2. 可以获取和发送文件,而且是通过串口,而不是像 webprel 通过网络

uPyCraft

专为 micropython 设计的

  1. 个人认为这软件带有的中文教程算是最好的,还有 example, 非常值得一看。

  2. 这应该算是一个编辑器带了一个串口调试,可以上传文件,目录管理。图形化操作是几个软件中最好的。

  3. 网上的说法,编码疑似有问题,我没有研究这个问题。

uPyLoader

个人认为更好用的传送文件的工具,支持多文件。但需要在 8266 中安装相应的库文件

webprel

官方自带的 webprel 工具,通过无限网络进行调试

  1. 调试功能较弱,复制粘贴操作不方便,但可以发送 KeyboardInterrupt

  2. 可以上传和下载文件。

调试

webrepl 需要在同一局域网,8266 的 ip 地址会变动(当然可以设置固定的 ip),重启会断开,调试起来不是很方便,建议用来上传下载文件使用。

ESPlorer,我主要用这个来调试。直接将代码多行发送,无需上传文件。还可以保存快捷命令(snippets)

编译

micropython 可以直接执行 py 源码。可以将 py 源码二进制化为 mpy 文件,据 micropython 的说法,二进制文件更具效率、更小的文件大小。另外自行编译固件时也可将自己的代码编译进固件中。

这里使用的工具是 mpy-cross, 同样是 pip 安装

https://github.com/micropython/micropython/tree/master/mpy-cross

1
pip install mpy-cross

使用方法

1
mpy-cross example.py

更多用法见官网

2022-03-20

下午琢磨了三四个小时,一个舵机能正常动,另一个舵机不行。

首先一个是面包板的电源那条是中间隔开的,开始的时候我只给一边通了电,另一边没有电。这个很容易发现,接个灯上去就发现了。

关键问题在于面包板的电源线,这玩意才是折磨了三四个小时的原因,我两个舵机换着测试、两个 mcu 换着测试、不同的接口换着测试、杜邦线换着测试、代码换着测试、固件换着测试。什么控制变量法全部用上。搞了几个小时候才发现。面包板的电源线没有升压,电压不足。换了根有升压的线,马上就解决了。。。

2022-04-17

做好的一个小项目运行了两个星期,今天发现 esp8266 闪蓝灯,即不断重启。

想更改代码进行调试,但是不断重启的情况下无法通过 wifi 和 com 口传输代码。

只能重新刷固件,多次通过命令行esptool.py手动刷始终显示成功,但是原有的代码依然在运行。实际上就是没有刷成功。

但是通过NodeMCU-PyFlasher.exe就一次成功了,而且NodeMCU-PyFlasher使用的也是 esptool.py. 可能是使用的参数不一样。

未完待续