開篇
Python作為一門快速發展的解釋性程式設計語言,數以百萬計的開發者已經将Python應用在人工智能、遊戲開發、資料挖掘、資訊安全、系統運維等行業并取得了成功。
現如今,一大批國内外頭部IoT解決方商正在嘗試将Python引入物聯網/智能硬體開發行業,部分支援python語言的物聯網開發闆和模組也陸續面試。
例如阿裡雲智能推出的HaaS開發闆,樹莓派推出的Raspberry Pi Pico開發闆等。
那麼,物聯網裝置會是Python的下一個爆點嗎?
本文首先總結python發展曆史,然後介紹Micropython在物聯網行業的應用現狀,最後将結合阿裡雲智能的python輕應用詳細介紹國内大廠是如何基于Micropython重新定義物聯網開發的。
Python為什麼會在PC端取得成功?
電腦硬體配置非常受限的時候,計算機世界最流行的是Pascal、C、 Fortran等程式設計語言,這些語言的基本設計原則是讓機器能更快運作。為了寫出更高運作效率的程式,迫使程式員像計算機一樣思考,帶來的問題是程式設計效率非常低。
随着計算及硬體配置的逐漸提高,語言本身的性能不再是主要瓶頸,如何提升程式設計效率顯得更為重要。這時候,誕生了C++這種面向對象的程式設計語言。C++以犧牲了少許性能為代價,大大提高了程式設計效率。随後幾年,又誕生了Python。
相對C++這種編譯性語言,在大多數場景下,依靠解釋執行的Python運作效率不足C++的十分之一。 但是,Python語言還是取得了非常快速的發展,如今的python已經被使用在各行各業,據TIBOX最新排名,Python語言位列第二。那python語言為什麼會取得成功呢?個人觀點如下:
更簡單的程式設計範式,有效降低了程式設計門檻,大幅提升了程式設計效率。
強調可拓展性,python程式員可以快速使用Python寫.py檔案擴充子產品,也可以深入底層,擴充c/c++程式庫。c/c++程式庫不止可以彌補python語言本身的性能問題,也将海量c/c++生态庫引如了Python。
代碼開源,充分利用開源社群的力量,來自各行各業的開發者,将不同領域的優點帶給了Python,比如Python标準庫中的正則表達(regular expression)是參考Perl,而lambda, map, filter, reduce函數參考Lisp。
因為功能強大且易上手,Python抓住了人工智能的風口。
物聯網裝置會是Python的下一個爆點嗎?
對照最早期台式電腦的發展曆史,20年前流行的51單片機現在已經被Arm大範圍取代。程式設計語言本身的性能已不是物聯網裝置端開發的主要瓶頸。面對越來越多的物聯網裝置智能化需求,需求碎片化問題變成了行業最大挑戰,如何以高ROI滿足物聯網裝置的碎片化需求?降低程式設計門檻、提升程式設計效率是關鍵。目前普及度最高的基于C語言開發物聯網裝置的不足逐漸凸顯。具體表現如下:
不支援應用熱部署,應用開發和系統開發不能解耦,因為物聯網硬體資源相對受限,一般采用RTOS及RTOS衍生作業系統,不支援動态連結機制,涉及到C代碼的改動,必然涉及到全系統編譯及刷機等繁瑣操作,不止調試效率底下,也提升了開發門檻。
開發門檻高,缺少更高層的封裝。物聯網場景常用的雲連結、硬體端口控制、AI、多媒體播放等功能都需要從頭開發,重複開發不止造成了人力浪費還提升了研發門檻。
缺少可以快速部署的開源案例,因為需求碎片化,代碼不開源,硬體差異大等客觀因素,很難在網際網路上快速找到目标硬體目标場景下的參考案例。這進一步提升了研發門檻。
物聯網行業需要一種簡單高效的解釋性語言,來提升程式設計效率,開源且易于擴充的python無疑是最好的選擇之一。但是,傳統的cpython引擎記憶體和flash開銷都偏大,很難應用在目前最主流的物聯網裝置上。是以,Micropython應運而生,Micropython是python在物聯網低配硬體上的定制版本,代碼開源,相容python文法,繼承了python簡單高效、易與拓展的特性,相對于傳統的cpython解釋器2M RAM開銷和4M以上的Flash開銷,Micropython隻需要150K RAM和10K的flash,可以運作在目前最主流的物聯網裝置上。
Micropython自從誕生,就得到了物聯網晶片大廠的追捧,TI、ESP32、STM32等物聯網行業最主流的晶片方案均已經原生支援micropython,形成了一套公認的标準程式設計接口和硬體适配層,程式設計接口中包含了檔案操作、socket、thread、硬體端口控制等物聯網開發常用接口,可以支援基于python語言實作基礎的雲連結和硬體端口控制需要。下圖是Micropython的源碼結構,其中Ports部分是micropython官方适配好的硬體平台。
Micropython将python這種簡單高效的開發語言引入到了物聯網開發中,依托python語言的特新降低了物聯網裝置開發門檻,但是,僅僅解決了應用熱部署等基礎問題,距離真正的易上手還有較大差距。具體表現為:缺少更進階的元件,缺少簡單易用的IDE環境,缺少垂直化的應用案例。是以,國内物聯網相關公司基于Micropython做了自己的擴充并推出python輕應用方案,例如,國内物聯網晶片頭部廠商樂鑫、國内4G Cat.1模組廠商模組、以及國内物聯網解決方案商代表阿裡雲智能IoT等。這些python輕應用方案中以阿裡雲智能IoT部門推出的方案功能最為全面且開源開放。
接下來,将結合阿裡雲智能Python輕應用方案介紹國内大廠是如何做Python輕應用的。
阿裡雲智能Python輕應用方案介紹
HaaS Python輕應用是阿裡雲智能IoT團隊最新的一套低代碼程式設計架構,相容Micropython程式設計規範,依托HaaS 開發闆加軟硬體積木提供AI、支付、藍牙配網、雲連結等物聯網場景常用的能力,基于VS Code插件實作一套跨平台的IDE環境,真正解決了物聯網平台的易上手問題。物聯網程式設計不再局限于程式員、一般的技術員也可以基于HaaS Python輕應用實作複雜的物聯網需求。
開發者可以基于雲端阿裡倉庫快速建立工程并一鍵推送裝置端驗證效果、也可以将自己開發的案例貢獻到雲端案例倉庫以繁榮生态,貢獻突出的開發者也可以獲得HaaS社群頒發的榮譽證書和獎勵。下圖是HaaS Python輕應用的架構圖。
從圖中可以看出,HaaS Python 輕應用方案不止包含軟體架構,也包含了豐富的硬體開發闆和模組,同時依托阿裡生态強大的平台能力,最終實作了物聯網硬體的積木話開發。