ESP8266是带有wifi模组的芯片
NodeMCU是开发板,ESP8266芯片是焊接在NodeMCU上的
烧录 MicroPython 固件
使用数据线连接设备
- 前提是电脑安装 Python 环境,安装烧录工具 esptool:
pip install esptool
- 运行
esptool.py read_mac
命令,确认板子是否连接成功,如不成功请尝试更换USB数据连接线(数据线需集成两根数据信号线)。
- MacOS 可使用
ls /dev/cu*
查看设备名.
为设备(板子)烧录固件
先下载ESP8266板子的MicroPython固件
- 擦除设备flash芯片
# 注意将设备名称 /dev/cu.usbserial-1410 替换为你的设备名称
esptool.py --port /dev/cu.usbserial-1410 erase_flash
- 擦除成功后,进入存储前面下载固件的目录中,运行下面的命令,将下载的固件烧录到板子上开发板的 Flash 中:
# 注意设备名称替换为你设备的名称,固件文件名称做类似修改
esptool.py --port /dev/cu.usbserial-1410 --baud 460800 write_flash --flash_size=detect 0 esp8266-20200911-v1.13.bin
确认运行状态
可以用电脑或者手机搜索一下周围的 Wi-Fi 热点,如果看到类似 “MicroPython-xxxxxx” 名称的热点(xxxxxx 是开发板 MAC 地址后半部分),说明你的 NodeMCU 工作正常.比如我的开发板 MAC 地址是“40:f5:20:07:3b:52”,如果看到了“MicroPython-073b52”这个热点,就说明开发板在正常运行.
连接开发板
USB 线连接开发板和电脑,使用 SecureCRT (Windows可使用PuTTY),通过串口协议(Serial)连接上开发板,进行连接交互.
需要注意的是,波特率(Baud rate)需设置为 115200 .
体验交互
体验一下 MicroPython 控制 LED 灯。因为开发板 NodeMCU 12F 的 GPIO2 管脚接有一个 LED 灯,你可以输入下面的代码,控制它的点亮和熄灭。
>>> import machine
>>> pin = machine.Pin(2, machine.Pin.OUT)
>>> pin.off()
>>> pin.on()
需要注意的是,不同的板子上,这个管脚的高低电平的设计可能不同,所以 pin.on() 可能是熄灭 LED 灯;pin.off() 反而是点亮 LED 灯。
部署代码到开发板
REPL:Read-Eval-Print Loop
如果想在电路板上运行 Python 代码,必须要满足两个条件:
- 将代码段保存到一个文件中,这个文件的名字必须是 main.py
- 将代码文件 main.py 放到开发板的文件系统中,而且是根目录
这样,当开发板启动或者重启的时候,就会自动执行 main.py 文件中的代码。
这里面又涉及到一个问题,如何才能将代码文件上传到开发板上呢?
可以使用 pyboard.py 或者 AdaFruit MicroPython tool —— ampy 工具
pyboard.py
MicroPython 的官方提供了一个工具 pyboard.py,它也是基于串口连接与开发板通信的
# 设置环境变量,指明串口设备,注意替换自己的设备名
export PYBOARD_DEVICE=/dev/cu.usbserial-1410
#拷贝当前目录下的 main.py 到开发板
./pyboard.py cp main.py :
ampy
安装ampy工具
pip install adafruit-ampy
# ---或者---
pip3 install adafruit-ampy
设置延迟时间环境变量
export AMPY_DELAY=0.5
设置端口和波特率环境变量
#设备名称请根据你的情况修改
export AMPY_PORT=/dev/cu.usbserial-1410
#串口通信的波特率
export AMPY_BAUD=115200
可以将环境变量配置加入到 .bashrc 或 .zshrc 等配置文件中,避免每次都要重复输入
上传代码文件
ampy put main.py