外观
MicroPython
MicroPython 是 Python 3 的精简实现,能直接在 ESP32 上运行,带交互式命令行(REPL)。改一行代码立刻看到结果,很适合教学、原型和脚本化逻辑。
概览
MicroPython 采用 MIT 许可。ESP32 端口以 ESP-IDF 为底层,固件安装后设备上同时有解释器、文件系统和 machine、network、bluetooth 等模块。
从发布页(2026-10-14)可以看到,最新版本是 v1.29.0,ESP32 相关的变化轨迹如下:
| 版本 | ESP32 相关变化 |
|---|---|
| v1.24.0 | 加入 ESP32-C6 支持,基于 IDF v5.2.2 |
| v1.26.0 | 加入 ESP32-C2 支持,基于 IDF v5.4.2 |
| v1.27.0 | 加入 ESP32-C5、ESP32-P4,基于 IDF v5.5.1 |
| v1.29.0 | 基于 IDF v5.5.2,加入 ESP32-H2,ESP-NOW 升级到 v2.0,WLAN 增加 CSI 接口 |
发布页只显示日月,没有年份,年份依据时间顺序推断。要确认某块具体开发板是否有现成固件,请到 micropython.org/download 搜索板型。
关键信息
安装固件
在本地电脑终端执行,以 ESP32-S3 为例,固件先从 micropython.org/download 下载:
bash
pip install esptool
# 擦除并写入(端口、固件文件名按实际修改;S3 偏移是 0,原版 ESP32 是 0x1000)
esptool --chip esp32s3 --port /dev/ttyACM0 erase-flash
esptool --chip esp32s3 --port /dev/ttyACM0 write-flash -z 0x0 ESP32_GENERIC_S3-xxxx.bin不同芯片的写入偏移地址不同,下载页每块板子都有对应说明,请逐字照做。esptool 的 v5 命令写法见 烧录工具。
使用 REPL 与 mpremote
bash
pip install mpremote
mpremote connect /dev/ttyACM0 # 进入 REPL
mpremote cp main.py :main.py # 拷贝文件到设备
mpremote run blink.py # 在设备上运行本地脚本,不保存设备上电后会自动运行 boot.py 与 main.py。
示例:点灯与联网
以下代码在设备的 REPL 或 main.py 中运行:
python
# 运行于 ESP32 上的 MicroPython
from machine import Pin
import time, network
led = Pin(2, Pin.OUT) # 引脚号按开发板修改
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("你的SSID", "你的密码")
while not wlan.isconnected():
time.sleep(0.3)
print(wlan.ifconfig())
while True:
led.value(not led.value())
time.sleep(0.5)能力与局限
- 内置 BLE(
bluetooth模块)、ESP-NOW、I2C / SPI / I2S / PWM、ADC、定时器、深度睡眠等。 - 支持
asyncio,适合同时处理多个 IO 任务。 - 解释执行比 C 慢,GC 暂停也可能造成时序抖动;高速驱动可用
@micropython.native/viper装饰器,或把热点写成 C 模块。 - 固件体积和内存占用比 Arduino 大;没有 PSRAM 的原版 ESP32 做图形或大缓冲会吃紧。
- 并非 ESP-IDF 的每个组件都有 Python 绑定,例如 Matter、Thread 等不要指望直接可用。
与 CircuitPython 的区别
两者同源但走向不同:MicroPython 更偏底层、API 贴近硬件;CircuitPython 由 Adafruit 维护,强调统一 API 和 USB 盘符式易用性。库与教程不能直接通用。
适合谁 / 不适合谁
适合学习硬件、做快速原型、写交互式调试工具的读者。不适合低功耗电池设备的极致优化、硬实时控制,以及需要直接使用 IDF 全部组件的产品,那类场景用 ESP-IDF。
参考资料
- MicroPython 官网下载页:https://micropython.org/download/
- MicroPython ESP32 快速参考:https://docs.micropython.org/en/latest/esp32/quickref.html
- MicroPython 发布页:https://github.com/micropython/micropython/releases
- mpremote 文档:https://docs.micropython.org/en/latest/reference/mpremote.html