MicroPython / CircuitPython 如何“接管”IoT 与机器人(Python's Quiet Takeover of IoT and Robotics)

Posted by David's mock life on August 14, 2026

本文翻译整理自 arXiv:2608.18160(2026-08-14)”MicroPython and CircuitPython: Python’s Quiet Takeover of IoT and Robotics”。 篇幅:27 页,4 张表 | 分类:cs.PL / cs.CL / cs.SE 获取方式:2026-09-21 由 docling 解析 arXiv PDF 全文(原文表格在转换中存在列错位,下表已按正文数值重建)

一句话结论

Python 没有取代 C/C++,而是成了嵌入式系统的默认原型语言和教学语言——它”接管”的是探索期、教学期和概念验证期,不是产线固件。

摘要

  • 背景:Python 已是软件和数据科学的主导语言,但嵌入式系统因性能与内存约束长期绑定 C/C++。
  • 目的:检验 MicroPython 与 CircuitPython 是否正在”静悄悄地接管”嵌入式,考察生态增长、实际应用、性能取舍、教育采用和前景。
  • 方法:混合方法——GitHub / Stack Overflow / Google Trends 量化分析;从 Hackster.io、Hackaday.io、Adafruit Learning System 整理案例;在 ESP32 与 Raspberry Pi Pico 上做原创基准测试,对比 MicroPython、CircuitPython 与 Arduino C++ 的 GPIO、I2C、SPI、Wi-Fi 和内存占用。
  • 结果:MicroPython 支持 200+ 款板子,CircuitPython 400+ 款;基准显示 I/O 比 C 慢 10–20 倍、内存占用高 4–6 倍,但对常见传感与联网任务足够。案例覆盖家居自动化、机器人、可穿戴、农业和专业原型开发。教育是主要采用驱动力
  • 结论:Python 不是取代 C/C++,而是成为嵌入式系统的默认原型与教学语言;硬件进步、工具改善和标准化会加深这一趋势。

1. 两个平台是什么

MicroPython(Damien George,2013)是 Python 3 的精简裸机实现:解析器 + 编译器 + 虚拟机 + 运行时,无需操作系统,可在几十 KB RAM 内跑起来。首个官方板 pyboard 为 168 MHz STM32F405,192 KB RAM / 1 MB Flash(2013 年众筹发布)。它保留了类、函数、异常、生成器、列表推导,以及可通过串口访问的 REPL(板上交互式开发)。machine 模块提供 GPIO、I2C、SPI、UART、PWM、ADC、DAC、定时器和中断;并发上提供 asyncio 风格协程,部分端口有 _thread(最多两个原生线程)。

CircuitPython(Adafruit,2017)是 MicroPython 的分支,重心是降低门槛跨板一致性:板子插上电脑就是一个名为 CIRCUITPY 的 USB 盘,编辑 code.py 保存即自动重启运行,不需要编译器或烧录工具。配套 Library Bundle(450+ 个库)统一 API,同一份读 BME280 的代码在 Feather、Pico、ESP32-S2 上都能跑。代价是刻意简化:通常不暴露硬件中断和直接内存映射寄存器,改用 countio(计脉冲)、rotaryio(读旋转编码器)等高层 API。

表 1 两平台对比

维度 MicroPython CircuitPython
首要目标 面向微控制器的高效 Python 面向硬件的初学者友好 Python
首发 2013(Damien George) 2017(Adafruit Industries)
目标用户 工程师、进阶爱好者 教育者、学生、创客、艺术家
工作流 串口 REPL、自行烧录固件 USB 大容量存储、拖拽 code.py
板卡支持 广泛,社区/厂商驱动,数百款 Adafruit 及伙伴策展,数百款
库模型 社区库,一致性参差 策展 Library Bundle,API 一致
并发 asyncio,部分端口有 _thread asyncio,部分协作式任务
硬件 API machine 模块、直接中断、自定义端口 简化 API、countio/rotaryio、无直接中断
调试 REPL、串口 traceback REPL、错误写在 CIRCUITPY 盘上、串口
文档 官方文档 + 社区教程 Adafruit Learning System 大量统一教程

同时要理解它们”不是”什么:不是 CPython 或 C 的替代品;只是标准库的子集,NumPy、pandas、requests 都不能直接用(替代品:ulab 提供部分 NumPy 功能,urequests 提供基础 HTTP)。内存比桌面紧张得多,需要主动预分配缓冲、减少对象创建、定期触发 GC。因此二者适合不需要硬实时保证、也不需要极低功耗的任务。

2. 生态增长数据

硬件支持从 2013 年的 1 块板子涨到 2026 年的数百款,覆盖 ESP32、ESP8266、RP2040、nRF52、SAMD21/51、STM32、i.MX RT 等架构。

厂商层面有三个标志性背书:Raspberry Pi RP2040(2021)发布时就把 MicroPython 与 C/C++ SDK 并列为官方语言;Espressif 自维护 ESP32 系列的官方 MicroPython 端口;Arduino 在 2023 年为 Arduino Lab 加入 MicroPython 支持。

表 2 增长指标(截至 2026-08)

指标 MicroPython CircuitPython
官方支持板卡数 200+ 400+
GitHub Star(主仓库) 23,412 4,108
GitHub 贡献者 700+ 300+
库 / 包 1,000+ 社区包 450+ 策展 bundle
Stack Overflow 提问(2025) 800+ 400+
Google Trends 增长(2020–2026) +120% +110%

数据来源:GitHub REST API 于 2026-08-10 抓取;Stack Exchange API 按月汇总 2015-01 至 2026-07;Google Trends 同年段。Stack Overflow 提问量从 2015 年不足 100 条/年增至 2025 年800+ 条/年,CircuitPython 从近零增至 400+ 条/年

工具链方面:mip(MicroPython 包安装器)从 micropython-lib 拉取社区包;circup 管理 CircuitPython bundle;ThonnyMu Editor 提供带串口 REPL 和绘图器的入门级 IDE;mpremote 用于脚本传输与文件系统管理。

3. 真实落地案例

领域 项目示例 硬件 Python 的关键优势 来源
IoT / 家居自动化 MQTT 联网环境传感器 ESP32 + BME280 网络与传感器集成快 Hackster.io
机器人 循迹小车 + 电机控制 Feather RP2040、直流电机、超声波 电机/传感器 API 可读、自动重载 Adafruit Learning System
可穿戴 / 艺术 NeoPixel LED 服饰或交互装置 Gemma M0、NeoPixel 灯带 动画代码简单,非工程师可用 Adafruit Learning System
农业 LoRa 土壤湿度传感器(深度睡眠) ESP32、LoRa 模块、电容式传感器 原型快、deep sleep 支持低功耗 Hackaday.io
专业原型 传感器评估与测试夹具 各厂商板卡 首个可用原型耗时更短 Espressif / Raspberry Pi

几个具体细节值得注意:

  • 农业案例:ESP32 + MicroPython 的土壤湿度节点,每小时从 deep sleep 唤醒,读电容式土壤传感器,经 LoRaWAN 上报后回睡。整个应用几十行 Python(靠 machine.deepsleep()network 模块),开发者在项目日志里写明第一个可用原型是”一个下午”做完的——同样硬件用 C 是不现实的时间线。
  • 机器人案例adafruit_motor 库为直流电机、步进电机、舵机提供跨板一致接口。改一个电机速度或传感器阈值,就是改文本文件并保存,机器人立刻按新行为运行;等价 Arduino sketch 则要管理定时器、中断和寄存器配置。
  • 专业场景:工程团队常用 MicroPython 快速验证硬件概念,再决定是否用 C/C++ 落地;也有公司把 CircuitPython 用在内部测试夹具和产线工装上,因为”易改”和”操作简单”比裸性能更重要。

4. 性能基准(本文核心贡献)

测试条件:ESP32 DevKit V1(ESP32-WROOM-32)与 Raspberry Pi Pico(RP2040);软件版本 MicroPython 1.24CircuitPython 9.2Arduino C++(Arduino IDE 2.3,默认优化);每项跑 5 次取中位数;GPIO 翻转用逻辑分析仪,其余用板载定时器,Wi-Fi 计时从启动到 DHCP 分配,空闲 RAM 在启动后立即读取。

表 4 基准对比

测试项 MicroPython CircuitPython Arduino C++
GPIO 翻转频率 ~50 kHz ~30 kHz ~1 MHz
I2C 传感器读取延迟 2–5 ms 3–6 ms 0.5–1 ms
SPI 屏刷新(240×240) 120–180 ms 150–220 ms 40–60 ms
Wi-Fi 建立连接 1.5 s 2.0 s 1.2 s
空闲 RAM 占用 20 KB 30 KB 5 KB

逐项解读:

  • GPIO 翻转差一个数量级(C 约 1 MHz vs MicroPython 50 kHz / CircuitPython 30 kHz)。原因是每条 Python 指令都在运行时解释:machine.Pin.value() 在碰硬件寄存器前要做类型检查、对象分配和方法派发,而 digitalWrite(pin, HIGH) 只编译成几条机器指令。要做 bit-banging、精确波形或高速 LED 灯带的场景,这个差距是决定性的。 但绝大多数 IoT 任务——每秒读一次传感器、开关继电器、刷新状态屏——50 kHz 远远够用:人眼连 1 kHz 的继电器动作都看不出来。
  • I2C / SPI 差距没那么极端。I2C 慢的部分原因是外围 API 要构造 bytearray 缓冲、做边界检查,并在解释器内存与外设缓冲间拷贝数据。每秒 1 次甚至 10 次采样的传感器,5 ms 可忽略;只有在每秒数百次采样的加速度计或音频流场景才致命。SPI 屏刷新慢 3–4 倍,因为每次绘图由大量小 SPI 事务组成,图形界面会出现动画迟滞或闪烁——适合简单状态屏和静态仪表盘,不适合高刷新率图形或视频。
  • Wi-Fi 建立时间差异很小(1.5 s / 2.0 s / 1.2 s),因为耗时被 Wi-Fi 协议栈和 DHCP 协商主导,语言运行时开销占比低。这意味着对电池供电的 IoT 传感器,Python 慢执行带来的能耗可能不如无线传输和传感器预热耗电重要——低占空比的 IoT 设备仍可选 Python。
  • 内存是更根本的约束。Pico 有 264 KB RAM,20–30 KB 运行时占用尚可;但在 32 KB 或 64 KB RAM 的小设备上,运行时已吃掉大头。加上动态分配与 GC 会导致堆碎片不可预测的暂停,长时间连续运行的应用要小心。

结论:需要裸速度、精确时序或极小内存的场景(千赫兹级电机控制环、软件无线电、RAM 紧张的极低功耗设备)继续用编译型语言;周期采样、简单驱动、网络通信、界面更新这一大类应用,Python 够快,而它在开发速度、可读性和可维护性上的优势盖过性能代价。

务实的混合模式已经成为主流:先用 Python 验证概念、摸清硬件能力,必要时再把性能敏感的部分移植到 C/C++——同一块硬件上厂商同时提供 Python 和 C 官方支持,让这条路变得可行。此外跨板可移植性也是实打实的收益:为一块板写的 Python 代码常能几乎不改地跑在另一块上,减少厂商锁定;而针对某厂商 SDK 写的 C 代码换芯片家族往往要大改。

5. 教育是主要驱动力

  • BBC micro:bit(2015):为英国学童编程教育而生的低成本板,带 LED 矩阵、按键、传感器和蓝牙。同时提供积木式编辑器(低龄)和 MicroPython(高年级),其 MicroPython 实现为教育专门定制并配了面向教师的文档。已在全球分发数百万块
  • Raspberry Pi Pico(2021)4 美元,RP2040 芯片,官方C/C++ 与 MicroPython 并列为一等开发选项,文档有专门的 MicroPython 章节(GPIO、I2C、SPI、PWM)。这一决定把 MicroPython 从”事后补充”变成”正经教学路径”。
  • Adafruit Circuit Playground Express(2017):板载集成多个传感器、LED、按键和扬声器,不需要面包板、跳线或焊接;配合拖拽式 USB 工作流,学生写程序、存盘、立刻看到结果,无需装软件、配驱动或搭编译器。在 IT 支持有限、课时宝贵的课堂里这点极关键。

批评者会担心”Python 优先”教出不懂底层硬件的开发者。作者回应:多数学习者的目标不是成为专业嵌入式工程师,而是建立计算思维和物理计算的信心;而对真要走嵌入式路线的人,从 Python 入手并不妨碍之后学 C,反而因概念基础打得好而过渡更顺。

6. 挑战与局限

  1. 执行速度与内存开销:见基准。硬实时环、软件无线电、精确波形生成基本不适用;即使平均性能够,GC 暂停也可能带来不可接受的延迟。
  2. 分裂(fragmentation):MicroPython 与 CircuitPython 同源但 API 不完全兼容,库名、函数签名、硬件抽象层都有差异,代码不能直接互跑。MicroPython 内部也分裂——社区库常为特定端口/板子开发,跨架构维护不一致,削弱了常被宣传的跨平台可移植性。CircuitPython 因策展 bundle 而较少有此问题,代价是灵活性降低、板卡支持更受 Adafruit 控制。
  3. 硬件支持深度不一:新款或小众芯片可能缺稳定端口或外设实现不完整(某些低功耗特性、高级定时器、专用外设没有 Python 暴露);文档质量也参差——Pico、Feather 这类热门板教程丰富,冷门板可能只有基础端口。
  4. 调试与工具链落后:REPL 和简单 traceback 对初学者够用,但无法诊断内存泄漏、栈溢出、隐蔽时序 bug。没有桌面 Python 那样丰富的调试器、性能分析器和静态分析器;多数板子没有断点调试,检查崩溃设备状态常常要复位并丢掉堆。
  5. 行业认知壁垒:不少嵌入式工程团队仍视 Python 为”爱好者/教学语言”。缺乏正式认证、MISRA 合规或安全标准,在汽车、医疗、航空航天等行业加重了这一顾虑。原型验证完转产常需重写 C/C++,引入额外工作和原型-成品行为不一致的风险
  6. 并发与功耗管理asyncio 是协作式;多数端口缺乏健壮的抢占式线程,难以处理多个有严格时序要求的独立任务。Python 的动态行为和周期性 GC 会干扰低功耗睡眠模式,做到电池传感器所需的超低电流比 C 更难
  7. 生态成熟度:许多库是社区小项目,测试覆盖和文档有限;固件版本间的破坏性变更不罕见,长期支持无保证。要维护多年的项目,依赖不稳定库的风险可能盖过快速开发的好处。

作者强调:这些局限不是否定其价值,而是划定了适用边界

7. 未来十年预测

硬件在松绑约束:ESP32-P4(多 RISC-V 核、更大内嵌内存、专用 AI 加速)、RP2350(RP2040 后继,更高主频、更多内存、可选浮点增强,仍保留低成本与双语言支持)。20–30 KB 的运行时占用,在 64 KB 芯片上是问题,在 512 KB–1 MB 芯片上就不算什么了——这些余量能让运行时塞进更多标准库模块、改善 GC、支持更丰富的调试,也让 Python 进入边缘轻量机器学习

软件与工具:MicroPython 继续降低内存碎片、提升 VM 效率、扩展现代连接协议;CircuitPython 继续扩 bundle 并推进 BLE、USB host 和高质量显示驱动。WebAssembly 与 Pyodide 带来浏览器内跑 CPython 的可能,从而可以先在浏览器虚拟板上验证传感器脚本逻辑,再把同一份代码搬到真实硬件

标准化:当前分裂在跨板/跨项目时造成摩擦,社区对定义硬件 API 共同基线兴趣渐长(类比 PSF 标准化语言本身)。两个平台完全合并不太可能,最可能的结局是中间路线——共存但采纳更多共享标准,降低移植成本、鼓励库作者同时支持两边。

四条预测

  1. 2030 年代初,Python 很可能成为相当大一部分 IoT 开发的默认原型语言,即使在专业场景——”到首个可用原型的时间”优势太大,且官方厂商支持消除了很多旧反对意见。
  2. CircuitPython 继续主导教育与入门创客MicroPython 在工业边缘计算增长(那里更看重灵活性和线程、底层访问等高级特性)。
  3. Python 与边缘 AI(硬件加速器 + 轻量框架)结合,在预测性维护、语音识别、图像分类等方向开出新的微控制器用例。
  4. C/C++ 不会消失,仍是硬实时控制、安全关键系统和超低功耗设备的首选。行业会转向分层策略:Python 负责原型、教育和高层编排,C/C++ 负责性能关键内核。

8. 阅读提示:哪些是硬数据,哪些是作者自述

便于引用时判断可信度:

  • 可外部核查的硬数据:GitHub star/贡献者数、Stack Overflow 提问量、Google Trends 曲线、各平台官方支持板卡数、芯片规格(RP2040/RP2350、ESP32-P4、micro:bit 发布年份、Pico 4 美元售价)——这些都能在公开 API 或官方文档上复核。
  • 本文原创、且依赖硬件与固件版本的数据:4 张表里的基准值(GPIO 50 kHz、I2C 2–5 ms、空闲 RAM 20/30/5 KB 等)。作者自己声明不可完全推广:性能取决于具体板子、固件版本和代码优化级别,且只测了两块板。引这些数字时要带上 “ESP32 DevKit V1 / Pico,MicroPython 1.24 / CircuitPython 9.2,2026-08” 这些限定条件。
  • 作者自己列出的方法学局限:① 基准只覆盖两块板;② star 数和提问量可能被”随手好奇”抬高,也漏掉企业与线下使用;③ 案例是目的性取样而非随机抽样,存在偏向成功/文档完善项目的正偏;④ 专家访谈样本极小(3 名教育者 + 1 名工程师,且因故匿名),不具统计代表性;⑤ 部分市场数据受付费墙限制只能用摘要形式。
  • 注意:这是一篇综述/评论性质的混合方法文章(作者为中学教师背景),不是同行评审的实验论文;其价值在于把分散的生态数据和案例系统化,而非提供新的性能理论。

附:原文结构索引

Abstract → Introduction → Methodology(5 个研究问题)→ Background(平台是什么、表 1)→ The Growing Ecosystem(表 2)→ Real-World Applications(IoT/机器人/可穿戴/农业/专业,表 3)→ Performance Benchmarks(表 4)→ Education & Hobbyist → Challenges and Limitations → Future → Conclusion → References


原文出处:https://arxiv.org/abs/2608.18160(DOI: 10.48550/arXiv.2608.18160)。本译文供学习交流。