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比较适合做快速技术验证。

posted @ 2025-04-22 00:00  this毛豆  阅读(267)  评论(0)    收藏  举报