仅作为本人学习《物联网开发实战》的学习笔记


文章目录

  • 搭建 MicroPython 开发环境
  • 第一步:准备固件文件
  • 第二步:安装烧录工具
  • 第三步:烧录固件
  • 第四步:确认运行状态
  • 体验交互
  • 部署代码到开发板


原课程选择使用 Python 作为开发语言,硬件平台为 NodeMCU(ESP8266),开发板上不能直接运行 Python,但可以运行 MicroPython 。

MicroPython ,是Python3编程语言的一个完整软件实现,用C语言编写,被优化于运行在微控制器之上。MicroPython是运行在微控制器硬件之上的完全的Python编译器和运行时系统。提供给用户一个交互式提示符(REPL)来立即执行所支持的命令。除了包括选定的核心Python库,MicroPython还包括了给予编程者访问低层硬件的模块。

——百度百科

搭建 MicroPython 开发环境

第一步:准备固件文件

我们需要 NodeMCU 准备好的 MicroPython 固件,我们可以直接去官方下载现成的,否则就需要自己用专门的软件进行交叉编译。
固件下载地址:(原课程使用的是 ESP8266,而我的芯片型号是 ESP32)
ESP8266: https://micropython.org/download/esp8266/ ESP32: https://micropython.org/download/esp32/

django python 物联网 python物联网开发教程_django python 物联网

第二步:安装烧录工具

烧录工具需要在 Python 终端上进行安装,所以我们需要先安装 Python,版本这里选择 Python3.8(听说需要安装3.6以上的版本才行),下载地址:https://www.python.org/downloads/release/python-385/

下载对应版本,我选择的是 Windows 64位,下载安装程序,

django python 物联网 python物联网开发教程_开发板_02


运行安装程序,pip 是用来下载和安装 Python 软件包的工具,安装烧录工具就需要用到 pip 命令,可以勾选 “Add Python 3.8 to PATH”,这样就可以直接在控制台运行 Python 了。

django python 物联网 python物联网开发教程_开发板_03


在控制台输入 python -V 查看 Python 版本,

django python 物联网 python物联网开发教程_Python_04

Python 环境安装好后,就可以开始安装烧录工具了,在控制台输入以下命令,

pip install esptool

django python 物联网 python物联网开发教程_固件_05

将 NodeMCU 连接电脑(前提是已经安装 USB-TTL 驱动),可以通过 esptool.py read_mac 命令,确认 NodeMCU 是否连接成功,如下图:

django python 物联网 python物联网开发教程_固件_06

第三步:烧录固件

烧录固件前,需要先将 Flash 里的数据擦除,使用 esptool.py --chip esp32 --port COM5 erase_flash (COM5 是我电脑里与 NodeMCU 连接的端口,具体根据实际情况而定,chip 选项可需要注意)

我在擦除时,遇到了无法访问串口的问题,

could not open port 'COM5': PermissionError(13, '拒绝访问。', None, 5)

开始以为是 Python 权限的问题,后来发现就连串口调试助手也不能访问该串口,最后通过拔插 USB 数据线(同时用串口调试助手测试能否正常打开)解决了这个问题。

擦除成功:

django python 物联网 python物联网开发教程_django python 物联网_07

擦除成功后,进入固件所在目录,运行如下命令,即可将固件烧录到开发板中:

# 芯片信号,端口号和固件名称需要根据具体情况修改
esptool.py --chip esp32 --port COM5 --baud 460800 write_flash -z 0x1000 esp32-20220117-v1.18.bin

django python 物联网 python物联网开发教程_固件_08

第四步:确认运行状态

怎么知道开发板是否在运行呢?
这里介绍两种方法:

  1. 用手机或电脑搜索周围的 Wi-Fi 热点,如果看到类似 “MicroPython-xxxxxx” 名称的热点,说明 NodeMCU 工作正常。(但是我实测是没有热点的,可能默认没打开吧)
  2. 使用串口终端软件连接开发板,这类软件很多,比如 Putty,XShell 等,我这里使用的是 MobaXterm。

django python 物联网 python物联网开发教程_物联网_09

体验交互

先用 “hello world” 来检测测试一下,然后再体验一下 MicroPython 控制 LED 灯。

django python 物联网 python物联网开发教程_固件_10


可以看到蓝色的 LED 被点亮:

django python 物联网 python物联网开发教程_物联网_11

部署代码到开发板

MicroPython 的官方提供了一个工具,名为pyboard.py,可以使用它来操作开发板上的文件系统,如文件拷贝、创建文件夹、文件删除等功能。

将 pyboard.py 下载到电脑,就可以使用这个工具了。

下面是原文的一个代码段,功能是让 LED 灯以 1 秒间隔闪烁。

import machine
import time

# 指明 GPIO2 管脚
pin = machine.Pin(2, machine.Pin.OUT)

# 循环执行
while True:
	time.sleep(1)    
	pin.on()
	time.sleep(1)
	pin.off()

要在开发板上运行这个 Python 代码,我们需要做两件事:

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

开发板启动时,就会自动执行 main.py 文件中的代码。如何把 main.py 复制到开发板上呢,这就要用到前面提到的 pyboard.py 了。

具体操作如下:
将 main.py 复制到开发板,重启开发板后,main.py 自动运行

pyboard.py --device COM5 -f cp main.py :main.py

运行效果:

django python 物联网 python物联网开发教程_Python_12

我们也可以不复制 main.py ,直接让它在开发板上运行:

pyboard.py --device COM5 main.py