

國家課程、地方課程和校本課程構成了我國三級課程體系,對于物聯網技術的普及而言,我們仍需要通過發展的眼光看待這個問題。謝作如老師身處信息技術需要參與高考的浙江省,其主導的這樣一組課程,從國家課程的改造、初中課程的銜接和高中典型項目的延展的不同角度,給出了物聯網課程進一步走向縱深的不同的可能性。
浙江教育出版社的高中信息技術教材(下面簡稱“教材”)的必修2模塊中,“內置”了一個搭建信息系統的學習項目,即第四章《信息系統的搭建》中的“室內環境實時監測系統”。這是一個基于物聯網技術的項目,涉及了軟件和硬件。教材的編寫工作在2016年左右啟動,那段時間物聯網技術還沒有“飛入尋常百姓家”,但隨著物聯網技術的普及和發展,各種開源、免費的物聯網服務器軟件也陸續發布,搭建物聯網應用有了更多選擇,無論從價格成本、技術難度還是功能去衡量,教材中的方案都可以進行“升級”。
● 教材內置項目方案簡介
高中信息技術必修2模塊的名稱為“信息系統與社會”,模塊的學習目標是讓學生認識信息系統在社會中的作用,并能合理使用信息系統解決生活、學習中的問題。通過動手搭建“室內環境實時監測系統”這一項目,能夠讓學生從中真正理解物聯網系統背后的原理,知道信息系統與外部世界的連接方式,了解常見的傳感與控制機制。
系統功能需求主要包括:①利用智能終端結合相關的傳感器,如溫度傳感器、濕度傳感器、粉塵傳感器、煙霧傳感器等,實時檢測室內環境的各種指標,并上傳到服務器保存在數據庫,供后期分析。②通過Web頁面實時顯示各種傳感器上傳的數據,能根據各種需求直接生成在線實時圖表。③使用者可以對監測系統進行相關的設置,限定溫度、濕度、煙霧等環境因素的臨界值。一旦某項指標超過所限定的臨界值,系統將自動觸發聲光警報,并發送警示信息通知用戶。④能夠通過網絡發送指令,控制相關執行器(如家用電器)自動調節室內環境。
考慮到各地的教學條件和師資的技術水平,教材中的監測系統僅采集了光線、溫度和濕度信息,執行器方面也僅做了聲光警報,并沒有和家用電器進行關聯。
● 教材內置項目方案分析
“室內環境實時監測系統”項目的硬件(智能終端)是micro:bit,物聯網協議采用HTTP協議,編程語言是Python+MicroPython。綜合各地的教師培訓活動和教材實施情況看,一線教師們普遍反映教材的技術難度較高。究其原因,在于智能終端和物聯網協議的選擇并不合理。因為要搭建教材內置的物聯網應用項目,編寫組不得不增加了一些前置的支撐技術,無形中拔高了整本教材的技術難度。
1.對智能終端的分析
最初選擇的智能終端是Arduino。考慮到Ardunio只能支持C/C++語言編寫,編寫組選擇了支持MicroPython的micro:bit。其實這是一種無奈的選擇。首先,micro:bit自身不帶Wi-Fi功能。雖然DFRobot公司開發了物聯網模塊(OBLOQ),用串口轉發的方式來訪問網絡,但是要使用物聯網模塊,學生要先將micro:bit接上擴展板,然后通過杜邦線連接。模塊和micro:bit的接線中,RX和TX引腳要交叉,這一點特別容易出錯。其次,物聯網模塊上沒有顯示屏,出現故障后只能根據板載LED燈的顏色來判斷是否正常連上Wi-Fi。這一聯網過程對學生來說是個“黑盒”,有時很難分析是哪一步出錯了,編程和調試的難度也提高了。另外,micro:bit的內存太小了,如果URL返回的HTML代碼較多,板子就會系統崩潰而重啟。
2.對物聯網協議的分析
物聯網通信協議很多,如AMQP、JMS、REST、HTTP/HTTPS、COAP、MQTT等。2017年前,MQTT還算不上是主流協議。因而,編寫組選擇了HTTP協議。
既然采用了HTTP協議,就必須要先搭建Web服務器,既然要搭建Web服務器,則只好加入了Flask(一個極簡的Python的Web框架)和Sqlite(Python內置的數據庫)的學習內容。牽一發而動全身,這導致了這一模塊涉及的技術很多,門檻就偏高了。尤其是智能終端和Web服務器的連接,常常會因為電腦防火墻干擾而失敗。
如果學生希望將這一系統部署到互聯網上,即能夠通過公網的Web服務器來存儲、中轉數據,技術門檻則會更高。因為,用Flask開發Web應用,需要同時了解前端和后端的網站開發技術,如HTML、JavaScript,技術難度太大了。
● 智能終端的升級思路
2018年是國產開源硬件的元年,各種為教育而設計的開源硬件如雨后春筍般涌現。綜合價格、性能、編程語言和技術難度,筆者提出了兩種替代micro:bit的智能終端升級方案。
升級方案1:采用內置Wi-Fi模塊的智能終端
ESP8266、ESP32等國產芯片是為物聯網而生,基于這類芯片開發的開源硬件是物聯網終端的最好選擇,如掌控板、FireBeetle和光環板等。教材中采用的micro:bit編程軟件BXY,同時支持掌控板的編程,示例代碼不需要做任何修改,就能直接運行在掌控板上。省去接線的過程,項目搭建的技術門檻一下子就降下來了。
掌控板自帶了常見的傳感器和執行器,只要一塊主板,就能完成教材中的基本傳感和控制實驗。用掌控板來連接網絡,過程和手機、電腦聯網幾乎一致。如圖1所示,代碼僅僅6行,就實現了聯網和顯示IP地址的功能。
此外,掌控板支持的幾乎是完整的MicroPython,而micro:bit支持僅僅是簡化版的MicroPython。如掌控板可以用urequest、json等Python上很常見的庫,實現較復雜的功能,而micro:bit是做不到的。
升級方案2:采用運行Linux系統的智能終端
在2017年前,能夠運行Linux系統的智能終端并不多,2018年板載Arduino的虛谷號發布,隨后虛谷物聯項目啟動,SIoT軟件和siot庫相繼推出,用Python開發物聯網應用變得非常方便。2020年pinpong庫發布,讓Python連接開源硬件變得非常簡單,只要數行代碼,就能實現讀取傳感器,控制執行器。
pinpong是基于通用串口通信協議Firmata開發的Python庫。當Python訪問開源硬件時,電腦會給通過串口連接的開源硬件燒錄一個特定的固件,然后借用Firmata實現對硬件的讀寫工作。pinpong兼容各種常見的開源硬件,實現了“一次編寫處處運行”。具體用法請參考本刊2020年12月專題《用Python驅動開源硬件》。
使用pinpong的最大優勢在于,搭建物聯網項目不需要在Python和MicroPython之間來回切換。學生僅僅使用Python代碼,就能完成與智能終端的交互:傳感和控制。在課堂教學中,師生不用再去關心硬件的類型,只需要掌握最基本的引腳電平控制和讀取的語句,利用普通電腦結合任何一款開源硬件,都可以完成引腳電平控制和讀取的實驗,或者搭建出物聯網應用原型。如果想制作一個演示作品,那么把代碼“部署”(復制)到一個卡片電腦上即可。
● 物聯網協議的升級思路
前文已經提及,正是因為選擇了HTTP協議,教材中才不得不加上Flask、SQLite等比較專業的技術。如果教材將HTTP更換為MQTT協議,那么搭建物聯網項目不僅變得簡單,而且功能更加強大。
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議)是一種基于發布/訂閱(Publish/Subscribe)模式的“輕量級”通信協議。MQTT最大的優點在于以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務。目前,MQTT是物聯網協議中應用最廣泛的一種。
采用MQTT協議搭建教材項目,需要借助MQTT服務器(MQTT Broker),系統架構如圖2所示。雖然和借助Web服務器搭建的系統架構并沒有太大的區別,但MQTT服務器是現成的,不需要編寫代碼來搭建,數據庫技術更不需要了解,學生只需要理解MQTT協議的消息發送和訂閱機制,給智能終端編寫相應的代碼即可完成“物物相連”。至于想監視數據或者控制智能終端,可以用Python編寫代碼,保存數據則用CSV文本文件即可。如果還想降低門檻,直接用瀏覽器訪問MQTT服務器的Web管理頁面,也可以用現成的MQTT客戶端工具,如MQTTX。絕大多數的MQTT服務器都自帶了Web管理功能,有些還提供了WebAPI功能,兼容HTTP協議。
在教學中,一般需要在局域網內搭建服務器,所以一鍵部署的SIoT是最好的選擇。如果想部署到公網上,則可以直接借助EasyIoT或者阿里云等免費的MQTT服務器。掌控板、虛谷號、樹莓派等都支持MQTT協議。虛谷號和樹莓派自身還可以運行SIoT軟件,將自己模擬為一個MQTT服務器。至于編程,教學中完全可以使用名為“siot”的MQTT庫,同時支持MicroPython和Python,代碼規范是統一的。(SIoT的下載地址:https://gitee.com/vvlink/SIoT)
當然,選擇MQTT協議最重要的原因并不是為了降低技術門檻,而在于MQTT是當前主流的物聯網開發協議。目前,除了Python和MicroPython外,主流的編程語言如C、C++、C#、GoLang、JavaScript都支持MQTT協議,甚至連Mind+之類的圖形化編程語言都有MQTT擴展庫。借助MQTT協議,用很簡潔的代碼就能搭建出一個物聯網應用。學生不僅可以用MQTT來理解物聯網的核心原理,還能用物聯網技術真實解決一些生活中的難題。
● 建議和結論
綜上所述,若在智能終端和物聯網協議方面進行“升級”,教材中的物聯網項目就會更接地氣,更容易實施。拋開教材本身,對照課標和物聯網技術的發展趨勢,我們也可以得出如下三點建議:①物聯網技術完全有必要進入學生課堂。②物聯網協議應該從HTTP轉向MQTT。③智能終端應該內置Wi-Fi功能。
物聯網協議的選擇和硬件無關,對教材編寫者和教師來說,可能更關心如何在五花八門的硬件中選擇一個合適的智能終端。在筆者看來,如果從當前的硬件和技術來選擇,掌控板、乾坤板之類顯然是最合適的,因為軟硬件成熟,案例豐富。但如果考慮到未來幾年的發展,虛谷號、樹莓派和香蕉派之類的能夠運行Linux系統的卡片電腦可能更適合高中,也就是說用pinpong庫實現物聯網中的傳感和控制功能,因為掌控板的教育定位本來就在小學和初中。
信息技術的發展日新月異,紙質教材無論如何快速迭代,始終會比現實發展“慢一拍”。但是從HTTP到MQTT,恰好處于物聯網技術發展的分水嶺,無論從哪個角度看,都有“升級”的必要。本文雖然針對浙教版教材做分析,但是提出的幾種物聯網實現方案,對其他地區、其他版本的中小學信息技術教材都有參考價值。與時俱進,讓學生動手玩轉真正的物聯網技術,擁抱萬物相連的時代,是每一位信息技術教育工作者努力的方向。