羅正華, 魏 歆, 昝一堯(成都大學(xué) 信息科學(xué)與工程學(xué)院, 四川 成都 610106)
物聯(lián)網(wǎng)智能家居利用物聯(lián)網(wǎng)技術(shù)將家庭電子設(shè)備通過中心控制器來實(shí)現(xiàn)互聯(lián)和控制[1].目前,智能家居普遍采用WiFi接入網(wǎng)絡(luò),功耗高,接入也不方便,WiFi信號(hào)覆蓋不完全,因此,智能家居需要一種新型的通信技術(shù)連入網(wǎng)絡(luò).窄帶物聯(lián)網(wǎng)(Narrow band internet of things,NB-IoT)是一種基于蜂窩通信3G/4G演進(jìn)的物聯(lián)網(wǎng)通信技術(shù),工作于專用授權(quán)頻段,主要應(yīng)用于低吞吐量、海量連接的場(chǎng)景,適用于構(gòu)建新一代的智能家居系統(tǒng)[2].
本研究提供了一套基于NB-IoT通信技術(shù)的智能家居控制系統(tǒng).該控制系統(tǒng)利用一個(gè)中心控制器通過NB-IoT通信上傳數(shù)據(jù)及接收指令,以控制模塊為單位來控制多個(gè)被控電器,簡(jiǎn)化連接渠道,通過發(fā)射紅外信號(hào)來控制空調(diào)、電燈等一切帶有紅外控制的被控電器.由于目前大部分電器都內(nèi)置有紅外接收器,所以本控制系統(tǒng)的適應(yīng)性較高,且升級(jí)成本較低.同時(shí),系統(tǒng)采用STM32作為控制器,將多種傳感器采集到的數(shù)據(jù)進(jìn)行處理,通過紅外線完成對(duì)被控電器的操作,實(shí)現(xiàn)了更好的智能家居體驗(yàn).
本研究的智能家居控制系統(tǒng)主要包括NB-IoT通信模塊、STM32控制模塊、服務(wù)器平臺(tái)、智能移動(dòng)終端和被控電器.STM32控制模塊連接有多種傳感器及紅外線發(fā)射器,其串口與NB-IoT通信模塊連接.NB-IoT通信模塊通過基站與服務(wù)器平臺(tái)連接,服務(wù)器平臺(tái)與智能移動(dòng)終端通過網(wǎng)絡(luò)連接.STM32控制模塊上的紅外線發(fā)射器發(fā)送紅外線至被控電器,完成用戶指令.一般情況下,智能移動(dòng)終端被用來實(shí)時(shí)查看傳感器采集的環(huán)境數(shù)據(jù).智能移動(dòng)終端是通過網(wǎng)絡(luò)進(jìn)行訪問的,可隨時(shí)將家庭環(huán)境調(diào)整至理想狀態(tài).圖1為系統(tǒng)的控制流程示意圖.

圖1 系統(tǒng)控制流程示意圖
2.1.1 數(shù)字溫濕度模塊.
DHT11數(shù)字溫濕度模塊具有2種通信方式:標(biāo)準(zhǔn)I2C和單總線.為了便于處理數(shù)字信號(hào),本研究應(yīng)用模糊控制[3],以便增強(qiáng)系統(tǒng)的抗干擾能力,避免因控制算法中參數(shù)漂移和微小錯(cuò)誤而引起系統(tǒng)失控.傳感器數(shù)據(jù)輸出為未編碼的二進(jìn)制數(shù)據(jù), 依次為溫度整數(shù)數(shù)據(jù)、溫度小數(shù)數(shù)據(jù)、濕度整數(shù)數(shù)據(jù)、濕度小數(shù)數(shù)據(jù)和校驗(yàn)和.DHT11硬件電路圖如圖2所示,讀取傳感器某次的數(shù)據(jù)如表1所示.

圖2 DHT11硬件電路圖

表1 DHT11傳感器計(jì)算數(shù)據(jù)
分析表1中的數(shù)據(jù)可知,濕度為46.0%RH,溫度為30.0 ℃,校驗(yàn)和為76.0,校驗(yàn)正確.
2.1.2 顆粒物傳感器.
顆粒物傳感器sds011-pm2.5(見圖3)分辨率高,檢測(cè)顆粒物可達(dá)0.3 μm,且自帶的A/D芯片可以輸出16進(jìn)制數(shù)據(jù),支持上位機(jī)監(jiān)控.實(shí)時(shí)數(shù)據(jù)在服務(wù)器平臺(tái)能以曲線形式展示,方便用戶在實(shí)時(shí)監(jiān)控中做出對(duì)空氣凈化器的命令操作.

圖3 傳感器sds011-pm2.5
根據(jù)pm2.5不可突變的特性,本系統(tǒng)使用了移動(dòng)平均濾波算法.設(shè)短時(shí)間的連續(xù)數(shù)據(jù)是一個(gè)長(zhǎng)度為n的隊(duì)列,刪除隊(duì)列的頭部,將新測(cè)量的數(shù)據(jù)作為隊(duì)列的結(jié)尾插入該隊(duì)列.隊(duì)列的長(zhǎng)度在樣本中為n,每個(gè)數(shù)據(jù)記為xi,則最終采樣值U為,
(1)
本研究在上述算法的基礎(chǔ)上進(jìn)行限幅,根據(jù)上一個(gè)隊(duì)列中n個(gè)數(shù)據(jù)的離散程度,確定下一個(gè)數(shù)據(jù)加入隊(duì)列的限幅值L.如果超過限幅值,使用本次采集值代替此限幅的最值,如果未超過限幅值,則按照未限幅的值加入原始隊(duì)列,

(2)
(3)

2.2.1 紅外發(fā)射器.
本研究發(fā)射裝置采用的是紅外發(fā)射器,發(fā)射器下有一個(gè)由步進(jìn)電機(jī)控制的可180°旋轉(zhuǎn)的旋轉(zhuǎn)臺(tái),發(fā)射時(shí)可由電機(jī)帶動(dòng)紅外模塊旋轉(zhuǎn),因此紅外模塊覆蓋范圍可從30°擴(kuò)大到360°.
將紅外遙控編碼信號(hào)調(diào)制至38 kHz后再發(fā)送出去,明顯減小了數(shù)據(jù)傳輸?shù)恼`碼率.在測(cè)試過程中,本研究減小發(fā)射角度,將發(fā)射角度設(shè)置成±15°,有效角度為30°,同時(shí)增強(qiáng)峰值電流Ip,提高了系統(tǒng)性能,有效地增加了紅外線的發(fā)射距離.圖4為紅外線發(fā)射電路圖,圖5為具體代碼.

圖4 紅外線發(fā)射電路圖
2.2.2 紅外線協(xié)議.
本研究采用了NEC傳輸協(xié)議,從NEC的32 bit傳輸碼的開端開始傳輸,最開始傳輸引導(dǎo)碼,暫停4.5 ms,進(jìn)行低電平顯示,然后開始傳輸數(shù)據(jù).根據(jù)NEC碼發(fā)送時(shí)間恒定的特征,8 bit的數(shù)據(jù)位和8 bit的地址位分別被發(fā)送2次,第2次發(fā)送的數(shù)據(jù)就是第1次數(shù)據(jù)的“每位取反”.“0"的位時(shí)間是1.125 ms,“1"的位時(shí)間是2.5 ms[4].
傳輸命令可用8 bit數(shù)據(jù)位,識(shí)別待控制的設(shè)備可用8 bit地址位.在測(cè)試過程中,由于對(duì)傳輸碼的可靠性要求低,故取消反碼校驗(yàn),將數(shù)據(jù)位和地址位均擴(kuò)展8 bit,從而可以發(fā)送更多的數(shù)據(jù).
2.2.3 旋轉(zhuǎn)部件.
紅外發(fā)射器有一個(gè)由步進(jìn)電機(jī)控制的旋轉(zhuǎn)臺(tái),旋轉(zhuǎn)部件選用兩相四線混合式的42步進(jìn)電機(jī).通過對(duì)電機(jī)驅(qū)動(dòng)模塊的控制,直接控制電機(jī)的正轉(zhuǎn)與反轉(zhuǎn),從而控制旋轉(zhuǎn)臺(tái)的偏轉(zhuǎn).測(cè)試過程中,當(dāng)步進(jìn)電機(jī)突然急?;蚯袚Q方向時(shí),會(huì)產(chǎn)生反向電流.因此在電路中加入續(xù)流二極管,能有效地保護(hù)芯片不被反向電流擊穿.人為設(shè)置旋轉(zhuǎn)角度,可以控制電機(jī)旋轉(zhuǎn)轉(zhuǎn)數(shù).其驅(qū)動(dòng)模塊電路如圖6所示.

圖5 紅外信號(hào)具體代碼

圖6 電機(jī)驅(qū)動(dòng)模塊電路
2.3.1 profile文件編寫
本研究在中國(guó)電信開發(fā)者平臺(tái)上,利用profile文件用來描述智能家居設(shè)備的類型和服務(wù)能力.
如圖7所示,devicetype-capability.json程序描述的是智能家居設(shè)備的能力特征,包括廠商(manufacturerName)、型號(hào)(model)、協(xié)議類型(protocolType)、設(shè)備類型(deviceType)及提供的服務(wù)類型(serviceType)[5].
服務(wù)器平臺(tái)調(diào)用編寫的編解碼插件,實(shí)現(xiàn)二進(jìn)制消息轉(zhuǎn)json格式的功能,從而完成服務(wù)器平臺(tái)和智能移動(dòng)終端之間命令下發(fā)和數(shù)據(jù)上報(bào)的雙向通信,對(duì)智能家居設(shè)備進(jìn)行高效且可視化的管理.
為了增強(qiáng)加密性,本研究完成開發(fā)編解碼插件后,對(duì)插件包進(jìn)行簽名,并通過下載離線簽名工具完成簽名操作,生成公私密鑰文件,通過數(shù)字簽名對(duì)軟件包驗(yàn)證,注冊(cè)設(shè)備上線.

圖7 profile文件
2.3.2 上行消息傳遞.
傳遞上行消息時(shí),先采集智能家居設(shè)備的數(shù)據(jù),將數(shù)據(jù)編碼后以AT命令形式發(fā)送至NB-IoT通信模塊[5].NB-IoT通信模塊接收到AT命令后,把命令封裝為CoAP協(xié)議的消息,然后發(fā)送到服務(wù)器平臺(tái).服務(wù)器平臺(tái)收到數(shù)據(jù)后,自動(dòng)解析CoAP協(xié)議包,根據(jù)智能家居設(shè)備的profile文件,通過編解碼插件,將數(shù)據(jù)解析為智能家居設(shè)備profile文件中的json數(shù)據(jù),存儲(chǔ)在服務(wù)器平臺(tái)上,然后傳輸?shù)街悄芤苿?dòng)終端.
2.3.3 下行數(shù)據(jù)傳遞.
傳遞下行數(shù)據(jù)時(shí),從智能移動(dòng)終端發(fā)出命令,如果服務(wù)器平臺(tái)檢測(cè)到智能家居設(shè)備在線,則立即下發(fā)命令,否則將命令緩存到服務(wù)器平臺(tái)的數(shù)據(jù)庫(kù)中,等待智能家居設(shè)備在某時(shí)刻上報(bào)數(shù)據(jù),檢索對(duì)應(yīng)智能家居設(shè)備在數(shù)據(jù)庫(kù)中是否存在有效而未下發(fā)的命令,如有,則下發(fā)該命令.命令通過編解碼插件進(jìn)行編碼,發(fā)送到智能家居設(shè)備.智能家居設(shè)備執(zhí)行命令,并返回執(zhí)行結(jié)果至服務(wù)器平臺(tái)[5].根據(jù)命令執(zhí)行結(jié)果,服務(wù)器平臺(tái)更新對(duì)應(yīng)的命令狀態(tài).圖8為數(shù)據(jù)下行流程圖.

圖8 下行數(shù)據(jù)流程圖
在智能手機(jī)上的應(yīng)用程序(Application,APP)能實(shí)現(xiàn)以下功能:搜索同一局域網(wǎng)內(nèi)的智能設(shè)備;控制室內(nèi)燈光開關(guān),調(diào)節(jié)光照強(qiáng)度;定時(shí)功能;通過紅外發(fā)射器控制投影儀、窗簾及電視等設(shè)備[6];溫度顯示功能;場(chǎng)景設(shè)定功能.
模擬測(cè)試在中國(guó)電信的開發(fā)者平臺(tái)上進(jìn)行,默認(rèn)設(shè)置延時(shí)為10 s,采用16進(jìn)制碼流進(jìn)行傳輸,完成數(shù)據(jù)上報(bào)(見圖9(a))和數(shù)據(jù)接收(見圖9(b))的預(yù)定操作,編解碼插件處理上報(bào)的16進(jìn)制碼流后,返回指令至服務(wù)器平臺(tái),平臺(tái)將接收到的數(shù)據(jù)解析并顯示.
智能家居是典型的物聯(lián)網(wǎng)應(yīng)用場(chǎng)景, 本研究利用NB-IoT技術(shù)實(shí)現(xiàn)了對(duì)目標(biāo)家居設(shè)備的控制,為進(jìn)一步構(gòu)建智慧城市提供了一定的技術(shù)支撐.后續(xù)的研究工作將通過控制更多的家居來提升系統(tǒng)的實(shí)用性和可操作性,以充分發(fā)揮NB-IoT技術(shù)的優(yōu)勢(shì).

圖9 數(shù)據(jù)上報(bào)與接收日志