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 IDEuPyCraft 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
  1. 将 ESP32 开发板连接到电脑
  2. 进入烧录模式
  • 按住 ESP32 上的 BOOT 按钮,然后插入 USB 电缆,或按住 BOOT 按钮再按 EN 按钮(具体操作取决于开发板型号)。
  1. 擦除现有的固件(可选,但推荐):
    查找你的 ESP32 连接的串口号(Windows 下为 COM 端口,Linux/Mac 下为 /dev/ttyUSB0/dev/ttyS0),然后运行以下命令:
esptool.py --port /dev/ttyUSB0 erase_flash
  1. 烧录 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 是你下载的固件文件。

  1. 烧录完成后,ESP32 应该已经成功运行 MicroPython。

3. 配置开发环境

3.1 使用 Thonny IDE
  1. 下载并安装 Thonny IDE
  1. 配置 Thonny
  • 打开 Thonny,点击 Tools > Options > Interpreter
  • 在解释器类型中选择 MicroPython (ESP32),并选择对应的串口(如 /dev/ttyUSB0COM3)。
  1. 测试连接
    在 Thonny 中点击 Stop/Restart Backend 按钮,看看是否能进入 MicroPython REPL。如果成功,你应该可以在终端中看到类似 >>> 的提示符。
3.2 使用 uPyCraft IDE
  1. 下载并安装 uPyCraft IDEuPyCraft 下载链接
  2. 配置 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),可以用以下代码读取数据:

  1. 安装传感器驱动
    在 Thonny 的终端中,安装 DHT 传感器驱动:
import upip
upip.install('micropython-dht')
  1. 读取 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 进行开发,可以快速实现物联网应用的原型设计,代码简洁且易于调试,非常适合开发者进行物联网项目的开发和测试。