Changchun Master Li

低成本物联网解决方案esp01模块新手入门教程

2022-06-18

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

arduinoIDE配置

esp01模块有一些变种,基本可以按照图中进行配置,默认板载蓝色的led是GPIO1,但和串口复用同一个引脚。只有 8Mbits (1MB) flash,但实际上只有1004KB可以给arduino程序使用,OTA需要双倍的空间,所以如果fs为0,OTA最多可用502KB。

esp01没有板载reset电路,因此需要手动GPIO0接地进入可编程模式。

1
2
3
4
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、下载工具、编译器等等都会一次安装到位,无需另外安装。可参考~/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模式。

1
2
3
4
5
6
7
8
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

1
AT+UART_DEF=74880,8,1,0,0

然后miniterm也同样改成74880(screen和minicom好像不支持)

1
PYTHONPATH=./esptool:./pyserial ../../../../tools/python3/3.7.2-post1/python3 -m serial.tools.miniterm /dev/cu.usbserial-1410 74880

乱码即可消失。

我这里做过一个AT指令的warpper,方便python用户使用,esp8266.py

1.2 micropython

ESP01 MicroPython install

1.3 NodeMCU

NodeMCU 非常贴心, 可以在线编译firmware

https://nodemcu-build.com/

3. summary

ok,简单记录一下使用esp01的过程,这些只是esp8266的冰山一角,还有更多好玩的方式值得探索。

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章