任克強(qiáng),王傳強(qiáng)
(江西理工大學(xué) 信息工程學(xué)院,江西 贛州 341000)
物聯(lián)網(wǎng)技術(shù)作為信息科技產(chǎn)業(yè)的第三次革命,在傳感器技術(shù)和嵌入式技術(shù)的支撐下,以其易于結(jié)合、容錯(cuò)率高、易于部署、易于增減傳感器節(jié)點(diǎn)、執(zhí)行效率和速率高等技術(shù)優(yōu)勢[1-2],已經(jīng)應(yīng)用在智能家居等諸多領(lǐng)域[3-7]。本文將物聯(lián)網(wǎng)用于智能監(jiān)控領(lǐng)域,用以解決室內(nèi)多點(diǎn)數(shù)據(jù)采集與智能監(jiān)控問題。
目前用于家庭的物聯(lián)網(wǎng)控制系統(tǒng)的功能比較單一,大部分都是人為發(fā)布指令被動(dòng)的控制系統(tǒng),無法根據(jù)采集的數(shù)據(jù)主動(dòng)控制,而且必須是在網(wǎng)絡(luò)連接正常的前提下,一旦斷網(wǎng),將無法控制系統(tǒng)工作,無法實(shí)時(shí)監(jiān)測家庭安全狀況??梢娔壳暗闹悄芸刂葡到y(tǒng)有自身的局限性,不適合所有家庭的使用。
本文設(shè)計(jì)了一種將智能監(jiān)控與物聯(lián)網(wǎng)相結(jié)合并加入萬年歷顯示功能的室內(nèi)數(shù)據(jù)采集與監(jiān)控系統(tǒng),通過WIFI和LORA進(jìn)行組網(wǎng)[8-9],實(shí)現(xiàn)對(duì)數(shù)據(jù)的采集、上傳、顯示和設(shè)備的控制,同時(shí)獲取網(wǎng)絡(luò)時(shí)間或者本地時(shí)間,用于萬年歷走時(shí)。整個(gè)系統(tǒng)并不完全依賴于互聯(lián)網(wǎng),在網(wǎng)絡(luò)斷開的情況下,系統(tǒng)將通過LORA模塊組網(wǎng)通信,主控制器自動(dòng)完成數(shù)據(jù)采集與控制,并自動(dòng)切換時(shí)間獲取通道,讀取時(shí)鐘芯片時(shí)間數(shù)據(jù),但數(shù)據(jù)將無法上傳到云服務(wù)器。無論何種狀態(tài)下,系統(tǒng)都將異常數(shù)據(jù)保存到FLASH,便于查詢和分析。
整個(gè)系統(tǒng)拓?fù)浣Y(jié)構(gòu)如圖1所示。目前市場上的智能控制系統(tǒng)大部分都是采用一對(duì)一的模式,本文設(shè)計(jì)采用了一對(duì)多和多對(duì)多的模式,即一個(gè)主控制器可以控制多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)可以控制多個(gè)傳感器和設(shè)備。可實(shí)現(xiàn)節(jié)點(diǎn)與傳感器大規(guī)模的部署。
整個(gè)數(shù)據(jù)采集監(jiān)控系統(tǒng)主要由總控制端、數(shù)據(jù)采集端和云服務(wù)器端組成。本設(shè)計(jì)的重點(diǎn)在于實(shí)現(xiàn)云下與云下設(shè)備、云上與云下設(shè)備的互聯(lián)互通。如圖1所示,每個(gè)節(jié)點(diǎn)都集成一塊處理器,用來處理傳感器采集的數(shù)據(jù)和下發(fā)指令到控制器件。從節(jié)點(diǎn)和主控制器節(jié)點(diǎn)之間通過LORA組網(wǎng),實(shí)現(xiàn)廣播監(jiān)聽的連接模式,通過LORA協(xié)議和自定義的數(shù)據(jù)傳輸格式,可準(zhǔn)確實(shí)現(xiàn)數(shù)據(jù)的采集和控制指令的下發(fā),協(xié)議只需配置一次將自動(dòng)保存到FLASH,開機(jī)自動(dòng)讀取配置信息。主控制器和云上設(shè)備通過Internet網(wǎng)絡(luò)實(shí)現(xiàn)了數(shù)據(jù)間的上傳和下發(fā),主控制器定時(shí)發(fā)送心跳包到云端設(shè)備,云上設(shè)備可以實(shí)時(shí)監(jiān)測主控制器的連接狀態(tài),具有斷網(wǎng)自動(dòng)連接云上設(shè)備的功能。
圖1 系統(tǒng)拓?fù)浣Y(jié)構(gòu)
本系統(tǒng)硬件設(shè)計(jì)以Cortex-M3內(nèi)核的STM32F103為核心處理器,外圍配備電源電路、無線通信設(shè)備、顯示設(shè)備、傳感器和控制器等,實(shí)現(xiàn)了數(shù)據(jù)的采集、上傳、控制和時(shí)間獲取等功能。其中時(shí)間數(shù)據(jù)不僅用來作為萬年歷時(shí)間,也作為整個(gè)系統(tǒng)的時(shí)基信號(hào),記錄異常數(shù)據(jù)的時(shí)間并存儲(chǔ)到本地的FLASH中。系統(tǒng)的硬件框圖如圖2所示。
圖2 系統(tǒng)硬件框圖
處理器:Cortex-M3內(nèi)核的STM32F103處理器,時(shí)鐘頻率可達(dá)72 MHz,屬于ARMv7的架構(gòu),具有較為豐富的外設(shè)接口,可以滿足多個(gè)傳感器接入的需求[10-12],具有先進(jìn)的體系和架構(gòu),滿足本系統(tǒng)對(duì)處理器的需求。
電源電路:整個(gè)系統(tǒng)需要用到+3.3,+5,+9 V多種不同的電源。因此采用+12 V電壓輸入,再經(jīng)過穩(wěn)壓電路,將+12 V電壓穩(wěn)壓在+3.3,+5,+9 V。
無線通信設(shè)備:本文中無線通信設(shè)備用到了WIFI模塊和LORA模塊。WIFI模塊內(nèi)置無線網(wǎng)絡(luò)協(xié)議IEEE802.11b.g.n以及TCP/IP協(xié)議,利用相關(guān)API,可輕松入網(wǎng)。LORA是一種局域網(wǎng)無線標(biāo)準(zhǔn),具有使用功耗低、傳輸距離遠(yuǎn)、多種通信方式可選擇等特點(diǎn)。LORA通過擴(kuò)頻通信技術(shù)增加信號(hào)帶寬降低對(duì)信噪比的要求,提高抗干擾能力,通過RF射頻技術(shù)和LoRaWAN技術(shù)進(jìn)行數(shù)據(jù)傳輸,使得數(shù)據(jù)傳輸距離更遠(yuǎn),可達(dá)3 000 m以上,可以滿足數(shù)據(jù)在室內(nèi)傳輸?shù)男枨?。本設(shè)計(jì)選用廣播監(jiān)聽的傳輸模式進(jìn)行數(shù)據(jù)傳輸。
傳感器與控制設(shè)備:可選用不同類型的傳感器和控制器件,以滿足不同環(huán)境下的需求,也可以根據(jù)需要增加和減少傳感器和控制器件的數(shù)量。比如,可將溫濕度傳感器部署于臥室,將氣敏傳感器部署于廚房,將環(huán)境監(jiān)測傳感器部署于門外等。為了對(duì)系統(tǒng)進(jìn)行功能測試,選用AM2302溫濕度傳感器、MQ-4氣敏傳感器和繼電器作為測試元件。AM2302溫濕度傳感器具有溫濕度轉(zhuǎn)換時(shí)間快,抗干擾能力強(qiáng),精度高等特點(diǎn)。溫度測量區(qū)間為-40~+80 ℃,濕度測量區(qū)間為0~99.9%RH,適合監(jiān)測我國全部地區(qū)的室內(nèi)溫濕度。MQ-4氣敏傳感器可監(jiān)測多種可燃?xì)怏w,可部署在廚房實(shí)時(shí)進(jìn)行監(jiān)測,提前預(yù)警,提前控制,防止危險(xiǎn)事故發(fā)生。
顯示設(shè)備:顯示設(shè)備選用液晶顯示屏,用于顯示獲取的時(shí)間信息、節(jié)點(diǎn)信息和設(shè)備運(yùn)行狀況等,作為本地人機(jī)交互端,可以方便觀察整個(gè)系統(tǒng)的運(yùn)行狀況,查看傳感器采集的數(shù)據(jù),查詢歷史數(shù)據(jù)等。而且,硬件預(yù)留多種屏幕接口,可根據(jù)需要更換顯示設(shè)備。
本系統(tǒng)的軟件設(shè)計(jì)主要有Internet網(wǎng)絡(luò)端、主控制器端和無線節(jié)點(diǎn)端。Internet網(wǎng)絡(luò)端采用Ai-Thinker-IDE進(jìn)行編程開發(fā)配合主流的網(wǎng)絡(luò)云平臺(tái)搭建服務(wù)器。其余部分采用Keil uVision5進(jìn)行編程開發(fā)。兩種開發(fā)環(huán)境和云平臺(tái)配合使用,在很大程度上提高了程序編寫效率。編譯器本身自帶仿真功能,節(jié)約了開發(fā)時(shí)間,在一定程度上可幫助提高程序的穩(wěn)定性和可靠性。
圖3 系統(tǒng)軟件流程圖
系統(tǒng)上電,各個(gè)模塊自動(dòng)調(diào)用模塊配置函數(shù)進(jìn)行相關(guān)系統(tǒng)配置。完成系統(tǒng)配置后,進(jìn)入網(wǎng)絡(luò)連接處理函數(shù)。聯(lián)網(wǎng)前,自動(dòng)讀取FLASH記錄的已連接的網(wǎng)絡(luò)數(shù)據(jù),自動(dòng)對(duì)比WIFI模塊搜索到的網(wǎng)絡(luò)數(shù)據(jù)。若記錄的數(shù)據(jù)和WIFI模塊搜索到的數(shù)據(jù)一致,則直接連接到網(wǎng)絡(luò);若不一致,則會(huì)進(jìn)入手動(dòng)配置網(wǎng)絡(luò)函數(shù),人為選擇是否進(jìn)行網(wǎng)絡(luò)連接。主控制器和節(jié)點(diǎn)之間傳輸通信指令,確認(rèn)LORA模塊是否能夠正常通信。在確認(rèn)通信正常后,主節(jié)點(diǎn)通過判斷從節(jié)點(diǎn)上傳的數(shù)據(jù)是否存在異常,決定是否下發(fā)控制指令到從節(jié)點(diǎn)。一旦存在異常數(shù)據(jù),主節(jié)點(diǎn)可以很快下發(fā)控制指令到異常節(jié)點(diǎn),并將異常數(shù)據(jù)記錄到FLASH中。之后將數(shù)據(jù)上傳到云端服務(wù)器和顯示在液晶屏。液晶屏顯示的數(shù)據(jù)通過翻頁的方式進(jìn)行交替顯示,可設(shè)置為手動(dòng)遙控翻頁或自動(dòng)翻頁。系統(tǒng)軟件流程圖如圖3所示。
對(duì)LORA節(jié)點(diǎn)地址設(shè)置,主節(jié)點(diǎn)地址設(shè)置為0XFFFF,使得主節(jié)點(diǎn)處于廣播監(jiān)聽模式。此模式下主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)可以被其他相同速率和相同信道的節(jié)點(diǎn)接收,同時(shí)主節(jié)點(diǎn)也可以接收其他相同速率和相同信道節(jié)點(diǎn)的數(shù)據(jù)。節(jié)點(diǎn)分布如圖4所示。A為主節(jié)點(diǎn),其余為從節(jié)點(diǎn)。
圖4 節(jié)點(diǎn)分布
廣播監(jiān)聽模式并不能滿足數(shù)據(jù)傳輸過程中的所有要求,此模式下主節(jié)點(diǎn)雖然可以收到所有節(jié)點(diǎn)傳回來的數(shù)據(jù),但卻無法判斷出是哪個(gè)節(jié)點(diǎn)傳回的數(shù)據(jù),容易造成數(shù)據(jù)的混亂,無法準(zhǔn)確控制異常節(jié)點(diǎn)。
因此,為了克服LORA在廣播模式下對(duì)節(jié)點(diǎn)識(shí)別不足的問題,本文在原有的通信基礎(chǔ)上增加了新的數(shù)據(jù)傳輸格式,對(duì)原有的協(xié)議進(jìn)行擴(kuò)充改進(jìn),傳輸時(shí)序如圖5所示。圖5中的8位從節(jié)點(diǎn)地址和主控制器節(jié)點(diǎn)地址是人為分配的,用作自身的識(shí)別地址,其中圖5(a)和圖5(b)為主控制器節(jié)點(diǎn)接收從節(jié)點(diǎn)數(shù)據(jù)以及對(duì)數(shù)據(jù)進(jìn)行解析時(shí)序,數(shù)據(jù)解析格式如表1所示;圖5(c)和圖5(d)為主控制器下發(fā)控制指令至從節(jié)點(diǎn)以及從節(jié)點(diǎn)進(jìn)行指令碼解析時(shí)序,指令碼格式如表2所示。在此通信格式下,理論上每個(gè)從節(jié)點(diǎn)可以級(jí)聯(lián)4 096個(gè)控制設(shè)備。校驗(yàn)位=(主控制器地址+從節(jié)點(diǎn)地址)&0xFF。
(a) 主節(jié)點(diǎn)接收數(shù)據(jù)(a) Master node receives data
(b) 主節(jié)點(diǎn)解析數(shù)據(jù)(b) Host node parses data
(c) 主節(jié)點(diǎn)下發(fā)控制指令(c)Master node sends control instructions
(d) 從節(jié)點(diǎn)解析指令(d)Slave node resolve instructions
表1 數(shù)據(jù)格式
表2 指令碼定義
LORA模塊本身自帶CSMA/CA機(jī)制,在數(shù)據(jù)發(fā)送前先檢測其他節(jié)點(diǎn)是否處于忙狀態(tài),如果忙則等待,如果處于非忙狀態(tài)則會(huì)立即發(fā)送。但是,這種機(jī)制不能確保數(shù)據(jù)完全不會(huì)沖突。為了降低這種風(fēng)險(xiǎn),在數(shù)據(jù)發(fā)送時(shí),首先對(duì)數(shù)據(jù)在0~50 ms進(jìn)行隨機(jī)延時(shí)發(fā)送,根據(jù)LORA模塊空中傳輸速率19 200 bit/s,則傳輸一個(gè)64 bit的數(shù)據(jù)只需要大約3.33 ms,因此,隨機(jī)間隔可以設(shè)為5 ms,即在0~50間隨機(jī)產(chǎn)生間隔為5的數(shù)據(jù),用于延時(shí)。時(shí)間范圍可根據(jù)節(jié)點(diǎn)數(shù)量擴(kuò)大或減少。
云下設(shè)備與云上設(shè)備實(shí)現(xiàn)互聯(lián),可通過調(diào)用API接口實(shí)現(xiàn)。首先需要設(shè)置WIFI模式、定時(shí)器回調(diào)函數(shù)等系統(tǒng)參數(shù),然后對(duì)網(wǎng)絡(luò)連接參數(shù)進(jìn)行賦值:客戶端標(biāo)識(shí)、MQTT用戶名和MQTT秘鑰,接著調(diào)用MQTT相關(guān)API進(jìn)行配置,最后調(diào)用網(wǎng)絡(luò)連接API進(jìn)行網(wǎng)絡(luò)連接。
數(shù)據(jù)采集和控制可根據(jù)需求接入不同類型的傳感器。本文為了測試系統(tǒng)的可行性,使用溫濕度傳感器、氣敏傳感器和繼電器進(jìn)行測試。微處理器利用定時(shí)器中斷在一定的時(shí)間間隔內(nèi)循環(huán)調(diào)用不同傳感器采集數(shù)據(jù)函數(shù),進(jìn)行數(shù)據(jù)的處理、上傳至主控制器。實(shí)時(shí)監(jiān)聽主控制器節(jié)點(diǎn)下發(fā)的指令,完成對(duì)設(shè)備的控制。
圖6 系統(tǒng)運(yùn)行界面
圖6為系統(tǒng)運(yùn)行界面,圖6(a)是數(shù)據(jù)監(jiān)控信息顯示,對(duì)從節(jié)點(diǎn)上傳的數(shù)據(jù)進(jìn)行顯示和實(shí)時(shí)監(jiān)控;圖6(b)是萬年歷顯示,除基本的顯示外,增加了農(nóng)歷日期顯示、鬧鐘和定時(shí)功能;圖6(c)是功能和設(shè)置界面,可通過紅外遙控或板載按鍵進(jìn)行功能設(shè)置。界面之間的切換方式可選擇手動(dòng)方式或自動(dòng)方式。
為了更好地測試整個(gè)系統(tǒng)的實(shí)時(shí)性,在距離50 m并且有障礙物的情況下對(duì)一個(gè)64 bit的數(shù)據(jù)多次進(jìn)行發(fā)送和接收測試,測試結(jié)果如圖7所示。其中,低電平表示節(jié)點(diǎn)處于接收狀態(tài),高電平表示節(jié)點(diǎn)處于發(fā)送狀態(tài)。在圖7中,Channel 0為主節(jié)點(diǎn)通道,Channel 1,Channel 2,Channel 3是從節(jié)點(diǎn)通道。從圖7中可以看出,主節(jié)點(diǎn)從開始接收數(shù)據(jù)到完成對(duì)從節(jié)點(diǎn)的控制指令的下發(fā),整個(gè)過程時(shí)間在0.35 s內(nèi),能較快地對(duì)異常情況做出響應(yīng)。
圖7 數(shù)據(jù)傳輸時(shí)間采集圖
主控制器會(huì)把采集到節(jié)點(diǎn)的數(shù)據(jù)實(shí)時(shí)上傳到網(wǎng)絡(luò)云平臺(tái),可實(shí)現(xiàn)隨時(shí)隨地觀察室內(nèi)情況。云端采集數(shù)據(jù)如圖8所示。
圖8 云端采集數(shù)據(jù)
本文結(jié)合物聯(lián)網(wǎng)技術(shù),設(shè)計(jì)了一種基于物聯(lián)網(wǎng)的室內(nèi)數(shù)據(jù)采集監(jiān)控系統(tǒng)。經(jīng)過實(shí)驗(yàn)測試,系統(tǒng)可在0.35 s內(nèi)可準(zhǔn)確地對(duì)室內(nèi)多點(diǎn)數(shù)據(jù)進(jìn)行監(jiān)測和數(shù)據(jù)上傳,證明了系統(tǒng)的實(shí)時(shí)性和準(zhǔn)確性。為了適應(yīng)不同用戶的需求,可增加或減少節(jié)點(diǎn)數(shù)量,具有較好的可剪裁性。由于系統(tǒng)具有較好的實(shí)時(shí)性、準(zhǔn)確性和可剪裁性,在智能監(jiān)控領(lǐng)域有著較好的應(yīng)用前景。