保姆级超详细 ESP8266 MicroPython 部署攻略

背景介绍

如果我们想开发硬件设备的时候,非专业硬件工程师的我们往往会使用开发板,而开发板中,比较流行的又不得不提 Arduino,但是比如说我们想做一些 IoT 的原型设备,或者一切其他小项目小玩具,使用带有 Wifi 功能的 esp8266 和带有 Wifi 和 蓝牙的 ESP32 更为合适。尽管这两款开发板都支持 Arduino,并且在 Arduino 这个平台上有很多现成的库可以作为参考。

不过如果想进行快速的开发测试,在这两款开发板上使用 MicroPython 也是一个很好的选择。

踩坑介绍

MicroPython 大致的操作步骤就是先把固件刷到开发板上,然后可以通过串口连接进行交互式编程(REPL)或者通过上传main.py 到开发板上,开发板就会自己运行你写好的代码。

然而事实上,整一个操作体验并不是在官方文档介绍上的代码复制粘贴即可,而是存在各种坑。以下将罗列一下我所遇到的坑,可以帮大家避免,当然,如果你想加深理解,也可以往坑里跳,然后深入研究学习一下。

  • pyboard ,很多教程都介绍使用 pyboard.py 这个库将写好的 main.py 上传到开发板上,但是我在 Window 系统下,尝试了各种配置,包括修改这个 python 脚本,修改系统环境变量,但都无法完全正常使用(可以查看到开发板,但不能上传),我不太清楚是我的系统问题,还是这个库有问题。所以如果你也是按网上教程使用 pyboard.py 库,如果成功,继续用即可,如果不成功,建议像我一样,使用 adafruit-ampy ,能剩下不少折腾的时间。

  • 终端连接的问题。首先,我习惯了 Linux 和 macOS 下使用命令行工具,所以这个 MicroPython 既然有提供 REPL,那么如果有命令行工具在终端下连接然后继续进行命令行交互即可。然而,在 Window 下没有找到简单好用的命令行工具。然后网上有介绍 SecureCRT 的,我在他们的官网上注册,然后等邮件验证再拿到下载地址,下载完才发现并不是免费软件,只可以使用一段时间。然后我又看到介绍一个交 Tera Term 的软件,这个软件虽然免费,但是十分简陋,而且经常会乱码。最后找到一个 PuTTY 的工具,这个工具算是比较正常且免费的,所以这里如果没有习惯串口工具的朋友,不妨就用这个。

  • REPL 与 main.py 冲突,REPL将无法使用。这一点我似乎没有看到网上有说的。这个问题就是我们如果上传了 main.py 到开发板上,我们再用终端工具进行串口连接,我们是不能使用 REPL 的,表现就是终端没有任何反应,就像卡住一样。这时如果像使用 REPL,将开发板上的 main.py 删除或者下载到本地再删除开发板上的 main.py 即可。

  • 自动补全功能。在 Arduino 那个那么简陋的 IDE 都有自动补全功能,在这个 MicroPython 上并没有那么方便。因为我们在本地使用 VSCode 之类的工具写 python ,然后上传到开发板上,但是我们的本地是没有类似 machine 之类的库的。如果需要有代码提示,需要在本地有对应的库。这里可以安装 micropy-cli ,运行这个工具可以为我们完拥有代码提示。这里有一个坑,就是在 micropy init 的时候,需要同时选 VSCode Settings for Autocompletion/IntellisensePylint Micropython Settings ,如果不选后面的那个选项,你会出现 import 错误的提示。

  • 不要尝试 PyMakrMicropython IDE 。Arduino 可以在 VSCode 里面有 PlatfromIO 这样的插件,非常好用。很自然的想法,也想同样的用在 MicroPython 上,然后很多教程会让你使用上面这两个工具,我尝试了,这两个工具 PyMakr 无法连接开发板,无论怎么配置都不行,而那个 IDE,经常卡死和无法连接端口。我们使用 MicroPython无非就像快和简单,所以直接使用 ampy put 上传文件就好了。

MicroPython 固件

在刷固件之前,我们需要先准备好固件,这个固件可以在 MicroPython 网站上找到,这里提供了很多开发板的固件,我们选择我们所使用的 ESP8266 即可。

MicroPython - Python for microcontrollers

这里我们下载 esp8266-20210418-v1.15.bin 这个固件即可,当然也可以根据自己的需要自行选择。

刷固件

我们需要一个交 esptool 的工具来帮助我们刷固件,可以使用 pip 来安装。

pip install esptool

安装完成后,我们把开发板接入电脑,通过 read_mac 命令来获取开发板的信息以及串口的位置。

# 这里如果是 linux 或者 macOS, 使用 esptool.py 
esptool.exe read_mac
> 
esptool.py v3.0
Found 2 serial ports
Serial port COM3
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 40:f5:20:35:**:68
Uploading stub...
Running stub...
Stub running...
MAC: 40:f5:20:35:**:68
Hard resetting via RTS pin...

可以看到已经获取到开发板的信息,这里可以看到开发板的串口在 COM3

接下来就可以开始刷固件了。

# 清除原来的固件
esptool -p COM3 erase_flash
>
esptool.py v3.0
Serial port COM3
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 40:f5:20:35:**:68
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 8.7s
Hard resetting via RTS pin...

# 写入新的固件
esptool --port COM3 --baud 460800 write_flash --flash_size=detect 0 esp8266-20210418-v1.15.bin
>
esptool.py v3.0
Serial port COM3
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 40:f5:20:35:**:68
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0040
Compressed 632632 bytes to 415633...
Wrote 632632 bytes (415633 compressed) at 0x00000000 in 10.1 seconds (effective 502.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

这样,我们的 MicroPython 已经刷好固件了。

PuTTY 终端连接 REPL

保姆级超详细 ESP8266 MicroPython 部署攻略_第1张图片

如上图,打开 PuTTY,新建一个连接,这里我们选择 Serial 串口连接,端口选择 COM3 (具体根据自己的情况设置),然后这里的波特率需要修改为 115200,完成后可以在下面 Saved Sessions 填如一个名字,如 esp8266,然后点击一下 Save ,这样下次就可以直接连接不需要重新输入端口信息了。

然后我们点击 Open,就可以进入 REPL 模式。

MicroPython v1.15 on 2021-04-18; ESP module with ESP8266
Type "help()" for more information.

>>> print('Hello Speculatecat!')
Hello Speculatecat!

我们可以在这里进行交互式编程,类似 ipython 的模式。

VSCode 配置

接下来我们改用 VSCode 来进行后续的编程。首先先来配置自动完成功能,这里需要先安装一个 micropy-cli 的工具:

pip install micropy-cli

接下来打开 VSCode,新建一个项目目录,然后 `Ctrl+`` 打开终端。然后确认当前目录为项目根目录:

# 查找开发板支持
micropy stubs search esp8266
>
MicroPy  Searching Stub Repositories...

MicroPy  Results for esp8266:
MicroPy  esp8266-micropython-1.10.0
MicroPy  esp8266-micropython-1.11.0 (Installed)
MicroPy  esp8266-micropython-1.9.3
MicroPy  esp8266-micropython-1.9.4
MicroPy  esp8266-pycopy-1.11.0
MicroPy  esp8266-pycopy-2.11.0
MicroPy  esp8266-pycopy-2.11.0.1
# 安装开发板支持
micropy stubs add esp8266-micropython-1.11.0
>
MicroPy  Loading Project
MicroPy  esp8266-micropython-1.11.0 is already installed!
MicroPy  ✔ Ready!

MicroPy  Adding esp8266-micropython-1.11.0 to stubs
MicroPy  esp8266-micropython-1.11.0 is already installed!

MicroPy  Adding esp8266-micropython-1.11.0 to esp8266Demo
MicroPy  Loading project...
MicroPy  Updating Project Info...
MicroPy  esp8266-micropython-1.11.0 is already installed!
MicroPy  Project Stubs: esp8266-micropython-1.11.0

MicroPy  ✔ Project Updated!
# 自动初始化项目
micropy.exe init
>
 Project Name esp8266Demo
? Choose any Templates to Generate (Use arrow keys to move, <space> to select, <a> to toggle, <i> to invert)
   ● VSCode Settings for Autocompletion/Intellisense
   ○ Pymakr Configuration       
 » ● Pylint MicroPython Settings
   ○ Git Ignore Template
   ○ main.py & boot.py files
? Which stubs would you like to use? (Use arrow keys to move, <space> to select, <a> to toggle, <i> to invert)
 » ● esp8266-micropython-1.11.0

这里需要注意的是,项目初始化的时候,一定要选择 Pylint MicroPython Settings ,否则将会有 import 错误报出。

接下来就可以在 VSCode 中编写程序了。我们来完成一个最简单的点亮开发板上自带的LED灯闪烁功能。这里注意的是,我的开发板 Pin-2 就是控制那个自带 LED 的,但并不是所有开发板都一样的,在开始前可以先查看一下硬件手册。

import machine
import time

led = machine.Pin(2, machine.Pin.OUT)

while True:
    time.sleep(1)
    led.on()
    time.sleep(3)
    led.off()

代码上传到开发板

我们可以使用 ampy 来上传我们写好的代码。首先来安装:

pip install adafruit-ampy

安装完成后,可以使用 ampy --help 来查看可用命令。下面我们先来查看一下当前开发板上的文件:

ampy.exe -p COM3 ls
>
/boot.py

这里可以看到我们的开发板上只有一个文件。接下来将我们刚刚写好的 main.py 上传到开发板上

ampy.exe -p COM3 put .\main.py
ampy.exe -p COM3 ls
>
/boot.py
/main.py

这样,我们就把代码上传到开发板上了。

接下来我们需要重启一下开发板,按一下开发板上的 RESET 按钮,我们就可以看到开发板上的LED灯出现亮1秒熄3秒的不断循环了。

小结

硬件开发比单纯的代码开发更有难度,有时一样的步骤,却又不能跑通。本文开篇介绍了遇到的一些坑,以及手把手的演示如何给 esp8266 配置 MicroPython 环境、VSCode 自动补全配置以及如何上传代码。希望本文对你有用。如果你觉得文章对你用,记得关注收藏。你的关注和收藏是继续更新的动力哦。

你可能感兴趣的:(Arduino,/,IoT,esp8266,开发板,MicroPython)