山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2020年10月1日

[MicroPython 教學] Should I Learn MicroPython


 

[MicroPython] Should I Learn MicroPython


這篇文章就和大家來分享我對 MicroPython 的看法。


對於一直用 C 語言編寫程式的我,加上對 Python 的了解,知道 Python 需要直譯器(Interpreter) 以及 VM (Virtual Machine) 的轉換執行,所以在第一時間,我覺得 Python 是不適合在 Embedded Microprocessor 領域的,因為透過直譯器以及 VM BYTE 的轉換執行,程式碼的執行效率絕對不如 C 語言,在 Embedded 這樣寸土寸金的環境下,MicroPython 根本不適合;但是經過深入的研究後,現在覺得 MicroPython 在 Embedded 的領域,還是有他潛在的市場以及優勢,值得去學習;所以在這一篇文章裡,我將透過 MicroPython 和 Arduino 的比較,來告訴你哪種情境適合 MicroPython,以及哪些人需要 MicroPython。 


Resource

MicroPython 最小需求 (minimum requirements ) 是 256KB 的 ROM 以及 16KB 的 RAM,也就是說,對於只有 32KB 的 ROM 以及 2KB 的 RAM Arduino UNO 而言,想跑 MicroPython 是想都不要想的,更廣義的說,在 Arduino Store 販賣的板子,大多數都不適合跑 MicroPython 。

另外,就 MicroPython 官方 Py-Board 的規格是 ARM-based Microprocessor 這點 ,也隱約的告知,想要 MicroPython 跑的順,就是需要 ARM-based Microprocessor ,以下是 Py-Board 的硬體的規格

  • STM32F722IEK microcontroller ( 32-bit ARM )

  • 216 MHz Cortex M7 CPU with single-precision hardware floating point

  • 512KB internal flash ROM and 256KB internal RAM

就連做為青少年程式教學的  micro:bit ,它的硬體規格也是 ARM Cortex M0 等級

  • ARM Cortex M0  32-bit  microprocessor

  • 256KB internal flash ROM and 16 internal RAM

所以,對於應用領域是 "小型系統" 的,MicroPython 就不適合了。


Script 的特性

PE (Product Engineer), QA (Qualuty Assurance) 以及 FAE (Failure Analysis Engineer) 這些領域的工程師都長期使用 Script,而 MicroPython 就是以 Script 起家, 這樣一個特性的程式語言,非常適合像上圖這樣的工作情境。 

另外,使用 MicroPython 做為你測試的基礎,基本上,你只需更改上載 main.py 就可以重新做測試,無需像 Arduino (C 語言),即使只是改一行程式碼 ,還是需要重新編譯,重新上載整個程式碼,這樣麼費時費力的程序。在上圖這樣的工作情境上,MicroPython VM 慢的缺點,也立馬轉為優點,不是嗎?

所以,有 1) 自動測試 2) 元件測試或 3)控制測試設備,這樣需求工作領域的人,就非常適合利用 MicroPython Script 的特性來做到測試的工作。


Package

今日 Python 會這麼火紅,除了易學外,Package 的完整度 (如 machine Learning) 更是把它推向近幾年來,程式語言第一名的寶座。

所以,想實踐你的創意,而你的創意又可以透過這些 Packages 的加持,達到快速完成 prototype 的話,那 MicroPyhon 絕對是你最佳的選擇。

或許你會問,那為何不是樹莓派  (Raspberry Pi) ,而是 MicroPython 呢 ?

在這裡,我給的答案是系統大小的選擇 ;這就好比你的 Prototype 是要架構在複雜Linux Embedded OS, 還是要像 Arduino 有或沒有 RTOS 的簡單系統架構之分別而已。畢竟要在樹莓派 4 核心的 Linux系統上實踐你的創意,開發時間以及成本都不低啊!

Real-Time Embedded System

在 Real-Time Embedded System 的學習道路上,Arduino 與 MicroPyhon 的選擇,我個人建議是 Arduino;這就好比一台機器,Arduino 比較像是把機器組起來的那個角色,而操作那台機器的角色就是 MicroPyhon 。也就說,如果你是學生,還在學習寫驅動程式,那 Arduino 就較適合你,但若你是創客,或是喜歡 DIY 改造的人,MicroPyhon 就非常適合你,因為 MicroPyhon 已經把基礎架好了,你可以擁有更多的時間專注在你的創意上。

當然,用 MicroPyhon 來學習驅動程式的撰寫,也不是不可行,畢竟 MicroPyhon 的底層,也是以 C 語言完成的;但我偏向把它歸類為高階 Library 的撰寫,也就是說,比較不適合初學者。



熱門文章