宋英杰,薄敬東,王義濤,萬慶華,崔傳金
(華北理工大學(xué)電氣工程學(xué)院,河北唐山 063210)
近些年物聯(lián)網(wǎng)通信技術(shù)的不斷迭代更新,同時對無線傳感器網(wǎng)絡(luò)系統(tǒng)的穩(wěn)定性與響應(yīng)速度要求提高。無線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSNs)是一種由大量傳感器節(jié)點(diǎn)組成的分布式傳感網(wǎng)絡(luò),具有數(shù)據(jù)采集、處理、傳輸?shù)裙δ?。以其精?zhǔn)度高、部署靈活等特點(diǎn),廣泛應(yīng)用于農(nóng)業(yè)[1]、醫(yī)療[2]、建筑[3]及環(huán)境檢測[4]等領(lǐng)域。RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)憑借高穩(wěn)定性、豐富的中間組件及服務(wù)層和國產(chǎn)自主可控,已廣泛應(yīng)用于嵌入式設(shè)備開發(fā)。本設(shè)計運(yùn)用RT-Thread系統(tǒng)提升無線傳感器網(wǎng)絡(luò)穩(wěn)定性,并對方案可行性展開分析與研究。
近些年,由于物聯(lián)網(wǎng)及網(wǎng)絡(luò)通信的快速發(fā)展,針對無線傳感器網(wǎng)絡(luò)方向的研究受到了廣泛關(guān)注。劉飛飛等[5]設(shè)計了一種基于ZigBee協(xié)議的農(nóng)業(yè)環(huán)境檢測系統(tǒng),實現(xiàn)了分布式數(shù)據(jù)采集功能。但若網(wǎng)絡(luò)協(xié)調(diào)器接入大量終端設(shè)備數(shù)據(jù)傳輸,會造成數(shù)據(jù)阻塞等情況發(fā)生,系統(tǒng)穩(wěn)定性難以保證。賈青青等[6]通過NB-IoT設(shè)計監(jiān)控節(jié)點(diǎn)應(yīng)用于對環(huán)境檢測,每個終端系統(tǒng)均以微控制器(MCU)為核心,對傳感器數(shù)據(jù)進(jìn)行讀取及通信傳輸時會增加系統(tǒng)冗余,當(dāng)節(jié)點(diǎn)設(shè)備增多時,造成網(wǎng)絡(luò)延遲高,會直接影響實際使用效果。謝暉等[7]通過LoRa技術(shù)實現(xiàn)低功耗下對環(huán)境檢測,在保證低功耗同時會增加系統(tǒng)對數(shù)據(jù)傳輸延遲,若多數(shù)據(jù)接收時會對系統(tǒng)處理性能提出更高要求。上述研究工作在通信系統(tǒng)結(jié)構(gòu)方面具有較高的適用性,但當(dāng)眾多節(jié)點(diǎn)設(shè)備將數(shù)據(jù)上傳時,對節(jié)點(diǎn)設(shè)備處理性能方面要求較高。
為解決上述設(shè)計存在的問題,設(shè)計了一種基于RT-Thread和ESP-NOW的無線傳感器網(wǎng)絡(luò)系統(tǒng),在短距離通信傳輸時引用ESP-NOW協(xié)議以縮短傳輸延時,采用RT-Thread系統(tǒng)在提高處理能力的同時提高其系統(tǒng)穩(wěn)定性。
該系統(tǒng)按照感知層、傳輸匯聚層及應(yīng)用層架構(gòu)模型進(jìn)行搭建[8]。感知層設(shè)計有多組終端傳感器節(jié)點(diǎn),每個節(jié)點(diǎn)由各類傳感器、微控制器及通信模組構(gòu)成[9-10],負(fù)責(zé)數(shù)據(jù)的采集、顯示、發(fā)送。感知節(jié)點(diǎn)與匯聚節(jié)點(diǎn)之間采用ESP-NOW協(xié)議進(jìn)行通信。傳輸層由微控制器基于RT-Thread物聯(lián)網(wǎng)系統(tǒng)構(gòu)成,采用RT-Thread系統(tǒng)為每個感知層節(jié)點(diǎn)數(shù)據(jù)接收處理創(chuàng)建為一個線程[11-12],以線程調(diào)度對感知節(jié)點(diǎn)數(shù)據(jù)接收切換,同時對屏幕顯示、存儲、上傳等線程進(jìn)行創(chuàng)建。云端接收和感知節(jié)點(diǎn)控制的指令在任務(wù)中作為事件觸發(fā),可通過云平臺直接對感知層節(jié)點(diǎn)的數(shù)據(jù)傳輸狀態(tài)進(jìn)行控制[13-14]。應(yīng)用層是基于阿里云的物聯(lián)網(wǎng)開發(fā)平臺搭建云服務(wù)器及基于樹莓派搭建的本地服務(wù)器,以提供數(shù)據(jù)的顯示與分析,用戶可通過Web端或樹莓派服務(wù)器端對數(shù)據(jù)進(jìn)行訪問,并且遠(yuǎn)程查看和控制各感知節(jié)點(diǎn)的各項數(shù)據(jù)及工作狀態(tài),系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 無線傳感器網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)
感知層為無線傳感器網(wǎng)絡(luò)的核心層,主要由分布在局域網(wǎng)不同處的各類傳感器組成,是獲取相關(guān)信息的重要組成部分。每個感知節(jié)點(diǎn)由供電電路、主控系統(tǒng)、傳感器模塊、通信模組以及屏幕顯示等5部分組成。
感知層終端主控選擇ESP-07S通信模組,其內(nèi)置Tensilica L106 32位RISC超低功耗微控制器,同時擁有SPI、IIC、UART等外設(shè)接口。該模組通信頻率為2.4 GHz,內(nèi)置TCP/IP協(xié)議棧,支持STA、AP、STA+AP 3種工作模式。通過對該模組進(jìn)行編程實現(xiàn)對外圍傳感器的數(shù)據(jù)采集,每個節(jié)點(diǎn)設(shè)計接入不同類型傳感器,包括光照強(qiáng)度、氣壓強(qiáng)度、溫度數(shù)據(jù)、CO2濃度等4種相關(guān)參數(shù),通過采集的數(shù)據(jù)來驗證系統(tǒng)方案的可行性及分析系統(tǒng)工作穩(wěn)定性。節(jié)點(diǎn)顯示采集到的數(shù)據(jù)以及節(jié)點(diǎn)工作狀態(tài),按鍵可調(diào)節(jié)數(shù)據(jù)上傳的時間間隔。感知層節(jié)點(diǎn)系統(tǒng)結(jié)構(gòu)圖如圖2所示。
圖2 感知層節(jié)點(diǎn)系統(tǒng)結(jié)構(gòu)
供電電源采用3.7V、1 500 mA鋰電池,為保證節(jié)點(diǎn)穩(wěn)定工作,防止電壓下降導(dǎo)致ESP-07S復(fù)位情況發(fā)生,每節(jié)點(diǎn)均設(shè)計電源穩(wěn)壓電路。采用AMS1117 LDO芯片提供3.3 V直流電源。ESP-07S通過模擬IIC協(xié)議對傳感器數(shù)據(jù)進(jìn)行讀取及屏幕顯示。感知層節(jié)點(diǎn)傳感器連接如圖3所示。
圖3 傳感器接線原理圖
傳輸層為無線傳感器網(wǎng)絡(luò)的中心層,為匯聚處理各感知節(jié)點(diǎn)數(shù)據(jù)而設(shè)計。匯聚節(jié)點(diǎn)選用32位STM32F103VET6 MCU為主控。首先匯聚節(jié)點(diǎn)選用ESP-12F完成對各感知節(jié)點(diǎn)的數(shù)據(jù)接收,在數(shù)據(jù)處理完成后可通過本地顯示及Micro SD卡數(shù)據(jù)的本地存儲。其次為保證適用于各種場合環(huán)境,數(shù)據(jù)通過EC600N 4G模組上傳至云服務(wù)器,選用阿里云物聯(lián)網(wǎng)平臺進(jìn)行數(shù)據(jù)在線顯示;WiFi模組與樹莓派4B通信,本地服務(wù)器實現(xiàn)接收、存儲、分析、顯示等功能。匯聚節(jié)點(diǎn)系統(tǒng)結(jié)構(gòu)如圖4所示。
圖4 匯聚節(jié)點(diǎn)系統(tǒng)結(jié)構(gòu)
為保證通信模組工作正常,匯聚節(jié)點(diǎn)采用5 V DC電源供電,外圍接晶振、復(fù)位、電源電路等。通過繪制PCB轉(zhuǎn)接板搭建通信電路與接口外設(shè),轉(zhuǎn)接板設(shè)有各節(jié)點(diǎn)指示燈、接口以及通信模組電路,指示燈觀察各個感知節(jié)點(diǎn)數(shù)據(jù)采集與通信是否正常。通過按鍵可對感知節(jié)點(diǎn)的數(shù)據(jù)上傳間隔進(jìn)行控制。由于采用的模塊均為集成開發(fā)模組,故不需要特殊的外圍電路處理。
感知層以ESP-07S通信模組為核心,軟件程序流程如圖5所示,傳感器數(shù)據(jù)采集為各節(jié)點(diǎn)對4種傳感器參數(shù)分別采集。在每次數(shù)據(jù)采集、校驗、發(fā)送成功且接收到回調(diào)函數(shù)后,均會返回通信連接,匹配MAC地址后重新進(jìn)行數(shù)據(jù)的采集及校驗發(fā)送。在安全措施方面,ESP-NOW協(xié)議可使用CCMP方法加密VSA幀[15-18]。設(shè)計過程中采用校驗方式對數(shù)據(jù)進(jìn)行安全保障,首先在發(fā)送數(shù)據(jù)幀過程中,將數(shù)據(jù)及校驗位數(shù)據(jù)同時發(fā)送到匯聚節(jié)點(diǎn)。在校驗數(shù)據(jù)成功后,匯聚節(jié)點(diǎn)發(fā)送成功回調(diào)函數(shù),感知節(jié)點(diǎn)接收校驗回調(diào)函數(shù)成功,則開始準(zhǔn)備發(fā)送下一幀數(shù)據(jù)包,在很大程度上避免數(shù)據(jù)發(fā)生堆疊。若校驗數(shù)據(jù)不正確或者接收未應(yīng)答,則數(shù)據(jù)停止傳輸,等待通信校驗成功,具體流程如圖6所示。
圖5 感知節(jié)點(diǎn)系統(tǒng)運(yùn)行流程
圖6 數(shù)據(jù)傳輸流程
數(shù)據(jù)傳輸采用ESP-NOW通信協(xié)議,每次可最多傳輸250 Byte數(shù)據(jù),傳輸速率默認(rèn)為1 Mbit/s。ESP-NOW數(shù)據(jù)幀格式如圖7所示,其中MAC報頭為接收方MAC地址,分類代碼、組織標(biāo)識符、隨機(jī)值共占8 Byte,為廠家固定數(shù)據(jù)內(nèi)容;供應(yīng)商特定內(nèi)容占7~255 Byte,主要包括元素ID、長度、組織標(biāo)識符、類型和正文,其中元素ID、組織標(biāo)識符和類型為固定內(nèi)容,長度為組織標(biāo)識符、類型、版本、正文Byte之和,正文為傳輸?shù)臄?shù)據(jù)內(nèi)容,占0~250 Byte。
圖7 ESP-NOW數(shù)據(jù)幀格式
匯聚節(jié)點(diǎn)采用RT-Thread系統(tǒng),該系統(tǒng)是嵌入式實時多線程操作系統(tǒng),內(nèi)核僅占用3 KB ROM、1 KB RAM。該系統(tǒng)與FreeRTOS、μC/OS相比,豐富的組件與服務(wù)提供了多種通信協(xié)議與功能框架,具有靈活的任務(wù)調(diào)度性能,大大提高了開發(fā)效率,易于后期維護(hù)與升級。RT-Thread將每個感知節(jié)點(diǎn)數(shù)據(jù)接收與處理歸為一個任務(wù),任務(wù)創(chuàng)建過程對線程名字、入口函數(shù)、棧大小、優(yōu)先級以及時間片進(jìn)行設(shè)置。共有256個線程優(yōu)先級可滿足感知節(jié)點(diǎn)接入需要,同時通過Finsh命令組件幫助用戶管理與查看各感知節(jié)點(diǎn)狀態(tài)信息。在RT-Thread系統(tǒng)下,任務(wù)切換更流暢,可避免因為單方問題導(dǎo)致系統(tǒng)崩潰,充分利用MCU內(nèi)資源,實現(xiàn)系統(tǒng)的穩(wěn)定運(yùn)行。
匯聚節(jié)點(diǎn)運(yùn)行首先從系統(tǒng)啟動文件開始運(yùn)行,啟動rtthread_startup()后進(jìn)入用戶入口main()程序[19]。在RT-Thread系統(tǒng)初始化操作系統(tǒng)中對硬件初始化,RT-Thread系統(tǒng)首先檢測WiFi及4G通信模組是否連接成功,通過使用消息隊列遙測傳輸(MQTT)網(wǎng)絡(luò)協(xié)議棧將數(shù)據(jù)與阿里云平臺實現(xiàn)數(shù)據(jù)實時顯示,采用TCP/IP協(xié)議與樹莓派進(jìn)行本地服務(wù)器連接實現(xiàn)數(shù)據(jù)分析。在ESP-12F接收到感知層節(jié)點(diǎn)數(shù)據(jù)后進(jìn)行校驗,如校驗成功則給感知節(jié)點(diǎn)發(fā)送回調(diào)函數(shù),再將數(shù)據(jù)進(jìn)行顯示處理及存儲,若校驗不完整則發(fā)出告警提示。使用FatFs文件系統(tǒng)將數(shù)據(jù)備份到Micro SD卡中實現(xiàn)數(shù)據(jù)本地存儲,系統(tǒng)執(zhí)行流程如圖8所示。
圖8 匯聚節(jié)點(diǎn)系統(tǒng)執(zhí)行流程
為驗證設(shè)計系統(tǒng)的傳輸與處理的穩(wěn)定性,對系統(tǒng)進(jìn)行測試與分析。首先根據(jù)感知節(jié)點(diǎn)對傳感器數(shù)據(jù)采集性能進(jìn)行分析,驗證數(shù)據(jù)采集的準(zhǔn)確性之后再將數(shù)據(jù)傳輸,對系統(tǒng)整體功能部分進(jìn)行演示;其次是在不同場地環(huán)境測試,對通信距離進(jìn)行實際測試與分析,得出相關(guān)分析結(jié)果;最后在傳輸中通過樹莓派基于QT環(huán)境下通過上位機(jī)查看服務(wù)器相關(guān)參數(shù)功能,通過對參數(shù)分析,得出當(dāng)前環(huán)境結(jié)論。
系統(tǒng)功能演示部分主要包括感知節(jié)點(diǎn)數(shù)據(jù)采集效果、匯聚節(jié)點(diǎn)數(shù)據(jù)顯示效果、Micro SD卡數(shù)據(jù)存儲。感知節(jié)點(diǎn)以外接傳感器不同的方案對數(shù)據(jù)進(jìn)行采集,感知節(jié)點(diǎn)實物與數(shù)據(jù)采集如圖9(a)~圖9(d)所示,匯聚節(jié)點(diǎn)實物與接收數(shù)據(jù)后顯示如圖9(e)所示。匯聚節(jié)點(diǎn)數(shù)據(jù)存儲位于Micro SD卡,插入電腦打開如表1所示的data.csv文件數(shù)據(jù),查看存儲數(shù)據(jù)與采集數(shù)據(jù)相同,證明其數(shù)據(jù)存儲的有效性。
表1 Micro SD卡存儲數(shù)據(jù)內(nèi)容
圖9 各節(jié)點(diǎn)設(shè)備實物
根據(jù)實際情況進(jìn)行測量,ESP-07S節(jié)點(diǎn)外接IPEX 1代接口,采用+8 dB FPC天線。各節(jié)點(diǎn)在視野無阻擋的情況下進(jìn)行通信距離測試。測試選擇樓宇內(nèi)及空曠環(huán)境2種場景,在不同的通信距離下,選擇以2 s間隔發(fā)送400次數(shù)據(jù)包,驗證室內(nèi)外環(huán)境對通信效果的影響,實驗結(jié)果如表2所示。
表2 感知層通訊測試結(jié)果
在同一樓層中,當(dāng)通訊距離大于80 m時有數(shù)據(jù)丟包發(fā)生;在空曠環(huán)境下,當(dāng)大于260 m時有數(shù)據(jù)丟包發(fā)生。故該系統(tǒng)在樓宇內(nèi)80 m范圍內(nèi),空曠場地260 m范圍內(nèi)有良好的通信效果。
在RT-Thread系統(tǒng)下,采用任務(wù)調(diào)度切換方式對各感知節(jié)點(diǎn)數(shù)據(jù)接收,相比于裸機(jī)中輪詢查看方式,前者更具優(yōu)勢效果。另外為測試感知節(jié)點(diǎn)以ESP-07S為主控對各類傳感器數(shù)據(jù)采集穩(wěn)定性,將節(jié)點(diǎn)置于實驗室環(huán)境內(nèi)持續(xù)工作對數(shù)據(jù)進(jìn)行采集。其中節(jié)點(diǎn)一采集光照強(qiáng)度、節(jié)點(diǎn)二采集標(biāo)準(zhǔn)氣壓強(qiáng)度、節(jié)點(diǎn)三采集溫度、節(jié)點(diǎn)四采集CO2濃度。針對各組數(shù)據(jù),通過樹莓派服務(wù)器對匯聚節(jié)點(diǎn)接收到的數(shù)據(jù)進(jìn)行分析,樹莓派通過TCP/IP協(xié)議與匯聚節(jié)點(diǎn)WiFi模塊進(jìn)行通信,通過Qt上位機(jī)連接IP與端口后,可查看相關(guān)參數(shù),同時可通過調(diào)節(jié)右側(cè)上下限閾值,當(dāng)前環(huán)境可在數(shù)據(jù)分析后得出相關(guān)結(jié)果。上位機(jī)數(shù)據(jù)接收與分析如圖10所示。
圖10 上位機(jī)數(shù)據(jù)接收與分析
本文設(shè)計了一種基于RT-Thread和ESP-NOW的無線傳感器網(wǎng)絡(luò)系統(tǒng)。主要從通信協(xié)議與匯聚節(jié)點(diǎn)操作系統(tǒng)兩方面進(jìn)行設(shè)計,采用ESP-NOW協(xié)議可實現(xiàn)數(shù)據(jù)穩(wěn)定傳輸,匯聚節(jié)點(diǎn)基于RT-Thread系統(tǒng)可以有效實現(xiàn)對數(shù)據(jù)穩(wěn)定的接收、處理、顯示與存儲。本設(shè)計還有一些工作仍需提升改進(jìn),后續(xù)可將匯聚節(jié)點(diǎn)采用ARM微處理器對數(shù)據(jù)進(jìn)行AI數(shù)據(jù)分析;引入霧計算通信架構(gòu),以形成一個完整的數(shù)據(jù)采集、傳輸、處理、存儲、顯示、分析的無線傳感器網(wǎng)絡(luò)系統(tǒng),提高無線傳感器網(wǎng)絡(luò)的使用率。該系統(tǒng)具有高傳輸穩(wěn)定性、低成本、易于組網(wǎng)等優(yōu)點(diǎn),具有較好的推廣價值。