MicroPython简介

MicroPython 是 Python 3 的精简、高效、开源实现,专为微控制器与资源受限嵌入式场景打造。它把 Python 的“优雅语法 + 交互式 REPL”带到裸机(ROM < 300 kB,RAM < 100 kB),让你用 import machine 就能点亮 LED、驱动 I²C 传感器、连上 MQTT,真正实现“Python 从云端到比特级硬件”。


1. 诞生与目标

  • 2013 年,澳大利亚物理学家 Damien George 发起 Kickstarter,首次在 STM32F4 上跑通 Python 3 语法。
  • 目标:“让单片机开发像写脚本一样简单”,同时保持与 CPython 高度兼容(语法、标准库、包管理)。

2. 核心特性

维度 说明
体积 最低 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 无缝互调

3. 与 CPython 的差异

  • 标准库名前加 u:如 utime, uos, ujson,同时提供兼容别名。
  • 整型默认 31 位小整数,大整数自动转堆对象;浮点可选单/双精度。
  • 字符串采用 UTF-8 内部存储,无单独 Unicode 对象。
  • 无 multiprocessing,但可用 _thread 或 uasyncio 协程。
  • 语法支持 90%+ Python 3.4+,包括 f-string、walrus、match-case(实验)。

4. 一分钟闪灯示例(RP2040)

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 大容量存储,重启即自动运行。


5. 典型应用场景

  • 教育:中小学 Python 硬件课、Micro:bit、树莓派 Pico
  • 快速原型:传感器节点、可穿戴、机器人舵机控制
  • IoT 终端:ESP32-C3 + MicroPython 实现 Matter / HomeKit 配件
  • 家居自动化:NodeMCU + WebREPL 远程控灯、采集 DHT22 温湿度
  • 工业:STM32H7 + MicroPython 做协议网关,脚本在线热更新,无需重新烧录固件
  • FPGA 软核:LiteX / Zephyr 上跑 MicroPython,实现 SoC 脚本控制

6. 开发工作流

  1. 刷固件:esptool / rp2-pico.uf2 / ST-Link
  2. 连接 REPL:mpremote connect /dev/ttyACM0
  3. 编辑:main.py, boot.py(启动脚本)
  4. 同步文件:mpremote fs cp :/main.py ./main.py
  5. 调试:内置 uos.dupterm() 日志重定向;micropython.mem_info() 查看堆栈
  6. 打包发布:mpy-cross 把 .py 预编译成 .mpy,尺寸减半,源码闭源

7. 社区与资源

  • 官网:micropython.org(下载、文档、论坛)
  • GitHub:github.com/micropython/micropython

一句话总结:
MicroPython = “把 Python 3 塞进单片机”,让你用串口 REPL 即时交互、一行代码点亮 LED、uasyncio 协程并发传感器,从此嵌入式开发告别繁琐的编译-烧录-重启循环,进入脚本级敏捷时代。