MicroPython 是一种针对微控制器的轻量级 Python 版本,非常适合 ESP32 等物联网设备的开发。以下是一个详细的 MicroPython 开发教程,将指导你如何从零开始在 ESP32 上使用 MicroPython 进行开发。
1. 准备工作
必备工具和材料:
- ESP32 开发板(例如 ESP32-WROOM)
- Micro-USB 数据线(用于连接 ESP32 和电脑)
- 电脑(Windows、Mac 或 Linux)
软件:
- Python 3.x:用于安装相关工具
- esptool.py:烧录 MicroPython 固件
- MicroPython 固件:适用于 ESP32 的 MicroPython 固件
- 开发环境:可以使用 Thonny IDE 或 uPyCraft IDE,它们都支持直接与 ESP32 进行通信和编程。
2. 安装 MicroPython 到 ESP32
2.1 安装 Python 和 esptool
确保你已经在电脑上安装了 Python 3.x。如果还没有安装,可以从 Python 官方网站 下载并安装。
接着,使用 pip
安装 esptool:
pip install esptool
2.2 下载 MicroPython 固件
从 MicroPython 下载页面 获取最新的 ESP32 固件。选择带有 .bin
扩展名的固件文件。
2.3 烧录 MicroPython 到 ESP32
- 将 ESP32 开发板连接到电脑。
- 进入烧录模式:
- 按住 ESP32 上的 BOOT 按钮,然后插入 USB 电缆,或按住 BOOT 按钮再按 EN 按钮(具体操作取决于开发板型号)。
- 擦除现有的固件(可选,但推荐):
查找你的 ESP32 连接的串口号(Windows 下为 COM 端口,Linux/Mac 下为/dev/ttyUSB0
或/dev/ttyS0
),然后运行以下命令:
esptool.py --port /dev/ttyUSB0 erase_flash
- 烧录 MicroPython 固件:
使用以下命令将 MicroPython 固件烧录到 ESP32:
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20220117-v1.18.bin
其中,/dev/ttyUSB0
是串口号,esp32-20220117-v1.18.bin
是你下载的固件文件。
- 烧录完成后,ESP32 应该已经成功运行 MicroPython。
3. 配置开发环境
3.1 使用 Thonny IDE
- 下载并安装 Thonny IDE:
- 配置 Thonny:
- 打开 Thonny,点击 Tools > Options > Interpreter。
- 在解释器类型中选择 MicroPython (ESP32),并选择对应的串口(如
/dev/ttyUSB0
或COM3
)。
- 测试连接:
在 Thonny 中点击 Stop/Restart Backend 按钮,看看是否能进入 MicroPython REPL。如果成功,你应该可以在终端中看到类似>>>
的提示符。
3.2 使用 uPyCraft IDE
- 下载并安装 uPyCraft IDE:uPyCraft 下载链接
- 配置 uPyCraft:
- 打开 uPyCraft,点击 Tools > Serial,选择正确的串口号,并将波特率设置为
115200
。 - 然后点击 Tools > Board,选择 ESP32。
- 点击左侧的连接按钮,确保与 ESP32 成功连接。
4. 编写 MicroPython 代码
4.1 基本代码示例:点亮 LED
ESP32 开发板通常带有一个内置 LED,连接在 GPIO2 引脚上。你可以通过以下代码点亮这个 LED。
from machine import Pin
import time
# 定义 GPIO2 作为输出引脚
led = Pin(2, Pin.OUT)
# 无限循环:每隔一秒点亮/熄灭 LED
while True:
led.on() # 打开LED
time.sleep(1) # 延迟1秒
led.off() # 关闭LED
time.sleep(1) # 延迟1秒
将这段代码复制到 Thonny 或 uPyCraft 中并运行,你会看到 ESP32 板上的 LED 以 1 秒的间隔闪烁。
4.2 读取传感器数据
假设你有一个简单的温湿度传感器(如 DHT11),可以用以下代码读取数据:
- 安装传感器驱动:
在 Thonny 的终端中,安装 DHT 传感器驱动:
import upip
upip.install('micropython-dht')
- 读取 DHT11 传感器:
import dht
from machine import Pin
import time
sensor = dht.DHT11(Pin(4)) # 假设 DHT11 连接在 GPIO4
while True:
sensor.measure()
temp = sensor.temperature() # 摄氏温度
hum = sensor.humidity() # 湿度
print('Temperature: %3.1f C' % temp)
print('Humidity: %3.1f %%' % hum)
time.sleep(2)
4.3 使用 WiFi 进行联网通信
ESP32 的 WiFi 模块可以让你与网络交互,以下是如何连接 WiFi 的示例代码:
import network
import time
# 设置 WiFi 连接
ssid = 'your-ssid'
password = 'your-password'
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(ssid, password)
# 等待连接成功
while not sta_if.isconnected():
print('Connecting to network...')
time.sleep(1)
print('Network connected:', sta_if.ifconfig())
运行此代码,ESP32 将尝试连接到指定的 WiFi 网络,并在连接成功后打印设备的 IP 地址。
5. 文件上传和管理
你可以通过 Thonny 或 uPyCraft 将文件上传到 ESP32 开发板。通常,MicroPython 文件以 .py
结尾,你可以将你的主文件命名为 main.py
,让 ESP32 在启动时自动运行它。
6. 常见问题及解决方法
无法连接串口:
- 确保 USB 数据线是数据线而不是仅充电线。
- 尝试重新插入 ESP32 并重启 IDE。
- 检查是否有其他程序占用了串口。
烧录失败:
- 尝试降低波特率,如
115200
,或者重新插拔设备。 - 检查串口号是否正确。
7. 后续开发建议
- 了解如何使用 MQTT 进行物联网设备的数据传输。
- 学习如何使用 ESP32 的 蓝牙功能,实现更多功能。
- 尝试集成其他传感器和设备,如 OLED 显示屏、摄像头等。
通过 MicroPython 进行开发,可以快速实现物联网应用的原型设计,代码简洁且易于调试,非常适合开发者进行物联网项目的开发和测试。