image.png
ESP8266是带有wifi模组的芯片
NodeMCU是开发板,ESP8266芯片是焊接在NodeMCU上的

烧录 MicroPython 固件

使用数据线连接设备

  1. 前提是电脑安装 Python 环境,安装烧录工具 esptool:
  1. pip install esptool
  1. 运行 esptool.py read_mac 命令,确认板子是否连接成功,如不成功请尝试更换USB数据连接线(数据线需集成两根数据信号线)。

image.png

  1. MacOS 可使用 ls /dev/cu* 查看设备名.

image.png

为设备(板子)烧录固件

先下载ESP8266板子的MicroPython固件

  1. 擦除设备flash芯片
  1. # 注意将设备名称 /dev/cu.usbserial-1410 替换为你的设备名称
  2. esptool.py --port /dev/cu.usbserial-1410 erase_flash
  1. 擦除成功后,进入存储前面下载固件的目录中,运行下面的命令,将下载的固件烧录到板子上开发板的 Flash 中:
  1. # 注意设备名称替换为你设备的名称,固件文件名称做类似修改
  2. 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 .
image.png

体验交互

体验一下 MicroPython 控制 LED 灯。因为开发板 NodeMCU 12F 的 GPIO2 管脚接有一个 LED 灯,你可以输入下面的代码,控制它的点亮和熄灭。

  1. >>> import machine
  2. >>> pin = machine.Pin(2, machine.Pin.OUT)
  3. >>> pin.off()
  4. >>> pin.on()

需要注意的是,不同的板子上,这个管脚的高低电平的设计可能不同,所以 pin.on() 可能是熄灭 LED 灯;pin.off() 反而是点亮 LED 灯。

部署代码到开发板

REPL:Read-Eval-Print Loop

如果想在电路板上运行 Python 代码,必须要满足两个条件:

  1. 将代码段保存到一个文件中,这个文件的名字必须是 main.py
  2. 将代码文件 main.py 放到开发板的文件系统中,而且是根目录

这样,当开发板启动或者重启的时候,就会自动执行 main.py 文件中的代码。

这里面又涉及到一个问题,如何才能将代码文件上传到开发板上呢?

可以使用 pyboard.py 或者 AdaFruit MicroPython tool —— ampy 工具

pyboard.py

MicroPython 的官方提供了一个工具 pyboard.py,它也是基于串口连接与开发板通信的

  1. # 设置环境变量,指明串口设备,注意替换自己的设备名
  2. export PYBOARD_DEVICE=/dev/cu.usbserial-1410
  3. #拷贝当前目录下的 main.py 到开发板
  4. ./pyboard.py cp main.py :

ampy

安装ampy工具

  1. pip install adafruit-ampy
  2. # ---或者---
  3. pip3 install adafruit-ampy

设置延迟时间环境变量

  1. export AMPY_DELAY=0.5

设置端口和波特率环境变量

  1. #设备名称请根据你的情况修改
  2. export AMPY_PORT=/dev/cu.usbserial-1410
  3. #串口通信的波特率
  4. export AMPY_BAUD=115200

可以将环境变量配置加入到 .bashrc 或 .zshrc 等配置文件中,避免每次都要重复输入

上传代码文件

  1. ampy put main.py

参考

实战准备:如何搭建硬件开发环境?