0. introduction
esp8266 是上海乐鑫出的低功耗WiFi芯片。搭载esp8266芯片的esp01是一个UART-WiFi无线模块,价格不到5块钱,深圳安信可出品,物美价廉,一个树莓派4的钱可以买50个!官方支持非常走心,一直在更新sdk,官方提供RTOS SDK和给低端芯片用的NONOS?SDK。
esp01串口下载刷写flash非常简单,同时公司对社区的支持非常好,所以开发者做了很多移植工作,有很多开源固件,包括Lua(NodeMCU),Python(MicroPython),esp8266 Arduino,JavaScript(Espruino)等,玩法很丰富。

esp8266 pinout
1. esp8266+arduino
在Arduino IDE安装esp8266
File>Preferences>Additional Boards Manager URLs 填入?https://arduino.esp8266.com/stable/package_esp8266com_index.json
Tools>Board menu 搜索并安装?esp8266platform

配置
esp01模块有一些变种,基本可以按照图中进行配置,默认板载蓝色的led是GPIO1,但和串口复用同一个引脚。只有 8Mbits (1MB) flash,但实际上只有1004KB可以给arduino程序使用,OTA需要双倍的空间,所以如果fs为0,OTA最多可用502KB。
esp01没有板载reset电路,因此需要手动GPIO0接地进入可编程模式。
RX → TX VCC → 3.3v
GPIO0 → ground RST → *
GPIO2 → * CH_PD → 3.3v
GND → ground TX → RX
可以跑一下blink示例测试是否正常工作。
ArduinoOTA
和avr芯片arduino不同的是,esp8266原生支持OTA下载,将BasicOTA示例下载到esp01中,可以在同一内网下给esp01远程下载,省去了串口和GPIO0的接线,非常方便。
一旦安装arduino,相关的SDK、下载工具、编译器等等都会一次安装到位,无需另外安装。具体可参考platform.txt
~/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/platform.txt
2. firmware
体验arduino之后,我们想恢复成出厂的AT固件也很方便
1.1 AT firmware
https://github.com/espressif/ESP8266_NONOS_SDK
我这个1MB的esp01只能用老的512+512固件,用arduino带的esptool.py可以烧写,记得GPIO0接地进入flash模式。
cd ~/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/
PYTHONPATH=./esptool:./pyserial ../../../../tools/python3/3.7.2-post1/python3 ./esptool/esptool.py -p /dev/tty.usbserial-1410 --baud 115200 write_flash \
--flash_size=detect \
0xFC000 ~/Downloads/ESP8266_NONOS_SDK-3.0.5/bin/esp_init_data_default_v08.bin \
0x7E000 ~/Downloads/ESP8266_NONOS_SDK-3.0.5/bin/blank.bin \
0xFE000 ~/Downloads/ESP8266_NONOS_SDK-3.0.5/bin/blank.bin \
0x00000 ~/Downloads/ESP8266_NONOS_SDK-3.0.5/bin/boot_v1.2.bin \
0x01000 ~/Downloads/ESP8266_NONOS_SDK-3.0.5/bin/at/512+512/user1.1024.new.2.bin
reset下就恢复到出厂状态了。AT命令的使用和gsm300模块相似,有点类似海斯命令集。
很多人发现esp01/esp8266启动时会在串口打印一堆乱码,我后来找到了答案,硬件波特率取决于晶震,最初的波特率为74880,后来为了方便才改成115200的
Why does ESP8266 show 'Garbage' characters?
可以用AT指令改成74880
AT+UART_DEF=74880,8,1,0,0
然后miniterm也同样改成74880(screen和minicom好像不支持)
PYTHONPATH=./esptool:./pyserial ../../../../tools/python3/3.7.2-post1/python3 -m serial.tools.miniterm /dev/cu.usbserial-1410 74880
乱码即可消失。
我这里做过一个AT指令的warpper,方便python用户使用,https://github.com/996refuse/esp8266.py
1.2 micropython
ESP01 MicroPython install
1.3 NodeMCU
NodeMCU 非常贴心, 可以在线编译firmware
https://nodemcu-build.com/
3. summary
ok,这些只是esp8266的冰山一角,还有更多好玩的方式值得探索。
低成本物联网解决方案esp01模块新手入门教程 | ChangChun Master Li?blog.74ls74.org/2022/06/18/20220618_esp8266_esp01_basic_tutorial/正在上传…重新上传取消
低成本物联网解决方案esp01模块新手入门教程 | ChangChun Master Li http://blog.74ls74.org/2022/06/18/20220618_esp8266_esp01_basic_tutorial/
|