王維濤 鄭芳
摘要:以局域網作為物聯網教學環境,集成物聯網絡消息處理服務、物聯網軟件開發環境、單板計算機及微處理器控制開發板物聯網開發硬件,完成物聯網消息協議、物聯網開發編程語言、傳感器數據采集等教學內容。
信息社會物聯網無處不在。其在現代農業工業、交通運輸、生物醫療、智慧城市等各領域應用廣泛。本文以物聯網體系工作框架,給出物聯網教學實踐的基本環境及方法。
目前物聯網的體系工作框架由底層至高層分為:設備層、網絡層、平臺層、應用層。設備層包括:傳感器、通信模組、感知類智能設備及執行裝置;網絡層包括:通信運營商的2G、3G、4G、5G網絡,局域網的WiFi、、ZigBee、LPWAN(LoRa、SigFox、NB-Iot)等;平臺層包括:接入管理、設備管理、消息處理、數據處理、機器學習等;應用層包括:各應用領域App及服務軟件。
物聯網教學實踐環境,以局域網為基礎,以教學內容為原則,簡化體系結構,實現物聯網教學實操環境。
在局域網中,我們可以合并應用層、平臺層,以微型計算機(PC)、單板計算機(SBC)構成,軟件選用開源軟件,主要服務軟件是Mosquitto,實現物聯網絡消息處理服務(MQTT),采用Node.js、Node-RED(JavaScript)、SQLite、Python(MicroPython)實現物聯網開發環境(SDK)。
MQTT消息隊列遙測傳輸是物聯網OASIS標準消息傳遞協議,是非常輕量級的發布/訂閱消息傳輸協議。MQTT協議工作在 TCP/IP協議族之上,非常適合低性能硬件及低帶寬網絡,連接控制遠程硬件系統。
Mosquitto是Eclipse基金會實現MQTT V5.0、V3.1.1、V3.1版本協議的服務器軟件,適合安裝在低功耗的單板計算機、微型計算機、服務器上使用。我們既可以把它安裝在流行的樹莓派(Raspberry Pi 3 B+)Raspberry Pi OS系統的SBC機上,也可以把它安裝在Windows 10系統的PC機上運行。MQTT服務器在局域網內,可使用用戶/密碼方式保證安全。
在局域網中,移動設備、嵌入式系統、各類傳感器開發板,以相應接入方式接入網絡,客戶端可采用命令方式、圖形界面、編程方式與服務端處理消息。
在設備層面,我們使用構建在Node.js之上,事件驅動、低代碼量編程的 Node-RED (https://nodered.org/)和面向微處理器控制開發板的 MicroPython 語言進行編程開發;如需大量數據處理,選用SQLite數據庫。
Node-RED是基于流程的可視化編程工具,以瀏覽器作為編輯界面,使用系統提供的各類功能節點。在Node-RED節點編輯框中,可以設置參數和使用JavaScript語言及函數,完成消息處理及硬件系統控制。MicroPython是兼容Python 3的子集,優化設計,運行在微處理器、微控制器、嵌入式系統上,主要使用在連接傳感器及執行控制器的開發板系統中。單板計算機樹莓派的Raspberry Pi OS(https://www.raspberrypi.org/software/)系統,集成Node-RED、Python、Thonny環境,給學習實踐帶來諸多便利。連接傳感器及執行控制器的開發板系統,我們使用ESP8266、ESP32(https://www.espressif.com/)這類高性價比開發板,既可使用樹莓派(Thonny IDE-Raspberry Pi)的集成環境,也可以使用Windows10系統的Thonny IED版本或其它開發環境(ThonnyIDE-Linux、Thonny IDE-Mac OS X、Arduino IDE等)進行學習。
網絡消息處理協議MQTT的學習
網絡消息處理原理學習,是理解物聯網運行的基礎。MQTT技術文檔給出的協議通信規則及數據幀結構,學習者需要在實際網絡中加以理解。Windows10系統安裝設置好Mosquitto服務器后,局域網中的其它計算機或硬件設備作為客戶端,和服務器即可建立起消息通信機制。我們使用開源軟件Wireshark網絡協議分析器,抓取網絡通信數據包,進行直觀分析學習。圖一是局域網中抓取的數據幀截圖,圖中給出服務端192.168.0.114與客戶端192.168.0.110的消息通信過程。
物聯網編程過程學習
在局域網中,我們使用樹莓派(Raspberry Pi)、Windows 10 PC機、智能移動設備(手機)說明學習過程。圖二是消息發布/訂閱示意圖。
Mosquitto服務器在Windows10 PC(192.168.0.114)機上運行,在樹莓派(192.168.0.105)上運行Node-RED,使用局域網中的計算機瀏覽器訪問樹莓派192.168.0.105:1880端口(可設置用戶/密碼訪問權限),打開Node-RED編輯界面,通過編輯界面左側節點版面,拖拽所需若干功能節點到編輯界面中部編輯區,經設置參數及使用JavaScript語言、函數,連接各節點完成所需編程要求。圖三是模擬傳感器數據輸入,經Mosquitto服務器發布消息,通過Mosquitto服務器,設置樹莓派GPIO26(PIN37)腳位輸出值。可以在智能移動設備(手機)安裝設置MQTT Dash App(https://play.google.com/store/apps/details?id=net.routix.mqttdash&hl=en_IN?=US),使用開源軟件實現消息的訂閱/發布及可視化顯示控制。
總之,物聯網實踐教學環境,是物聯網教學的必備的實操教學平臺,對于理解物聯網工作原理、物聯網消息發布訂閱,物聯網遠端數據采集及執行控制,十分必要。隨著物聯網技術的不斷發展,網絡的可視化及可視化控制,也必將大量應用到實際工作環境中。
作者簡介:
王維濤(1964.7),男,漢族,河北石家莊,高級工程師,研究方向:計算機通信及物聯網。