孫彥景,馮甜欣,李 松,陳 巖,蘆楠楠,云 霄,刑天琳
(中國礦業(yè)大學(xué) 信息與控制工程學(xué)院,江蘇 徐州 221116)
在移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等技術(shù)迅速發(fā)展的背景下,萬物互連已成為時(shí)代發(fā)展的必然趨勢(shì)[1-2]。物聯(lián)網(wǎng)應(yīng)用涉及嵌入式系統(tǒng)開發(fā)、計(jì)算機(jī)網(wǎng)絡(luò)、無線通信、云計(jì)算等多種專業(yè)知識(shí),具有很強(qiáng)的綜合性與系統(tǒng)性。窄帶物聯(lián)網(wǎng)(narrow band internet of things,NB-IoT)作為一種新興的物聯(lián)網(wǎng)技術(shù)[3-4],具有強(qiáng)連接、廣覆蓋、低功耗、低成本等特點(diǎn),在感知監(jiān)測(cè)場(chǎng)景中具有巨大優(yōu)勢(shì)[5-6]。本文基于NB-IoT、嵌入式系統(tǒng)、網(wǎng)絡(luò)傳輸、數(shù)據(jù)庫處理及數(shù)據(jù)可視化等技術(shù),設(shè)計(jì)了一個(gè)低速率監(jiān)測(cè)物聯(lián)網(wǎng)應(yīng)用實(shí)驗(yàn)系統(tǒng)[7-9]。系統(tǒng)包括數(shù)據(jù)采集節(jié)點(diǎn)、云端數(shù)據(jù)庫、顯示終端等模塊以及負(fù)責(zé)各模塊間數(shù)據(jù)交互的控制程序,能夠?qū)崟r(shí)感知環(huán)境數(shù)據(jù),并進(jìn)行上傳、推送、存儲(chǔ),通過終端在線顯示。該實(shí)驗(yàn)系統(tǒng)有助于通過實(shí)驗(yàn)環(huán)節(jié)幫助學(xué)生快速理解物聯(lián)網(wǎng)的框架結(jié)構(gòu),增強(qiáng)學(xué)生理解所學(xué)專業(yè)課程之間的關(guān)聯(lián)性,并培養(yǎng)電子信息類學(xué)生面向?qū)嶋H場(chǎng)景進(jìn)行物聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)的能力。
根據(jù)監(jiān)測(cè)物聯(lián)網(wǎng)應(yīng)用的場(chǎng)景需求,對(duì)系統(tǒng)結(jié)構(gòu)進(jìn)行分析后,確定了系統(tǒng)的硬件結(jié)構(gòu)和軟件組成。將實(shí)驗(yàn)系統(tǒng)根據(jù)功能劃分為以下部分:具有感知功能的傳感器設(shè)備,定位標(biāo)記的定位模塊,接入NB-IoT 網(wǎng)絡(luò)的NB-IoT 模組,控制數(shù)據(jù)上傳的MCU 和控制程序,接收數(shù)據(jù)的云端服務(wù)器,顯示監(jiān)測(cè)結(jié)果的數(shù)據(jù)可視化顯示程序。實(shí)驗(yàn)系統(tǒng)具體數(shù)據(jù)傳遞流程如下:首先通過NB-IoT 模組接入NB-IoT 網(wǎng)絡(luò),數(shù)據(jù)采集節(jié)點(diǎn)感知環(huán)境數(shù)據(jù)后,由控制程序?qū)?shù)據(jù)上傳至云端服務(wù)器,并通過終端程序?qū)⒔Y(jié)果展示給用戶。圖1 為設(shè)計(jì)的實(shí)驗(yàn)系統(tǒng)框架。
NB-IoT 是一種新興的物聯(lián)網(wǎng)標(biāo)準(zhǔn)。NB-IoT 構(gòu)建于蜂窩網(wǎng)絡(luò),帶寬消耗約180 kHz,可直接在現(xiàn)有的2/3/4G 網(wǎng)絡(luò)上實(shí)現(xiàn)網(wǎng)絡(luò)復(fù)用,降低部署成本。NB-IoT屬于低功耗廣域網(wǎng)(low power wide area net,LPWAN),具有以下特點(diǎn):一是更強(qiáng)的覆蓋能力,與傳統(tǒng)的GPRS 網(wǎng)絡(luò)相比,NB-IoT 可以提高100 倍的網(wǎng)絡(luò)覆蓋能力;二是更強(qiáng)的連接能力,NB-IoT 對(duì)網(wǎng)絡(luò)架構(gòu)進(jìn)行優(yōu)化,單個(gè)扇區(qū)可以達(dá)到十萬級(jí)的設(shè)備連接能力;三是更低的功耗,NB-IoT 終端最高可以維持10a的正常通信周期,顯著的降低了設(shè)備的部署頻率;四是更低的模塊成本,目前單個(gè)連接模塊的成本已低于5 美元?;谝陨蟽?yōu)勢(shì),NB-IoT 非常適合未來大規(guī)模覆蓋的物聯(lián)網(wǎng)場(chǎng)景[10-11]。
物聯(lián)網(wǎng)應(yīng)用的實(shí)際場(chǎng)景中通常需要部署大量節(jié)點(diǎn),為了方便地對(duì)這些節(jié)點(diǎn)進(jìn)行管理,需要將物理設(shè)備映射到云端,通常為物聯(lián)網(wǎng)云平臺(tái)。由于NB-IoT網(wǎng)絡(luò)基于LTE 網(wǎng)絡(luò)升級(jí),其映射關(guān)系通過NB-IoT 模組嵌入的SIM 物聯(lián)卡所承載。本實(shí)驗(yàn)選用的物聯(lián)網(wǎng)云平臺(tái)為中國移動(dòng)ONENET 平臺(tái),ONENET 是一種PaaS物聯(lián)網(wǎng)開放平臺(tái),提供了多種協(xié)議接入的API,可以為物聯(lián)網(wǎng)硬件提供從設(shè)備接入到產(chǎn)品部署的開發(fā)環(huán)境[12]。
對(duì)面向監(jiān)測(cè)物聯(lián)網(wǎng)應(yīng)用的電子信息系統(tǒng)而言,系統(tǒng)的硬件結(jié)構(gòu)決定了軟件的開發(fā)效率,軟件的合理部署有助于充分發(fā)揮硬件的功能。本實(shí)驗(yàn)通過硬件平臺(tái)搭建與軟件結(jié)構(gòu)分析,鍛煉學(xué)生系統(tǒng)分析與設(shè)計(jì)的能力,幫助學(xué)生理解物聯(lián)網(wǎng)應(yīng)用的框架結(jié)構(gòu)以及開發(fā)流程。
基于實(shí)驗(yàn)的通用性與可擴(kuò)展性,實(shí)驗(yàn)系統(tǒng)的硬件主要包括MCU 主控模塊、NB-IoT 模組、傳感模塊和定位模塊等。
(1)主控模塊負(fù)責(zé)整體硬件設(shè)備的運(yùn)行流程,包括設(shè)備上線控制、數(shù)據(jù)自動(dòng)采集、數(shù)據(jù)交互邏輯等,本文采用STM32 作為微處理器,STM32 功能強(qiáng)大且具有豐富的接口,方便進(jìn)行擴(kuò)展。
(2)NB-IoT 模組用于接入NB-IoT 網(wǎng)絡(luò),同時(shí)將數(shù)據(jù)上傳至云平臺(tái),實(shí)驗(yàn)中選用SIM7000C 模組,并通過串口模塊與STM32 相連,進(jìn)行數(shù)據(jù)交互。
(3)傳感模塊負(fù)責(zé)感知監(jiān)測(cè)環(huán)境數(shù)據(jù),選擇常用的溫濕度傳感器,通過STM32 驅(qū)動(dòng)控制程序進(jìn)行數(shù)據(jù)采集。
(4)定位模塊選擇GPS 模塊,通過NB-IoT 模組進(jìn)行終端節(jié)點(diǎn)定位。
系統(tǒng)硬件模塊結(jié)構(gòu)如圖2 所示。
圖2 系統(tǒng)硬件模塊結(jié)構(gòu)圖
為了提高學(xué)生的邏輯思維能力,根據(jù)圖1 的軟件結(jié)構(gòu),將實(shí)驗(yàn)系統(tǒng)分為3 個(gè)層次,自下而上分別是設(shè)備域、平臺(tái)域、應(yīng)用域。
設(shè)備域主要為系統(tǒng)的硬件模塊,以及用于控制硬件運(yùn)行的數(shù)據(jù)采集上傳程序;平臺(tái)域?yàn)樵贫朔?wù)器,以及將數(shù)據(jù)轉(zhuǎn)存到私有數(shù)據(jù)庫的數(shù)據(jù)推送程序;應(yīng)用域?yàn)榻K端顯示設(shè)備,以及用于人機(jī)交互的可視化顯示程序。
圖3 展示了系統(tǒng)的軟件結(jié)構(gòu),下面分別給出每層的軟件程序設(shè)計(jì),方便學(xué)生根據(jù)模塊進(jìn)行實(shí)驗(yàn)程序編寫與完善。
3.2.1 數(shù)據(jù)采集上傳程序
數(shù)據(jù)采集上傳程序控制傳感設(shè)備感知環(huán)境數(shù)據(jù),同時(shí)控制NB-IoT 模組接入網(wǎng)絡(luò)后將數(shù)據(jù)上傳至云端數(shù)據(jù)庫。
圖4 展示了數(shù)據(jù)采集上傳程序的工作流程。首先STM32 通過GPIO 接口驅(qū)動(dòng)溫濕度傳感器采集數(shù)據(jù),并通過串口模塊與NB-IoT 模組完成數(shù)據(jù)交互,之后模組將數(shù)據(jù)封裝到指定字段,通過notify 上傳指令發(fā)送給基站,完成數(shù)據(jù)上報(bào)。
圖3 系統(tǒng)軟件結(jié)構(gòu)
圖4 數(shù)據(jù)采集上傳程序工作流程
模組通過創(chuàng)建對(duì)象來區(qū)分不同種類的傳感設(shè)備,通過添加屬性對(duì)數(shù)據(jù)的特征值進(jìn)行管理。圖5 為模組注冊(cè)成功后設(shè)備管理界面。圖6 為云平臺(tái)接收到上傳數(shù)據(jù)時(shí)的界面。
圖5 設(shè)備管理界面
圖6 數(shù)據(jù)上傳界面
3.2.2 數(shù)據(jù)推送程序
數(shù)據(jù)推送程序?qū)⑸蟼鞯臄?shù)據(jù)轉(zhuǎn)存到本地私有數(shù)據(jù)庫,以供顯示終端使用。
數(shù)據(jù)推送程序通過HTTP 協(xié)議實(shí)現(xiàn),首先云平臺(tái)向私有數(shù)據(jù)庫發(fā)送HTTP GET,請(qǐng)求進(jìn)行token 驗(yàn)證,驗(yàn)證一致后,返回msg 的值,表示連接成功;之后云平臺(tái)通過HTTP POST 請(qǐng)求向私有數(shù)據(jù)庫的URL 地址推送上傳的數(shù)據(jù)。圖7 為數(shù)據(jù)推送程序的實(shí)現(xiàn)流程。
圖7 數(shù)據(jù)傳輸流程
數(shù)據(jù)推送的數(shù)據(jù)格式為json 字符串,置于HTTP請(qǐng)求的body 部分。各字段定義見表1,type 為數(shù)據(jù)類型;dev_id 為設(shè)備ID,作為設(shè)備的唯一標(biāo)識(shí);ds_id是數(shù)據(jù)流ID,對(duì)應(yīng)一個(gè)傳感器對(duì)象;value 為設(shè)備上傳或觸發(fā)的數(shù)據(jù);at 為平臺(tái)時(shí)間戳,單位ms。
表1 數(shù)據(jù)推送json 字符串格式
3.2.3 數(shù)據(jù)可視化顯示程序
數(shù)據(jù)可視化顯示程序通過動(dòng)態(tài)的圖表顯示監(jiān)測(cè)的數(shù)據(jù),針對(duì)感知監(jiān)測(cè)的場(chǎng)景需求,實(shí)現(xiàn)的功能有顯示檢測(cè)節(jié)點(diǎn)位置并進(jìn)行標(biāo)注、動(dòng)態(tài)更新實(shí)時(shí)數(shù)據(jù)、顯示歷史數(shù)據(jù)以及異常警告等。
實(shí)驗(yàn)采用WEB 應(yīng)用程序進(jìn)行數(shù)據(jù)的可視化顯示,使用HTML 作為WEB 程序的編程語言,可以通過擴(kuò)展控件滿足功能設(shè)計(jì)差異化的需求。本文通過Ajax技術(shù)動(dòng)態(tài)獲取后臺(tái)數(shù)據(jù),調(diào)用百度地圖API 進(jìn)行位置標(biāo)記,通過ECharts 圖表進(jìn)行數(shù)據(jù)的可視化顯示[13]。
圖8 為實(shí)驗(yàn)設(shè)計(jì)的一個(gè)數(shù)據(jù)采集節(jié)點(diǎn)。
圖8 監(jiān)測(cè)節(jié)點(diǎn)
圖9 為顯示采集數(shù)據(jù)的可視化感知監(jiān)測(cè)管理終端。其中第Ⅰ部分為節(jié)點(diǎn)定位標(biāo)記界面,能夠?qū)?shù)據(jù)采集節(jié)點(diǎn)的位置信息進(jìn)行標(biāo)記,點(diǎn)擊后能夠顯示經(jīng)度、緯度、海拔等詳細(xì)信息;第Ⅱ部分為歷史數(shù)據(jù)展示界面,通過雙Y軸動(dòng)態(tài)顯示歷史的溫度和相對(duì)濕度數(shù)據(jù),實(shí)現(xiàn)監(jiān)測(cè)功能;第Ⅲ部分為實(shí)時(shí)溫度顯示界面;第Ⅳ部分為相對(duì)濕度顯示界面,能夠通過儀表盤動(dòng)態(tài)更新實(shí)時(shí)數(shù)據(jù)。
圖9 NB-IoT 感知監(jiān)測(cè)管理終端
系統(tǒng)還實(shí)現(xiàn)了異常數(shù)據(jù)警告功能,當(dāng)監(jiān)測(cè)的數(shù)據(jù)觸發(fā)設(shè)置的閾值時(shí),節(jié)點(diǎn)會(huì)進(jìn)行彈窗提醒。圖10 為異常數(shù)據(jù)的警告界面。經(jīng)實(shí)驗(yàn)測(cè)試,系統(tǒng)運(yùn)行穩(wěn)定。
圖10 異常數(shù)據(jù)警告界面
為了啟發(fā)學(xué)生通過所學(xué)知識(shí)來解決遇到的實(shí)際工程應(yīng)用問題,本文綜合電子信息類專業(yè)多門課程知識(shí),面向感知監(jiān)測(cè)物聯(lián)網(wǎng)場(chǎng)景,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于NB-IoT 的低速率監(jiān)測(cè)物聯(lián)網(wǎng)應(yīng)用實(shí)驗(yàn)系統(tǒng),實(shí)現(xiàn)了節(jié)點(diǎn)位置標(biāo)記顯示、動(dòng)態(tài)更新歷史數(shù)據(jù)、顯示實(shí)時(shí)數(shù)據(jù)及異常數(shù)據(jù)警告等功能。通過硬件平臺(tái)搭建和軟件結(jié)構(gòu)分析,不僅能夠鍛煉學(xué)生的系統(tǒng)分析能力和設(shè)計(jì)能力,培養(yǎng)學(xué)生工程素養(yǎng),同時(shí)還將理論與實(shí)踐相結(jié)合,增強(qiáng)學(xué)生理解電子信息工程專業(yè)課程間的關(guān)聯(lián)知識(shí)體系。