MicroPython基础
MicroPython 是一种专为微控制器和受限系统设计的精简版Python3解释器。它允许开发者使用Python语言直接编写代码,运行在资源有限的硬件平台上。
官方网址: https://micropython.org/
Github: https://github.com/micropython/micropython
支持以下MCU:
- cc3200
- esp32
- esp8266
- mimxrt
- nrf
- renesas-ra
- rp2
- samd
- stm32
下面主要介绍esp32、rpi pico2-w。
1. ESP32
1.1 MicroPython固件
固件地址: https://micropython.org/download/?port=esp32
1.2 烧录固件
方式1: esp flash download tool
以ESP32-C6为例,下载的固件是:'ESP32_GENERIC_C6-20250415-v1.25.0.bin'。
由espressif官方提供的Windows UI刷机工具,免安装,下载完成后,双击打开依次执行:
打开flash download tool --> ChipType: ESP32-C6 --> WorkMode: Develop --> LoadMode: UART --> OK --> 进入下载页面,选择SPI Download一栏 --> 勾选第一个输入框最左边的复选框 --> 选择固件'ESP32_GENERIC_C6-20250415-v1.25.0.bin' --> 刷机地址:0x0 --> SPI SPEED: 40MHz --> SPI Mode: DIO --> 选择合适的COM口和波特率 --> 执行STOP按钮,停止ESP32当前执行的程序 --> 执行ERASE按钮,清空ESP32 ROM --> 执行Start按钮,开始刷机
方式2: esptool
适合Windows/Linux/MacOS:
$ pip install esptool
$ esptool.py --port <PORTNAME> erase_flash $ esptool.py --port <PORTNAME> --baud 460800 write_flash 0 ESP32_GENERIC_C6-20250415-v1.25.0.bin
Note: <PORTNAME> 填写实际串口节点, Windows一般是COMx,Linux一般是/dev/ttyUSBx或/dev/ttyACMx,MacOS一般是/dev/cu.*usb*, /dev/tty.*usb*。
1.3 测试程序
import time from machine import Pin # ESP32-C6板载LED连接GPIO8. led = Pin(8, Pin.OUT) print('led blink.') while True: led.value(1) time.sleep(0.5) led.value(0) time.sleep(0.5)
2. Raspberry Pi Pico2-W
RPI Pico/Pico-W/Pico2/Pico2-W等接口兼容,MicroPython开发流程类似。
2.1 下载MicroPython固件
固件地址: https://micropython.org/download/?port=rp2
2.2 刷机
树莓派Pico的ROM是16KB,Pico2是32KB,非常小,所以刷固件就是刷到Flash中,树莓派采用USB UF2 bootloader,模拟成U盘,直接拖放'.uf2'的程序到U盘中,就会自动识别和运行。
方法: 按住Pico的boot select键,同时插入计算机,就会自动识别为usb存储设备,把uf2的文件复制进去即可。
2.3 测试程序
import time from machine import Pin # Pico的板载LED连接GPIO25. led = Pin(25, Pin.OUT) print('led blink.') while True: led.value(1) time.sleep(0.5) led.value(0) time.sleep(0.5)
3. IDE
- Thonny
- VS Code
- PyCharm
我们一般使用Thonny(支持Windows/Linux)进行刷机、调试、下载代码,编写代码可以使用VS Code或者PyCharm.
Thonny 官网: https://thonny.org/
Thonny Github: https://github.com/thonny/thonny/
打开Thonny,把ESP32或者Pico插入计算机,右下角点击串口节点进行连接,之后,新建或加载已编写的python文件,以Pico为例:
新建一个main.py, 填入Pico LED代码,保存到设备根目录,这样设备就会自动运行LED blink的效果,下次上电自动运行。
可以使用Thonny的Stop按钮停止原来的程序,或者重新编写一个main.py覆盖原来的程序。
Note: 如果一些程序使得Thonny在Windows下无法停止,可以尝试在Linux下操作,如果也不行,就重新刷机。
4. API
具体请看: https://docs.micropython.org/en/latest/library/index.html
4.1 标准库
- array – 数值数据数组
- asyncio — 异步I/O调度程序
- binascii – 二进制和ASCII的转换
- builtins – 内置函数和异常
- cmath – 复数的数学函数
- collections – 集合和容器类型
- errno – 系统错误码
- gc – 控制垃圾收集器
- gzip – Gzip压缩和解压缩
- hashlib – 哈希算法
- heapq – 堆队列算法
- io – 输入/输出流
- json – json编码和解码
- marshal – Python对象序列化
- math – 数学函数
- os – 基本的“操作系统”服务
- platform – 访问底层平台的识别数据
- random – 生成随机数
- re – 简单的正则表达式
- select – 在一组流上等待事件
- socket – Socket模块
- ssl – SSL/TLS模块
- struct – 打包和解包原始数据类型
- sys – 系统特定功能
- time – 时间相关的函数
- zlib – Zlib压缩和解压缩
- _thread – 支持多线程
4.2 MicroPython专有库
- bluetooth — 底层蓝牙
- btree – 简单的BTree数据库
- cryptolib – 加密密码
- deflate – deflate 压缩和解压
- framebuf — 帧缓冲区操作
- machine — 与硬件相关的功能
- micropython – 访问和控制micropython内部
- neopixel — 控制 WS2812 / NeoPixel LEDs
- network — 网络配置
- openamp – 提供标准的非对称多处理(AMP)支持
- uctypes – 以结构化的方式访问二进制数据
- vfs – 虚拟文件系统控制
4.3 ESP32专有库
- esp32 — ESP32特有的功能
4.4 Raspberry Pi Pico专有库
- rp2 — RP2040特有的功能
4.5 Zephyr专有库
- zephyr — 特定于Zephyr端口的功能
5. 类似框架
- CircuitePython: MicroPython的分支,支持很丰富。
- PyMite:专为资源受限的微控制器设计的精简 Python 解释器。
- Zerynth:支持多种硬件平台的物联网开发框架,集成 Python 3 解释器。
- Riot-OS Python Bindings: Riot-OS 是一个实时操作系统,支持通过 Python 绑定进行脚本编程。
- emPython:基于嵌入式系统的 Python 解释器,专为微控制器设计。
- Ripple:一个轻量级的 Python 解释器,专为嵌入式系统设计。
- Transcrypt: 将 Python 代码编译为 JavaScript,可在微控制器上运行(通过 WebAssembly 或直接在支持 JavaScript 的环境中)。
- XMOS Python: XMOS 提供的 Python 解释器,专为其多核微控制器设计。
- QuecPython: 由移远通信开发的物联网嵌入式框架,支持Python脚本快速控制无线通信模块,实现数据采集与传输。特点是无需编译和烧录,适合物联网应用开发。
- Pycopy: MicroPython的重要分支,专注于优化内存管理和异步支持,兼容MicroPython但更注重性能和功能扩展,如流式I/O接口和异步操作。
- OpenMV: 专为机器视觉设计的MicroPython分支,内置摄像头驱动和图像处理算法,支持实时图像识别与处理。
6. 模拟平台
MicroPython比较适合做快速技术验证。

浙公网安备 33010602011771号