Elastic Network of Things with MQTT and MicroPython

  • R1
  • 第 2 天,10:40‑11:10
  • 中文演講/英文投影片
  • 嵌入式系統
  • 中階

IoT 產業蓬勃發展,終端設備的性能也隨著摩爾定律快速成長。最近兩年因為 MicroPython 的出現,使得 Python 能夠運行在越來越多硬幣大小的裝置上,開發過程快速便利,裝置功能也越顯強大。

MicroPython 是什麼? 能力與限制為何? 如何用它來開發終端設備? IoT系統的開發與管理 是否可以因而有更多的彈性與可能?

這個talk中會介紹 MicroPython 的特性與限制、使用 MicroPython 在 ESP8266(WiFi MCU) 模組上開發程式的步驟與過程;並且會簡介 MQTT 的架構與流程,並與 AMQP、Celery、IPython Parallel 做比較,期望能提供一個基本的概念。

實作驗證上,基於類似 IPython Parallel 的架構,以 Mosquitto 作為 MQTT broker,運用幾顆運行 MicroPython 的 ESP8266 模組做為 workers(engines) 來建構小型的 cluster,並且受惠於 Python 的特性,可以動態地傳送 任意的程式碼 要求遠端端點執行,因此端點上的運行邏輯隨時可變,並不受限於預設的程式碼,可以經由中央主機讀寫各遠端節點上的GPIO來進行動態控制,也可以透過網路佈署程式碼交由各節點獨立運行。本talk將以此系統作為範例,說明 MicroPython、MQTT 搭配運用的方式,探討 Python 在建置 IoT 系統上的優勢。

演講詳細內容

IoT 系統的末端節點通常是由小型的嵌入式設備來擔任,當節點數量較多時,之間資訊交換的複雜性也就跟著提高,而系統在佈署或改版調整時,更加需要一個可以由遠端主機 動態規劃、佈署、管理與控制的機制,才能具有省時省力、動態與彈性的效果。 隨著 [MicroPython](https://micropython.org/) 的出現,Python 終於得以運行在硬幣大小的終端設備上,帶來許多新的可能性,同時,底層的系統架構與訊息機制也有決定性的影響。 許多 IoT 的主流 frameworks 都奠基於 [MQTT](http://mqtt.org/) 通訊協定,屬於一種在 broker-client 架構上的 publisher / subscriber 機制,雖然推拉訊息的方式相當具有彈性,然而對訊息的操作僅有 publish 和 subscribe 兩種方法,普遍缺少 [RPC(Remote Procedure Call)](https://en.wikipedia.org/wiki/Remote_procedure_call) 的功能,在撰寫程式與建構系統的時候會受到某種程度的限制。 反觀 有很多優秀的 message-queue frameworks,例如 [Celery](http://www.celeryproject.org/) 和 [IPython Parallel](https://ipython.org/ipython-doc/3/parallel/parallel_intro.html),有著類似的 broker-client 架構與 producer / consumer 機制,並且具有 RPC 的功能,造就了強大的 平行/分散式運算的環境。 因此,這個 talk 中除了會介紹 MicroPython 的特性與限制、在 [ESP8266](https://www.google.com.tw/search?q=ESP8266)(WiFi MCU) 模組上開發程式的步驟之外,也將說明 如何基於類似 IPython Parallel 的架構,以 [Mosquitto](https://mosquitto.org/) 作為 broker,使用幾顆運行 MicroPython 的 [ESP8266](https://www.google.com.tw/search?q=ESP8266) 模組做為 workers(engines) 來建構一個小型的 cluster。並且,受惠於 Python 的特性,可以動態地傳送任意的程式碼 要求遠端端點執行,因此端點上的運行邏輯隨時可變,並不受限於預設的程式碼,此外還實做了 RPC 的機制,在建構系統的程式方法上有更大的自由度。基於上述的機制,我們可以經由中央主機讀寫各遠端節點上的 GPIO 來進行動態控制,也可以透過網路佈署程式碼交由各節點獨立運行。 希望藉由說明建構本系統的過程,能讓聽眾能對 用 MicroPython 開發嵌入式裝置、使用 MQTT 通訊協定來傳遞訊息、IoT 系統佈署與管理的彈性需求上能有一個概念。

投影片連結

講者介紹

Wei Lin

Mostly worked in the fields of marketing, strategy-planning, and project-management; I am fascinated by the elegance of Python, and very interested in Machine-Learning and Data-Science.

策略規劃 是專長,寫程式 是興趣,
Machine-Learning 和 Data-Science 是最愛,
對知識的渴望 與 領悟的喜悅 是我永恆的動力。