|

MCU程式語言比一比:MicroPython vs. CircuitPython

   

作者:歐敏銓

MicroPython 以其精簡和高效著稱,適合資源有限的設備,而 CircuitPython 則由 Adafruit 開發,強調易用性,並內建了對多種感測器和週邊設備的支援,是初學者的理想選擇,最終的選擇取決於專案需求和個人偏好。本文將介紹廣受歡迎MicroPython 和 CircuitPython,比較這兩種基於Python程式語言的特點、差異定位和適用領域。

主要區別是什麼?

在微控制器程式設計中,MicroPython 與 CircuitPython 是兩種流行的選擇,旨在易於使用並提供大量功能。它們之間的主要區別可以歸納如下:

1. 開發與設計理念:

  • MicroPython:由 Damien P. George 開發,是一種精簡且高效的 Python 程式語言實作以其小巧的佔用空間 (small footprint) 和低開銷 (low overhead) 而聞名,目標是支援多種微控制器並具備高度靈活性。
  • CircuitPython:由 Adafruit 公司基於 MicroPython 開發的另一種流行的微控制器 Python 實作,設計上更強調易用、友善新手、教育應用以及自家硬體的即插即用。

2. 編輯檔案及上傳方式:

  • MicroPython:多用 REPL 互動或透過專屬 IDE(如 Thonny)傳送程式碼,需串口或網路傳輸。
  • CircuitPython:裝置插上電腦直接變成 U 盤(USB Mass Storage),可以像U盤一樣拖拉 .py 檔案,且每次儲存自動重啟執行,極適合新手。

3. 標準函式庫與 API 差異:

  • MicroPython:提供很多接近底層的類別和函式(如 machine、utime、network等),更靈活,對專案遷移較友善。
  • CircuitPython:把底層做了封裝(如 busio、digitalio、microcontroller等),API風格更統一、出錯提示更明確,但部分低層控制權被屏蔽(為簡化新手開發)。

4. 文件資源與社群:

  • MicroPython:全球用戶眾多,論壇、教學、範例豐富,支援廣泛硬體與自訂方案。

  • CircuitPython:由 Adafruit 官方推廣,文件教學完善,新手友善,但社群與第三方中文資源相對較少,多著重於 Adafruit 生態系。

5. 適用場景:

  • MicroPython:是資源受限設備的絕佳選擇,因為它注重效率。它支援廣泛的微控制器,包括來自流行製造商的產品。它也適合需要多平台支援、進階硬體控制、客製化功能的開發者和工程專案。
  • CircuitPython:極適合教學、入門者、原型開發,以及需要快速搭建 Adafruit 周邊的應用場合。

6. 其他差異:

  • 代碼相容性:雖然 CircuitPython 基於 MicroPython,但兩者 API 存在差異,程式移植時有時需手動修改。
  • 內建功能與周邊支援:CircuitPython 提供大量內建功能,包括支援廣泛的感測器和周邊設備。這一點使其在初學階段或需要快速整合多種硬體時更具優勢。

對 AI / ML 的支援性比較

MicroPython 與 CircuitPython 在人工智慧(AI)與機器學習(ML)方面的支援各有不同,主要差異反映於設計目標及生態系的定位。MicroPython 被視為嵌入式開發的強大工具,它以接近原生 Python 語法為基礎,經過高度剪裁以適合微控制器的資源限制。這使得 MicroPython 可支援即時交互式開發與測試,方便開發者快速構建物聯網感測設備與簡單的機器學習原型。

社群上已有像 uTensor 這類輕量級 AI 框架成功移植到 MicroPython,能執行基本的感應器數據分析與推論。藉由 Arduino 推出的 MicroPython 套件安裝工具,也進一步簡化在 Arduino 平台上使用,促進 AI/ML 應用的快速開發。不過,MicroPython 在運算效率上仍有限,不適合執行複雜或大規模神經網路,主要適用於基礎感測與邏輯判斷。

相較之下,CircuitPython 則是由 Adafruit 透過 MicroPython 分支打造,強調使用者的易用性與快速原型開發。它內建了 ulab 這套模擬 NumPy 的數值運算庫,提供基本線性代數計算能力,適合進行簡單的機器學習模型操作和推論。CircuitPython 在教學與硬體互動方面表現傑出,尤其適合入門者和教育環境中進行輕量 AI/ML 的概念驗證。然而,由於其設計中抽象層較高和解譯器負擔較重,運算效率相較 MicroPython 較低,不適合低延遲或效能要求高的專案。

在硬體加速方面,無論 MicroPython 還是 CircuitPython,都只能處理簡易且已經訓練完成的小型模型,無法直接訓練大型深度神經網路。MCU 的算力限制使得這兩者通常通過在 PC 端進行訓練,然後部署推論模型於裝置上。未來若要在 MCU 上執行更複雜的 AI,可能需搭配專門的神經網路加速硬體(如 NPU)或採用多核心設計才能實現。

總體而言,MicroPython 在 AI/ML 支援上偏向靈活性與更高效能,適合需要更多硬體控制與快速迭代的嵌入式人工智慧開發;CircuitPython 則以更簡單易用且完善的使用者體驗為主,適合教育教學與初階機器學習推論。選擇時應視專案對效能需求與開發便利性的平衡而定。

小結

整體來說,MicroPython 更像是一個注重核心效率和資源優化的版本,適合對資源有嚴格要求或希望深入控制硬體的進階使用者。而 CircuitPython 則更注重開箱即用、簡化操作的體驗,為初學者提供了一個更容易入門的平台,並且內建了對多種硬體的高度支援。

您可以將 MicroPython 想像成一台輕量級的賽車,它被設計成在資源有限的賽道上跑得最快、最有效率,適用於那些對性能和資源利用有嚴格要求的「賽道」裝置。而 CircuitPython 則更像是一輛配備了自動變速箱和許多便利功能的家庭轎車,它讓駕駛變得非常簡單和直接,即使是新手也能輕鬆上路,適用於那些希望快速、方便地實現功能的「日常代步」微控制器裝置。

MicroPython vs. CircuitPython對照表

 

》延伸閱讀:

Youtube: MicroPython vs CircuitPython Guide

Arduino vs MicroPython vs CircuitPython: Which One Will You Choose?

嵌入式AI/ML開發框架比一比:Arduino IDE、MicroPython、TFLite、ESP-IDF

owenou

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: owenou

曾投身IT、電子科技媒體報導十多年,因認同Maker運動的創新實作精神,創立MakerPRO,致力結合媒體、產業與PRO Maker、開發者的社群力量,共同推展科技創造力。

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *