物聯網太難 ? 不妨試試用Python來開發

2021-05-15 03:00:08

在這裡插入圖片描述

不看這幾篇好文,就別說自己瞭解物聯網

開篇

 

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語言為什麼會取得成功呢?個人觀點如下:

  1. 更簡單的程式設計正規化,有效降低了程式設計門檻,大幅提升了程式設計效率。
  2. 強調可拓展性,python程式設計師可以快速使用Python寫.py檔案擴充套件模組,也可以深入底層,擴充套件c/c++程式庫。c/c++程式庫不止可以彌補python語言本身的效能問題,也將海量c/c++生態庫引如了Python。
  3. 程式碼開源,充分利用開源社群的力量,來自各行各業的開發者,將不同領域的優點帶給了Python,比如Python標準庫中的正則表達(regular expression)是參考Perl,而lambda, map, filter, reduce函數參考Lisp。
  4. 因為功能強大且易上手,Python抓住了人工智慧的風口。

 

物聯網裝置會是Python的下一個爆點嗎?

 

對照最早期臺式電腦的發展歷史,20年前流行的51微控制器現在已經被Arm大範圍取代。程式語言本身的效能已不是物聯網裝置端開發的主要瓶頸。面對越來越多的物聯網裝置智慧化需求,需求碎片化問題變成了行業最大挑戰,如何以高ROI滿足物聯網裝置的碎片化需求?降低程式設計門檻、提升程式設計效率是關鍵。目前普及度最高的基於C語言開發物聯網裝置的不足逐漸凸顯。具體表現如下:

  1. 不支援應用熱部署,應用開發和系統開發不能解耦,因為物聯網硬體資源相對受限,一般採用RTOS及RTOS衍生作業系統,不支援動態連結機制,涉及到C程式碼的改動,必然涉及到全系統編譯及刷機等繁瑣操作,不止偵錯效率底下,也提升了開發門檻。
  2. 開發門檻高,缺少更高層的封裝。物聯網場景常用的雲連結、硬體埠控制、AI、多媒體播放等功能都需要從頭開發,重複開發不止造成了人力浪費還提升了研發門檻。
  3. 缺少可以快速部署的開源案例,因為需求碎片化,程式碼不開源,硬體差異大等客觀因素,很難在網際網路上快速找到目標硬體目標場景下的參考案例。這進一步提升了研發門檻。

物聯網行業需要一種簡單高效的解釋性語言,來提升程式設計效率,開源且易於擴充套件的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 輕應用方案不止包含軟體框架,也包含了豐富的硬體開發板和模組,同時依託阿里生態強大的平臺能力,最終實現了物聯網硬體的積木話開發。