这个周末,把N年前买的,都是基于ESP8266的小板子(ESP-01和基于ESP-12E的NodeMCU)拿出来玩了下,发现还有可玩性。主要是刷上MicroPython,就带来更多玩法。以前写过相关的Blog文,现在看着,觉得没用,于是重写一篇。
1. ESP8266硬件
可以简单理解为支持2.4GHz WiFi的廉价、低功耗芯片。详细的特点,参考官方文档:
https://www.esp8266.com/wiki/doku.php?id=feature_set
官方Wiki,基本想了解的都可以在这里找到:
https://www.esp8266.com/wiki/doku.php?id=start
ESP8266的硬件家族介绍:
https://www.esp8266.com/wiki/doku.php?id=esp8266-module-family
有人做了个对比:
ESP8266 module comparison: ESP-01, ESP-05, ESP-12, ESP-201, Test Board and NodeMCU
https://blog.squix.org/2015/03/esp8266-module-comparison-esp-01-esp-05.html
简单来说,一般入门的,推荐购买NodeMCU或者D1 Mini这种带USB转TTL芯片的,接上电脑就可以开发了。像ESP-01这种简单且廉价的,最好作为硬件项目的模块来用,普通玩家不要像我这样贪便宜去购买。因为开发时,ESP-01需要USB转TTL来连电脑,实际使用时也需要3.3V的电源来启动。
NodeMCU开发板官网:
https://www.nodemcu.com/index_cn.html
D1 mini官方文档:
https://www.wemos.cc/en/latest/d1/d1_mini.html
2. 选择固件(Firmware)
还是先看官方WiKi的介绍:
Loading new firmware onto an ESP8266
https://www.esp8266.com/wiki/doku.php?id=loading_firmware
能玩的固件,有3个:
1)AT命令固件(AT-Command firmware),适合ESP-01这种作为模块嵌入到硬件项目。其它硬件使用AT命令操控ESP8266来使用WiFi联网。
2)NodeMCU固件,基于Lua语言的,NodeMCU官方网站有简单介绍。另外,其固件需要从定制网站选择模块,build完后,会发Email并提供下载。
NodeMCU固件定制网站
https://nodemcu-build.com/
3)MicroPython,基于Python3语法作为开发语言的固件。一般需要2MB以上空间,NodeMCU板基于ESP-12E,内部空间(flash)是4MB,可以刷最新版本。ESP-01内部空间只有1MB,能刷v1.12或以下的版本,或者刷定制针对1MB的定制版。但是ESP-01运行MicroPython不稳定,网上有说是硬件的问题。所以ESP-01最好不要刷MicroPython。
MicroPython官网:
https://micropython.org/
MicroPython源码:
https://github.com/micropython/micropython
MicroPython针对ESP8266的资料,包括刷机和开发文档:
MicroPython - Quick reference for the ESP8266
https://docs.micropython.org/en/latest/esp8266/quickref.html
MicroPython针对ESP8266的固件下载:
MicroPython Firmware for Generic ESP8266 module
https://micropython.org/download/esp8266/
3. 刷入固件
不管刷什么固件,都是一样的操作。先下载固件文件,再安装刷机工具。刷固件前,先擦除所有数据,再刷固件。网上有很多教程,包括不同操作系统,图形化工具或者命令行操作。下面以Ubuntu为例,默认连接在/dev/ttyUSB0,使用esptool.py作为工具操作。
sudo apt update
sudo apt install python3-pip
sudo pip3 install esptool #安装esptool.py
sudo esptool.py --port /dev/ttyUSB0 erase_flash #擦除所有数据
sudo esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 firmware_file_name.bin #刷入固件
4. 调试系统
命令行调试的话,Windows上可以用PuTTY(需要装对应TTY驱动),Linux(例如Ubuntu)上可以用minicom或者screen命令连上去。
screen命令的格式是screen -S 名称 /dev/接口名称 波特率
,其中名称是方便暂时断开后再进入,即如下:
sudo screen -S esp /dev/ttyUSB0 115200
minicom命令,可以设置参数,直接连上,如下:
sudo minicom -D /dev/ttyUSB0 -b 115200
也可以不设参数,直接使用sudo minicom
,进去后设置。具体操作是
-> 按[Ctrl] + [A]
-> 按[Z]
-> 按[O],即选择“cOnfigure Minicom..O”
-> 选“Serial port setup”
-> 弹出菜单按如下设置:
+-----------------------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-----------------------------------------------------------------------+
-> 选“Save setup as dfl”,回车
-> 选“Exit”,回车
然后就进入控制台了。
5. 开发工具
一般推荐ESPlorer,基于Java的开源图形化开发工具。该工具比较全面,三个固件都支持,可以用来做调试,也可以做开发,上传文件。本来想写下一些基本测试代码,比如连上WiFi之类,但是该工具都提供了对应的按钮,啥都不用写了。
ESPlorer官网:
https://esp8266.ru/esplorer/
ESPlorer源码:
https://github.com/4refr0nt/ESPlorer