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