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