MicroPython 是 Python 3 的精简、高效、开源实现,专为微控制器与资源受限嵌入式场景打造。它把 Python 的“优雅语法 + 交互式 REPL”带到裸机(ROM < 300 kB,RAM < 100 kB),让你用 import machine 就能点亮 LED、驱动 I²C 传感器、连上 MQTT,真正实现“Python 从云端到比特级硬件”。
| 维度 | 说明 |
|---|---|
| 体积 | 最低 55 kB ROM / 8 kB RAM(Thumb2 汇编级裁剪) |
| 启动 | 上电 < 200 ms 进 REPL,无需仿真器 |
| 实时 | 支持 IRQ、硬件定时器、PWM、DMA;在 Pico 上可产生 60 MHz PIO 状态机信号 |
| 跨平台 | 官方移植 30+ 板型:RP2040、ESP32/ESP8266、STM32F4/F7/H7、nRF52、SAMD21/51、ESP32-C3、K210、TI CC3200、NXP i.MX RT、Unix/Windows 仿真 |
| 交互开发 | USB-CDC 免驱串口 REPL;WebREPL(ESP8266/32 浏览器无线调试);mpremote 一键文件同步、串口监控、固件升级 |
| 模块 | machine(GPIO/UART/SPI/I²C/ADC/PWM/RTC/低功耗)、network(Wi-Fi、BLE、LTE)、uasyncio(协程并发)、bluetooth、文件系统(FAT/LittleFS)、原生 SSL/TLS、MIDI、CAN、DHT、OneWire、NeoPixel、LCD1602、OV2640、urequests、MQTT、OTA |
| 性能 | 解释器 + 增量垃圾回收;支持 Viper / Native 装饰器,将热点函数 JIT 成机器码,速度提升 3–20× |
| 扩展 | 可用 C 写一个 *.c 模块,编译进固件或动态 *.mpy 文件,与 Python 无缝互调 |
u:如 utime, uos, ujson,同时提供兼容别名。 multiprocessing,但可用 _thread 或 uasyncio 协程。 from machine import Pin, Timer
led = Pin(25, Pin.OUT)
tim = Timer()
def tick(t):
led.toggle()
tim.init(freq=500, mode=Timer.PERIODIC, callback=tick)
# 在 REPL 里 Ctrl-C 停止
把文件保存为 main.py 拖到 Pico 的 USB 大容量存储,重启即自动运行。
esptool / rp2-pico.uf2 / ST-Link mpremote connect /dev/ttyACM0 main.py, boot.py(启动脚本) mpremote fs cp :/main.py ./main.py uos.dupterm() 日志重定向;micropython.mem_info() 查看堆栈 mpy-cross 把 .py 预编译成 .mpy,尺寸减半,源码闭源 一句话总结:
MicroPython = “把 Python 3 塞进单片机”,让你用串口 REPL 即时交互、一行代码点亮 LED、uasyncio 协程并发传感器,从此嵌入式开发告别繁琐的编译-烧录-重启循环,进入脚本级敏捷时代。