|

Arduino開始將MicroPython納入生態系

   

作者:陸向陽

Arduino Lab for MicroPython程式畫面(Arduino官網

一直以來,談到Arduino大家立刻想到的程式語言是C/C++,但現在Arduino官方開始嘗試支援MicroPython。所謂支援即是Arduino官方開發出一套新的整合開發環境(IDE)稱為Arduino Lab for MicroPython,軟體介面風格與原有的Arduino IDE相仿,也同樣有Windows、Mac、Linux等跨平台版本。

之所以稱為「嘗試」是因為目前這套開發工具軟體還在內部測試階段,意即alpha階段,連外部測試的beta階段都還沒到,版本也在0.5左右,尚未到正式的1.0版,原始程式碼已放在GitHub上。

更嚴格來說,這比較像是一套編輯器(editor)軟體,因為Python是直譯執行的程式語言,不像C/C++是編譯執行的語言,編譯是先在電腦上把程式編譯完成後,才把可執行的程式碼傳送到開發板上,而後執行;直譯是把程式碼放到開發板上後,等到要執行前才立即將其轉譯成可執行的程式碼,而後執行。

直譯方式過去並不興盛,主要是執行速度太慢、且佔儲存空間,但隨著電腦運算力、硬體資源愈來愈強大寬裕,加上軟體技術的改進(例如轉譯完成的程式碼可以保留一份,需要再次執行時即可加速),直譯可行性因而提高。

發展源起與現況

在Arduino官方還沒撰寫開發Arduino Lab for MicroPython前,其實Arduino自家的產品就已經有使用到MicroPython,例如Nicla Vision開發板是專門用於電腦視覺應用的,搭配的韌軟體為OpenMV,而OpenMV的操控即需要撰寫MicroPython程式。

為了開發Arduino Lab for MicroPython,Arduino官方找上MicroPython的創建者Damien George,把他撰寫的MicroPython官方版虛擬機器(Virtual Machine, VM)改寫出一套可以在Arduino現有產品上執行的版本。

也為了讓現有Arduino產品可以執行MicroPython,Arduino官方也開始改寫幾片現行開發板的韌體,目前已經釋出三片開發板的韌體,分別是Nano BLE Sense、Nano RP2040 Connect,以及Portenta H7等。新韌體的網址為https://docs.arduino.cc/micropython/,同時也有順便放OpenMV的韌體。

三片開發板把原有的韌體清除掉,改寫入新版韌體,搭配電腦上安裝的Arduino Lab for MicroPython,就可以進行MicroPython的程式開發,並最終在板子上執行MicroPython。為了推廣MicroPython,Arduino官方也另立一個網站來推廣,網址為labs.arduino.cc

Arduino Labs官網畫面(Arduino官網

值得注意的是,釋出開發板的新韌體並不表示後續也同樣只有Arduino官方的開發板會支援MicroPython,Arduino官方希望有更多的非官方板卡也能支援響應Arduino Lab for MicroPython,自己只是起個頭示範。

因為一切的發展都還在很前期,所以Arduino官方稱Arduino Lab for MicroPython是一套輕量(lightweight)編輯器,也尚不能稱是正式產品,而是一個體驗工具(experimental tool),之所以現階段就釋出就是希望多聽聽各方的意見,看看能否逐漸改進成熟,但也不保證最終可以成為完整產品。

Arduino Labs官網上也開始有Arduino Lab for MicroPython相關的創客專案,一是Include Robot,是一個用3D列印做成的自走車,可以使用Arduino Nano 33 BLE、BLE Sense、33 IoT,以及Arduino RP2040 Connect等電路板來驅動;二是BLE Dashboard,是一個儀表板專案,可用來顯示感測器資料,使用的板子是Arduino Nano 33 BLE Sense或Nicla Sense ME。

Include Robot自走車外觀(Arduino官網

MicroPython vs. CircuitPython

最後,或許有些人仍不太了解MicroPython、CircuitPython的區別。MicroPython的淵源來自前述的Damien George(澳洲程式師、物理學家)曾於群眾募資網站Kickstarter上發起一個募資,希望能生產銷售一片名為PyBoard(有時寫成pyboard)的開發板,並讓購買該板的用戶,能使用修改版的Python來撰寫該開發板的控制程式,該修改版的Python即為Micro Python(當時發起時兩個字之間有空格,之後連寫)。

本來只想募15,000英鎊(發起者可以自行決定募資的幣別),募資天數30天,但最終由1,931名支持者共籌募了97,803英鎊,PyBoard專案成立並順利生產交貨。自此之後有更多的晶片、板卡支援MicroPython,如ESP8266晶片、ESP32晶片、BBC Micro:bit、Raspberry Pi Pico,以及STMicro公司的STM32系列等。

至於CircuitPython則是由Adafruit以MicroPython為基礎的衍生發展,既然由Adafruit所提出,自然Adafruit所推出的板卡最支援CircuitPython,但由於一樣是開放原始程式碼的專案,也是有其他板卡支援CircuitPython,例如SparkFun、Seeed Studio、Arduino等均有推出支援CircuitPython的板卡。

至於兩者使用上有何差異,其實CircuitPython只是更方便入門者學習與除錯,而不是比MicroPython強大。CircuitPython無法共享狀態所以同時間只能執行一個工作,如果正在用電腦與板卡進行REPL(Read–Eval–Print Loop)模式互動,這時就無法執行板子上的 .py檔案程式。

其他差異還有CircuitPython的API比較精簡,有些CircuitPython的API是直接以低階硬體動作來實現,如此可以省去引用一堆函式庫與額外的指令。總之,希望此一新推展能獲得夠多夠好的回饋意見,從而儘快發展成熟,使創客在控制程式的開發上有更多的選擇。

(責任編輯:謝嘉洵)

陸向陽
陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On

Submit a Comment

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