張藝琳 王宜懷 姚望舒 范小青
(蘇州大學計算機科學與技術(shù)學院 江蘇 蘇州 215000)
近年來,工業(yè)生產(chǎn)的環(huán)境、健康、安全一直是社會關(guān)注的焦點,工廠監(jiān)測愈發(fā)顯得重要。在無線通信技術(shù)和傳感器技術(shù)飛速發(fā)展的背景下,無線傳感網(wǎng)絡(luò)(Wireless Sensor Network,WSN)[1]因其安裝靈活無害、維護方便、擴展性高等優(yōu)點,應(yīng)用領(lǐng)域日趨廣泛,尤其在工業(yè)監(jiān)測領(lǐng)域表現(xiàn)不俗。國內(nèi)外許多學者對面向工業(yè)領(lǐng)域的WSN通信網(wǎng)關(guān)進行了大量的研究和探索。文獻[2]以S3C2440A處理器為平臺,設(shè)計了一種GPRS-ZigBee網(wǎng)關(guān)系統(tǒng),用于地鐵變電站防誤閉鎖控制,但GPRS傳輸速度較慢。Wi-Fi技術(shù)作為一種短距離、較高傳輸速度的無線傳輸技術(shù),可兼容現(xiàn)有以太網(wǎng),組網(wǎng)便利靈活[3],逐漸成為無線接入的主流標準。文獻[4]設(shè)計了一種用于監(jiān)測液壓支架壓力系統(tǒng)的網(wǎng)關(guān),選用CC2530作為主控單元,結(jié)合Wi-Fi和ZigBee技術(shù),但傳統(tǒng)ZigBee協(xié)議開發(fā)難度大、結(jié)構(gòu)復(fù)雜、通信穩(wěn)定性差。文獻[5]利用Arduino平臺,設(shè)計了基于BLE/Wi-Fi的網(wǎng)關(guān),但藍牙通信距離過短、覆蓋范圍小。433 MHz頻段相較其他高頻段無線,波長更長,穿透能力更好,覆蓋范圍更廣。
本文采用KW01Z128主控器和ESP8266Wi-Fi芯片為硬件平臺,設(shè)計并實現(xiàn)了一種基于Wi-Fi技術(shù)和433MHz頻段無線技術(shù)的WSN通信網(wǎng)關(guān)。使用Wi-Fi來解決WSN與Internet網(wǎng)絡(luò)協(xié)議兼容問題;對ZigBee協(xié)議進行場景適應(yīng)性優(yōu)化,降低其復(fù)雜度,提高433 MHz頻段無線通信穩(wěn)定性;優(yōu)化軟件設(shè)計流程,提高網(wǎng)關(guān)整體通信性能。
本文以工廠監(jiān)測為場景,但并不局限于工廠監(jiān)測。整體通信框架參考物聯(lián)網(wǎng)分層模型[6],如圖1所示,自左向右分為感知層、網(wǎng)絡(luò)層和應(yīng)用層。感知層利用傳感器實時感知、捕獲、測量環(huán)境物體的信息;網(wǎng)絡(luò)層以無線為傳輸媒介,通過各種通信協(xié)議傳送交互信息;應(yīng)用層針對業(yè)務(wù)需求進行信息處理[7]。將該模型實例化,感知層由多個傳感器節(jié)點構(gòu)成,節(jié)點間通過433 MHz頻段無線通信組成WSN;網(wǎng)絡(luò)層由網(wǎng)關(guān)組成,網(wǎng)關(guān)與感知層之間為433 MHz頻段無線通信,與應(yīng)用層之間利用2.4 GHz Wi-Fi建立TCP通信;應(yīng)用層由服務(wù)器和用戶交互程序構(gòu)成。
圖1 無線通信網(wǎng)關(guān)系統(tǒng)框圖
網(wǎng)關(guān)在整個框架中有著承上啟下的作用,網(wǎng)關(guān)節(jié)點支持實現(xiàn)整體框架的數(shù)據(jù)上下行,數(shù)據(jù)上行時,負責匯總傳感器節(jié)點數(shù)據(jù)并完成433 MHz頻段無線協(xié)議與Wi-Fi協(xié)議的轉(zhuǎn)換和發(fā)送;數(shù)據(jù)下行時,負責接收并解析服務(wù)器數(shù)據(jù)后做出相應(yīng)操作。
對網(wǎng)關(guān)硬件進行模塊化設(shè)計,按照功能需求主要包含主控器模塊、Wi-Fi模塊、RF天線模塊和電源模塊等,各模塊均使用電源供電,如圖2所示。
(a) 網(wǎng)關(guān)硬件結(jié)構(gòu)框圖 (b) 實物圖圖2 網(wǎng)關(guān)硬件結(jié)構(gòu)框圖及實物圖
KW01Z128作為基于ARM Cortex-M0+內(nèi)核的低功耗系列芯片,工作頻率高達48 MHz,可達nA級別超低功耗,提供UART、SPI、I2C等多種外設(shè)接口,擴展方便。芯片本身集成了SX1231射頻收發(fā)器,射頻模塊與主控器MCU之間使用芯片內(nèi)部SPI通信。SX1231是一款Sub 1 GHz的超低功耗射頻收發(fā)控制器,具有出色的靈敏度和高選擇性,支持多種無線頻段,具有低功耗、低成本、高度集成、通信穩(wěn)定等特點,適用于諸如工業(yè)監(jiān)測、智能家居、智能城市等多種物聯(lián)網(wǎng)產(chǎn)品的研究與開發(fā)[8]。本文選擇KW01Z128芯片,既能滿足對主控器低功耗的需求,也能避免增加獨立射頻收發(fā)器的不便。
Wi-Fi模塊采用集成ESP8266芯片的無線模塊,該模塊載波頻率為2.4 GHz,通信距離可達100 m,支持串行通信UART,支持IPV4、TCP/UDP和HTTP/FTP網(wǎng)絡(luò)協(xié)議。KW01Z128通過UART與Wi-Fi模塊通信。
通信模塊電路設(shè)計作為本文電路設(shè)計的關(guān)鍵,分為兩個部分,433 MHz頻段無線通信模塊電路設(shè)計和Wi-Fi模塊電路設(shè)計。
射頻收發(fā)器集成在KW01Z128內(nèi)部,所以該模塊電路設(shè)計包括KW01Z128最小硬件系統(tǒng)和射頻前端電路,如圖3、圖4所示。射頻前端電路需要適配433 MHz的載波頻率,進行阻抗匹配并留出天線接口。
圖3 KW01Z128最小硬件系統(tǒng)
圖4 射頻前端電路
Wi-Fi模塊采用ESP8266芯片,模塊原理如圖5所示。使用RT9193-33穩(wěn)壓芯片為其提供穩(wěn)定可控的3.3 V電壓。
圖5 Wi-Fi模塊電路圖
本文網(wǎng)關(guān)通信兼容433 MHz頻段無線通信和2.4 GHz Wi-Fi通信,433 MHz頻段無線通信使用適應(yīng)性優(yōu)化版本的ZigBee協(xié)議,2.4 GHz Wi-Fi通信使用TCP協(xié)議。依托上述協(xié)議,自定義可擴展通信數(shù)據(jù)格式并設(shè)計整個軟件流程。
ZigBee技術(shù)作為WSN短距離組網(wǎng)的關(guān)鍵技術(shù),因其低功耗、低成本、短時延等優(yōu)勢[9],已被廣泛應(yīng)用于多個領(lǐng)域。但ZigBee協(xié)議作為復(fù)雜的通信協(xié)議適用于網(wǎng)絡(luò)拓撲結(jié)構(gòu)容易動態(tài)變化的場景,且ZigBee協(xié)議開發(fā)難度較大,導(dǎo)致網(wǎng)絡(luò)的穩(wěn)定性不高[10]。本文設(shè)計面向節(jié)點固定、拓撲結(jié)構(gòu)并不復(fù)雜的工廠監(jiān)測場景,對ZigBee協(xié)議進行適應(yīng)性優(yōu)化,旨在使節(jié)點間無線通信更穩(wěn)定可靠快速。
傳統(tǒng)的四層ZigBee協(xié)議分為物理層、鏈路層、網(wǎng)絡(luò)層和應(yīng)用層。對于每個網(wǎng)關(guān)管轄子節(jié)點固定且互不通信的場景,ZigBee協(xié)議網(wǎng)絡(luò)層并未起到實際作用,且復(fù)雜的幀結(jié)構(gòu)在降低組幀解幀效率的同時,也造成通信不穩(wěn)定。為解決此問題,本文參考ZigBee協(xié)議分層思想,將網(wǎng)絡(luò)層舍棄,并對余下3層進一步精簡,保留必要字段。最終將無線通信協(xié)議分為物理層、鏈路層和應(yīng)用層,如圖6所示。應(yīng)用層傳輸有效負載并明確數(shù)據(jù)包功能,鏈路層確定數(shù)據(jù)包始發(fā)地和目的地,物理層負責過濾地址并保證整幀的完整性。
圖6 無線傳感網(wǎng)絡(luò)通信協(xié)議結(jié)構(gòu)
應(yīng)用層和鏈路層的封裝均由KW01Z128編程實現(xiàn),而物理層部分封裝由RF模塊自主實現(xiàn)。發(fā)送無線數(shù)據(jù)包時,按照應(yīng)用層—鏈路層—物理層順序逐次封裝,接收數(shù)據(jù)包時,再按照物理層—鏈路層—應(yīng)用層順序解析。應(yīng)用層的幀頭幀尾確保實際有效負載完整,命令字及命令返回用來實現(xiàn)不同功能類型數(shù)據(jù)包的往來;鏈路層的幀號用來標識一定時間內(nèi)該幀的唯一性,源節(jié)點地址用來確認返回幀的目的地,而目標節(jié)點地址則是確定本次拓撲路徑的終點;物理層的硬件濾波地址用來過濾地址不匹配的數(shù)據(jù)包,CRC校驗保證整個通信幀完整。
為測試ZigBee協(xié)議適應(yīng)性優(yōu)化后的性能,進行兩組網(wǎng)關(guān)和傳感器節(jié)點單播點對點通信測試,兩組測試只有通信協(xié)議幀不同。傳感器節(jié)點發(fā)送功率為13 dB,發(fā)送間隔為1 000 ms,波特率為100 Kbit/s,發(fā)送有效數(shù)據(jù)長度為1 B(按兩個協(xié)議組幀后實際通信數(shù)據(jù)包字節(jié)不同),連續(xù)向網(wǎng)關(guān)節(jié)點發(fā)送1 000個數(shù)據(jù)包,統(tǒng)計網(wǎng)關(guān)接收到數(shù)據(jù)包個數(shù)及傳輸時間;同時改變節(jié)點間傳輸距離,比較不同傳輸距離下的協(xié)議性能。重復(fù)測試3次取平均值,對比結(jié)果如圖7與圖8所示。
圖7 ZigBee協(xié)議適應(yīng)性優(yōu)化前后丟包率對比
圖8 ZigBee協(xié)議適應(yīng)性優(yōu)化前后傳輸時間對比
圖7的測試結(jié)果表明,在傳輸距離較近情況下,ZigBee協(xié)議適應(yīng)性優(yōu)化前后丟包率相差不大,優(yōu)化后略好,但隨著傳輸距離增大,ZigBee協(xié)議適應(yīng)性優(yōu)化后的丟包情況明顯更好。圖8中,ZigBee協(xié)議適應(yīng)性優(yōu)化后的傳輸時間略優(yōu)于優(yōu)化前。實驗說明在節(jié)點固定、拓撲結(jié)構(gòu)并不復(fù)雜的工廠監(jiān)測場景中,使用本文設(shè)計的ZigBee適應(yīng)性優(yōu)化協(xié)議,通信更穩(wěn)定,實時性更高。
無論是433 MHz頻段無線通信,還是TCP通信,數(shù)據(jù)包都面向字節(jié)流,通信雙方需要就如何解讀實際數(shù)據(jù)進行約定。根據(jù)實際場景不同,數(shù)據(jù)格式也有差異,本文在工廠監(jiān)測場景下,給出了一套實用、可擴展的數(shù)據(jù)格式,如圖9所示。
圖9 網(wǎng)關(guān)通信的數(shù)據(jù)格式
UserData為網(wǎng)關(guān)上傳數(shù)據(jù)至服務(wù)器的數(shù)據(jù)格式,其中NodeData既屬于UserData的一部分,也是無線傳感網(wǎng)絡(luò)節(jié)點間傳輸數(shù)據(jù)的格式。UserData直接包含NodeData,提高應(yīng)用程序自由度的同時也提高了數(shù)據(jù)格式的擴展性,能夠更好應(yīng)用于多種實際場景。
使用3.1節(jié)的ZigBee適應(yīng)性優(yōu)化協(xié)議和3.2節(jié)的數(shù)據(jù)格式,并遵循模塊化思想,軟件按功能模塊分為初始化、自適應(yīng)、數(shù)據(jù)匯總、數(shù)據(jù)上傳和接收服務(wù)器數(shù)據(jù)。軟件主循環(huán)流程如圖10所示。
圖10 網(wǎng)關(guān)程序主循環(huán)流程
網(wǎng)關(guān)上電后,初始化UART、SPI、RF等外設(shè)模塊,實例化UserData結(jié)構(gòu)體對象getdata,讀取Flash中網(wǎng)關(guān)配置信息并配置網(wǎng)關(guān),初始化Wi-Fi模塊,接入網(wǎng)絡(luò)并建立TCP連接。
自適應(yīng),即網(wǎng)關(guān)對于傳感器節(jié)點增刪的自主感知。首先從網(wǎng)關(guān)可配置信息中獲取預(yù)設(shè)可能存在的傳感器節(jié)點地址,通過433 MHz頻段無線向可能存在的傳感器節(jié)點發(fā)出請求,并通過同樣的通信方式來接收傳感器節(jié)點的回應(yīng),最終確定該網(wǎng)關(guān)管轄有效節(jié)點地址和個數(shù)。
網(wǎng)關(guān)采用請求-應(yīng)答的方式進行數(shù)據(jù)匯總,設(shè)計使用分組雙驅(qū)動滑動窗口機制。如圖11所示,分組雙驅(qū)動滑動窗口是在對有效節(jié)點分組基礎(chǔ)上使用兩種驅(qū)動條件來進行右向窗口滑動,一種是窗口最左側(cè)對應(yīng)的已請求節(jié)點收到了應(yīng)答,另一種為最長等待應(yīng)答時長耗盡。自適應(yīng)結(jié)束后,網(wǎng)關(guān)管轄有效節(jié)點地址和個數(shù)已知,設(shè)定每組大小為10,窗口大小為5。首先將當前組的有效節(jié)點地址和個數(shù)填入getdata的對應(yīng)字段,向窗口范圍內(nèi)也就是列表前5個節(jié)點依次發(fā)送請求,等待傳感器節(jié)點應(yīng)答,若收到窗口內(nèi)最左側(cè)節(jié)點的應(yīng)答或最長等待應(yīng)答時長耗盡,則窗口向右滑動一位,向第6個節(jié)點發(fā)送請求,以此類推,直到該組10個節(jié)點請求完畢,其間收到的傳感器數(shù)據(jù)直接填入getdata。此時,若有未能收到應(yīng)答的節(jié)點,則暫?;瑒哟翱?,開始重傳。對于首次請求未能應(yīng)答的節(jié)點,再次進行請求,此次請求不再使用滑動窗口,而是逐個發(fā)出請求并等待應(yīng)答,若還是有未能應(yīng)答的節(jié)點,在該組第2次問詢?nèi)拷Y(jié)束后,發(fā)起第3次請求,依舊是逐個問詢。若總計3次請求都未得到節(jié)點回應(yīng),則認為該節(jié)點丟失,最終在人機交互程序中給出提示。至此,該組節(jié)點的數(shù)據(jù)收集完畢,繼續(xù)進行下一組,滑動窗口重新開始滑動,直到所有有效節(jié)點收集完畢,一次完整的匯總周期結(jié)束。這樣大大地提高了通信的可靠性,適用于低實時性、高穩(wěn)定性要求的場景。即使每組傳感器節(jié)點未能全部應(yīng)答,人機交互程序也可以根據(jù)網(wǎng)關(guān)上行數(shù)據(jù)幀中有效節(jié)點個數(shù)及有效節(jié)點地址字段與傳感器數(shù)據(jù)的對比結(jié)果判斷節(jié)點失聯(lián)情況。
圖11 網(wǎng)關(guān)請求數(shù)據(jù)的雙驅(qū)動滑動窗口機制
數(shù)據(jù)上傳以數(shù)據(jù)匯總過程中的分組為單位,每組數(shù)據(jù)收集完畢時,getdata也更新結(jié)束,隨即進入該組數(shù)據(jù)上傳階段。網(wǎng)關(guān)與服務(wù)器間的TCP連接在程序流程多處進行判斷重連操作,從而保證通信雙方連接穩(wěn)定。主控器將完整數(shù)據(jù)幀getdata通過UART發(fā)送至Wi-Fi模塊,Wi-Fi模塊將其按照TCP協(xié)議封裝后發(fā)送給服務(wù)器,若未發(fā)送成功,則認為TCP斷開連接,重連后再次發(fā)送,如此3次后還是未能發(fā)送,則認為發(fā)送失敗,該組發(fā)送流程結(jié)束。發(fā)送結(jié)束后,清除getdata填充數(shù)據(jù),為下一幀數(shù)據(jù)做準備。為解決Wi-Fi模塊死機,主循環(huán)每999 s主動斷開后重連TCP,若3次建立連接失敗,則判定Wi-Fi模塊死機,重啟Wi-Fi模塊。
網(wǎng)關(guān)接收服務(wù)器數(shù)據(jù)屬于整個框架中數(shù)據(jù)下行的重要部分,用戶利用交互程序按照雙方約定數(shù)據(jù)格式組幀后發(fā)送給網(wǎng)關(guān),Wi-Fi模塊接收數(shù)據(jù),觸發(fā)UART中斷,主控器在UART中斷中接收數(shù)據(jù)并執(zhí)行對應(yīng)命令,結(jié)束后繼續(xù)執(zhí)行中斷前操作。
本文網(wǎng)關(guān)性能測試中,網(wǎng)關(guān)與傳感器節(jié)點都基于KW01Z128硬件平臺。
為測試網(wǎng)關(guān)整體性能,搭建1個網(wǎng)關(guān)和10個傳感器節(jié)點的自組網(wǎng),服務(wù)器運行偵聽程序,通過網(wǎng)關(guān)收集傳感器節(jié)點數(shù)據(jù),并上傳至偵聽程序,檢驗網(wǎng)關(guān)從收集數(shù)據(jù)到上傳數(shù)據(jù)的整體通信性能。
通過網(wǎng)關(guān)連續(xù)收集10個傳感器節(jié)點的 1 000個數(shù)據(jù)包,保證所有節(jié)點正常運行,統(tǒng)計接收、丟失、錯誤數(shù)據(jù)包的數(shù)量;改變網(wǎng)關(guān)與傳感器節(jié)點的平均距離,測試網(wǎng)關(guān)整個通信過程中收發(fā)數(shù)據(jù)的性能。進行3次測試后取平均值,實驗數(shù)據(jù)如表1所示。
表1 網(wǎng)關(guān)整體通信丟包率和誤包率測試
可以看出,該網(wǎng)關(guān)實現(xiàn)預(yù)期設(shè)計目標,測試效果良好。隨著傳輸距離增加,丟包率與誤包率也隨之增大,但增長幅度仍在可控范圍內(nèi),通信的穩(wěn)定性、可靠性都有保障,完全可以滿足工廠監(jiān)測場景的需求。
網(wǎng)關(guān)整體通信的性能主要取決于無線組網(wǎng)通信及Wi-Fi通信的性能,其中無線組網(wǎng)通信尤為關(guān)鍵。為了進一步體現(xiàn)本網(wǎng)關(guān)通信穩(wěn)定、可靠、及時的優(yōu)點,對無線組網(wǎng)的通信性能進行分析比較。
將本文網(wǎng)關(guān)與文獻[11]設(shè)計的ZigBee+Wi-Fi網(wǎng)關(guān)進行對比,搭建與之相同的測試環(huán)境,來比較兩者無線組網(wǎng)通信的丟包率和誤包率。搭建1個網(wǎng)關(guān)與3個傳感器節(jié)點的自組網(wǎng),通過網(wǎng)關(guān)連續(xù)循環(huán)向傳感器節(jié)點發(fā)送100個數(shù)據(jù)包,統(tǒng)計接收、丟失、錯誤數(shù)據(jù)包個數(shù),同時改變傳輸距離,測試不同距離下的丟包率與誤包率。需要指出的是,該項對比實驗結(jié)果是進行20次測試后所得的平均值。
圖12與圖13給出了本文與文獻[11]的網(wǎng)關(guān)無線組網(wǎng)丟包率與誤包率變化曲線的對比。如圖12所示,本文的無線組網(wǎng)通信丟包率在10 m到80 m距離范圍內(nèi)低于文獻[11],顯然本文的無線組網(wǎng)通信穩(wěn)定性更高。如圖13所示,本文的無線組網(wǎng)通信誤包率雖然在10 m處略高于文獻[11],但在該距離,兩者的誤包率都非常低,且在15 m到80 m距離范圍內(nèi)本文誤包率明顯更低,因此本文的無線組網(wǎng)通信可靠性更高。
圖12 不同網(wǎng)關(guān)無線組網(wǎng)丟包率變化曲線
圖13 不同網(wǎng)關(guān)無線組網(wǎng)誤包率變化曲線
文獻[12]和文獻[13]都在各自提出的無線組網(wǎng)方案上對網(wǎng)絡(luò)中的數(shù)據(jù)傳輸時間進行了測試。使用本文網(wǎng)關(guān)搭建與它們相同的測試環(huán)境,使用1個網(wǎng)關(guān)與5個傳感器節(jié)點組網(wǎng)(總計6個節(jié)點無線組網(wǎng)),每個傳感器節(jié)點依次向網(wǎng)關(guān)節(jié)點傳輸100個數(shù)據(jù)包,網(wǎng)關(guān)節(jié)點對傳感器節(jié)點的傳輸時間進行測試統(tǒng)計,測試3次取平均值,對比結(jié)果如圖14所示。
圖14 不同方案無線組網(wǎng)數(shù)據(jù)傳輸時間曲線
實驗結(jié)果分析可知,無線組網(wǎng)網(wǎng)絡(luò)數(shù)據(jù)的傳輸時間受傳輸距離影響,傳輸距離越大,傳輸時間越長。三者的傳輸時間都維持在毫秒級,本文的傳輸時間雖然比文獻[12]略高,但明顯優(yōu)于文獻[13]。因此,本文的無線組網(wǎng)網(wǎng)絡(luò)傳輸時間雖然未能達到最優(yōu),但是完全能夠滿足工廠監(jiān)測實際場景的實時性要求。
本文設(shè)計一款基于Wi-Fi技術(shù)的無線傳感網(wǎng)通信網(wǎng)關(guān)。通過對ZigBee協(xié)議的適應(yīng)性優(yōu)化,改善傳統(tǒng)ZigBee協(xié)議穩(wěn)定度不足的問題,提高網(wǎng)關(guān)433 MHz頻段無線通信的穩(wěn)定性。并在此協(xié)議基礎(chǔ)上,設(shè)計數(shù)據(jù)格式和軟件流程,實現(xiàn)具有可行性與適應(yīng)性的網(wǎng)關(guān)整體方案設(shè)計。測試結(jié)果表明,該網(wǎng)關(guān)能夠更穩(wěn)定、可靠、及時地完成數(shù)據(jù)上下行,滿足實際需求。目前,該設(shè)計已在某工廠EHS(Environment、Health、Safety)監(jiān)測系統(tǒng)中成功應(yīng)用。