謝作如
通俗地講,物聯網(Internet of Things)就是“物物相連的因特網”,其目標是讓萬物溝通對話。比如在電視機上裝傳感器,可以用手機通過網絡控制電視的使用;在空調、電燈上裝傳感器,計算機可以精確調控、開關,實現有效節能;在窗戶上裝傳感器,你就可以坐在辦公室里通過計算機打開家里的窗戶透氣;等等。
物聯網是創客空間中學生最喜歡挑戰的新技術之一,如用Arduino來做一個基于物聯網的自動澆花系統,遠程獲取傳感器信息等。相對來說,用Arduino或者micro:bit設計物聯網作品的難度還是有點高,需要借助于特定的物聯網模塊才能實現。而隨著掌控板的出現,開源硬件連接網絡變得容易,在TingWebIO庫的支持下,開發物聯網作品也越來越簡單了。
技術分析
掌控板是創客教育專家委員會提出和設計的國產開源硬件。因其采用的ESP32芯片,是樂鑫最新的WIFI+藍牙低功耗物聯網芯片,性能十分強大,所以能夠直接作為一個網絡服務器運行。而APP Inventor是一個基于云端的,以圖形化形式編程的安卓手機應用程序開發環境。它能將枯燥的代碼編程方式轉變為積木式的圖形化編程,即使不懂得編程語言的人,也可以開發出屬于自己的手機應用程序。
從技術上看,只要掌控板運行一個Web服務器,APP Inventor通過Web瀏覽框或者Web客戶端組件,就能訪問掌控板的資源。無論是感知還是控制,只要雙方設定一個協議即可。但是TingWebIO的作者張路老師認為,完全可以用更加簡單的方式,如將掌控板模擬為一個TingWebDB(微型網絡數據庫)服務器,那么用戶只要記住關鍵詞,就能用寫入數據庫的方式實現“控制”,用讀取數據庫的方式實現“感知”。
如圖1所示,當客戶端發出保存數據請求時,請求信息中會攜帶兩個參數——標記和數據,服務器會將“標記”解釋為掌控板上的輸出資源,如當標記為“buzz”時,輸出資源為蜂鳴器,并將“數值”解釋為具體的輸出值,如蜂鳴器的鳴響頻率。同樣,當客戶端發出讀取數據請求時,會攜帶一個“標記”參數,服務器會將參數解釋為掌控板上的某個資源,并將該資源的狀態返回給客戶端,如當標記為“buttona”時,掌控板將返回按鍵A的狀態(1為斷開,0為接通)。
如果想在安卓APP中獲取掌控板的狀態數據,或控制掌控板的輸出,就必須清楚地知道掌控板上各項資源的標記、名稱,以及接收數據的規格。表1中列出的相關信息,可以幫助開發者實現安卓應用與掌控板之間的協作。
注:表1中出現的
功能測試
使用TinyWebIO功能比較簡單,只要讓掌控板運行這個程序即可。大致步驟如下:
(1)下載原生開發工具mpython2及驅動程序,用戶可根據自己的操作系統版本選擇下載不同的文件(下載網址:https://mpython.readthedocs.io/zh/latest/board/software.html)。
(2)下載TinyWebIO庫文件及啟動文件。其中tinywebio.py為庫文件,main.py為啟動文件樣例(下載網址:https://gitee.com/roadlabs/TinyWebIO)。
(3)安裝并啟動mpython2,將tinywebio.py和main.py(需要修改代碼中的SSID名稱和密碼)兩個文件分別寫入掌控板。
雖然很多版本都可以給掌控板升級固件或者刷寫程序,但推薦使用mpythonX軟件。mpythonX軟件中的固件已經整合了tinywebio.py,升級固件后,只要編寫連接WIFI代碼,然后在oled上顯示IP地址,再啟動appserver服務即可。mian.py的參考代碼如表2所示。
安裝TinyWebIO庫中包含的“測試.apk”文件,設置好掌控板顯示屏上的IP地址,就可以測試功能了。如上頁圖2所示,讀取“light”即可獲得光線值,寫入“buzz”和“on”,掌控板上的蜂鳴器就會響起。
應用拓展
在APP開發中,只要對服務器地址是掌控板IP的TinyWebDB進行操作,即可實現手機和掌控板的互動。其實,TinyWebIO作用并不局限于APP Inventor2,還有很多有趣的玩法。
(1)用瀏覽器(手機、電腦)和掌控板互動。在瀏覽器中輸入掌控板的IP地址,端口8888,就能看到一個簡單的功能引導界面(如圖3)。
點擊“/storeavalue”可以控制掌控板,點擊“/getvalue”可以讀取掌控板的傳感器信息,具體的使用方法和APP Inventor一致。這樣,手機即使不安裝APP,也能夠和掌控板互動。
(2)PC端編程和掌控板互動。TinyWebIO實質上就是一個標準的Web服務器,可以使用任何一種編程語言,發送標準的HTTP請求,即可實現和掌控板的互動。參考Python代碼如表3所示。
相對于其他開源硬件,掌握板的優勢在于其天然支持WIFI,因為ESP32原本就是工業級的物聯網芯片。借助TinyWebIO庫,掌握板不僅和APP Inventor2無縫連接,還能用各種編程語言編寫各種應用程序,遠程獲取各種傳感器的信息,或者控制LED或繼電器,讓中小學生也能輕易完成一個“聯通萬物”的物聯網作品,相信老師們開發物聯網課程又有了新的選擇。