周艷平,馬維軍
(青島科技大學 信息科學技術學院,山東 青島 266061)
ZigBee技術作為時下新興的近距離無線傳感網絡通信技術,具有距離短、功耗低、成本低和自組網等優點,在工農業、軍事、醫療和環境監測領域有著普遍的應用[1-3]。近年來溫室大棚因其突破地域、季節、氣候等因素的限制,在我國得到廣泛的推廣[4]。但傳統的溫室大棚生產效率低,人力成本高,網絡和信息技術的發展為溫室大棚供了新的方向[5]。
本文設計了一種改進ZigBee路由算法,解決了ZigBee網絡中由于RREQ分組洪泛而導致的能量過度損耗和節點失效的問題,結合改進的ZigBee路由算法設計了溫室監控無線網絡,實現了溫室內農作物生長參數的實時采集、遠程監測和控制功能。
ZigBee聯盟將ZigBee網絡中的節點分為協調器節點(coordinator)、路由器節點(router)和終端節點(end device)[6]。IEEE802.15.4標準從設備完整性的角度出發,將ZigBee網絡中的設備分成全功能型(FFD)和精簡功能型(RFD)。ZigBee網絡中的協調器負責發起和建立網絡且協調器只能由FFD充任,終端節點既可以由FFD充任也可以由RFD充任。ZigBee網絡分成星型網(star)、網狀網(Mesh)和簇樹型(cluster-tree)3種網絡拓撲結構。星型網絡的終端節點以協調器為中心呈星型分布,終端節點必須處于協調器的通信范圍之內,致使星型網絡的通信范圍過小。網狀網絡中各節點之間可以直接或間接的進行通信,具有高可靠性和高冗余性的特點,但網狀網絡的拓撲結構復雜,路由開銷大。簇樹型網絡是一種分層次的網絡拓撲結構,吸收了星型網絡和網狀型網絡的優點,可擴展性強,得到了廣泛應用。
ZigBee網絡中的節點具有一個16位的網絡地址和一個64位IEEE地址,64位IEEE地址具有唯一性,16位的網絡地址由父節點予以分配。ZigBee網絡采用DAAM分布式地址分配機制[7]。在DAAM分布式地址分配機制中,定義Cskip(d)函數用于計算父節點為子節點分配的地址偏移量,公式如下:
(1)
其中:d表示父節點深度,Cm代表每個父節點能擁有的至多子節點的個數,Lm代表網絡的最大深度,Rm代表父節點能擁有的至多路由器節點的數量[8-9]。不同類型的節點分配地址的方式也不同。ZigBee協調器節點地址為0x00,新加入的節點按照加入順序地址深度依次加1,若新加入的節點是終端節點,其父節點通過式(2)計算節點的地址;若新加入的節點是路由器節點,其父節點通過式(3)計算節點的地址。
An=Aparent+Cskip(d)×Rm+n
(2)
An=Aparent+(n-1)×Cskip(d)+1
(3)
在ZigBee網絡中,每一個具有路由能力的節點都會維護一個在其一跳通信范圍內的鄰居表。在ZigBee協議中規定,鄰居表包含了在其一跳范圍內ZigBee節點的所有信息且其記錄的內容會因為網絡內節點的變化而保持實時更新。鄰居表的實時更新有利于及時獲取相鄰節點信息,選擇符合通信要求的節點。鄰居表中記錄的內容不是固定的,可根據需要在鄰居表中添加一些特定的參數信息。
目前在ZigBee網絡常用的路由算法有Cluster-Tree路由算法和AODVjr路由算法。
Cluster-Tree路由算法基于ZigBee地址分配機制計算下一跳節點的16位網絡短地址,在傳輸方向上按照樹形結構向上或向下傳輸。在 Cluster- Tree算法中,結合式(4)辨別目的節點是否為自己的后代,根據式(5)計算出下一跳的地址,并將數據轉發至下一跳節點。Cluster-Tree路由算法傳輸效率低,且選擇的傳輸路徑不一定是最優路徑,接近協調器的節點容易因能量低而脫離網絡,致使網絡癱瘓。
A (4) (5) AODVjr算法是一種按需分配的路由協議,規定只有目的節點能發送路由應答分組(RREP),刪除了先驅節點列表以及hello分組。AODVjr算法路由發現過程如圖1所示。在前向路由建立的過程中,節點在接收到RREQ后,選擇跳數較少的RREQ并更新節點路由信息,直至目的節點接收到RREQ。目的節點在接收到RREQ分組之后,選擇跳數較少的路徑向源節點發送RREP分組來創建反向路由[10]。源節點收到RREP之后,準備進行數據的傳輸。 AODVjr路由算法在路由發現過程中對RREQ分組的廣播范圍和廣播方向沒有限制,當網絡規模較大時容易引起廣播風暴,增加節點的能耗[11]。 圖1 路由發現過程示意圖 針對 ZigBeeCluster- Tree算法和 AODVjr算法中存在的問題,提出一種優化的 ZigBee路由算法,該算法以 AODVjr算法為基礎,結合 Cluster- Tree算法,對 RREQ分組的廣播過程進行限制,并從節點的剩余能量值和鏈路質量入手,對ZigBee路由算法進行改進。 在ZigBee網絡中,越靠近協調器的節點,數據轉發量越大,需要對節點的剩余能量值進行估量,防止網絡分割現象的出現。可運用下式對節點的剩余能量值進行估量: (6) 其中:Emin表示節點最小剩余能量值,t表示網絡運行時間,energy表示節點初始能量,dj表示節點深度,為特定系數用于減緩Emin衰減的速度。 在ZigBee中規定的鏈路質量指示(link quality indicator, LQI)用于計量接收到的數據幀的強度與質量,衡量通信過程中數據包的丟失情況。LQI的值可以通過下式計算得到。 (7) 其中:n表示環境衰減因子,d表示節點之間的間隔,A表示節點發射端和接收端間隔1米時的信號強度。LQI的取值在0x00~0xFF之間,當LQI的值大于0x4B時,表明節點接收到的數據幀的強度與質量滿足通信要求,當LQI的值低于0x32時,節點接收到的數據幀的強度和質量較差,數據包的多次重傳導致節點能量消耗加劇[12-13]。 在Cluster-Tree算法中,網絡最大深度的2倍即2 Lm是可能存在的最大路徑,故在優化算法中設置RREQ分組的最大廣播范圍為2 Lm。結合Cluster-Tree路由算法辨別目的節點是不是自己的子孫節點來控制RREQ分組的廣播方向。在 RREQ分組中設置標記位 Flag, Flag=0則接收到 RREQ的節點的子孫節點不廣播該 RREQ, Flag=1則接收到該 RREQ分組的節點的父節點不廣播該 RREQ分組。在路由節點中添加一個變量Power表示節點可用的能量值。 改進算法流程如下: 1)源節點為終端節點時,由父節點廣播終端節點的數據。 2)源節點為路由節點且其鄰居表內未記錄目的節點地址,則啟動路由發現過程,并根據式5)設置Flag值。 3)在路由發現階段,中間節點B在接收到節點A的RREQ分組之后,檢查RREQ分組的轉發次數(Hops)以及中間節點自身的剩余能量值(Power)和鏈路質量(LQI)。 4)如果Hops>2Lm,節點B丟棄該分組;如果Power 5)中間節點查詢鄰居表中是否記錄該目的節點,若有記錄,中間節點直接將RREQ分組發送給該鄰居節點。否則Flag=0時,若節點B是節點A的子節點,節點B不廣播該RREQ。若節點B是A的父節點,且目的節點是節點B的子孫節點,節點B在設置Flag=1,Hops加1后廣播RREQ分組并替換Power值;如果目的節點不是節點B的子孫節點,則節點B保持Flag值不變,替換Power值和Hops值之后,轉發RREQ分組。 Flag=1時,若節點B是節點A的父節點,節點B不廣播該RREQ分組。若節點B是節點A的子節點,且目的節點不是節點B的子孫節點,則節點B不廣播該RREQ分組;若目的節點是節點B的子節點,節點B保持Flag值不變,更新Power值和Hops之后,廣播RREQ分組。 6)目的節點在接收到RREQ之后,按照RREQ的廣播路徑向源節點發送RREP。源節點收到后,按照該路徑傳輸數據。 為了評估改進后的路由算法的性能,在NS2仿真軟件中從網絡剩余能量、分組投遞率以及網絡節點死亡數量3個方面設置仿真實驗,對改進算法和傳統算法進行仿真。 在仿真實驗中,設置網絡范圍為100 m*100 m,網絡參數Cm=5,Lm=6,Rm=4,數據包長度為128 bits,節點的初始能量值為1 500 J,采用 CBR作為數據信息源,在分析網絡剩余能量和分組投遞率時,分別設置節點數量為10~100個不同的網絡環境下進行仿真,在分析網絡節點死亡率時,設置節點數量為100。仿真實驗結果如圖2~4所示。 圖2 網絡剩余能量百分比對比圖 圖3 分組投遞率對比圖 圖4 網絡節點死亡率對比圖 根據NS2仿真實驗得出的結果,從網絡剩余能量、分組投遞率以及網絡死亡節點數量3個方面對仿真結果進行分析。 網絡剩余能量百分比的值越高表明網絡的剩余能量值越高,網絡的能量損耗也就越低,網絡的生命周期也就越長。該值可以通過網絡剩余能量值和網絡初始能量值計算得到。分組投遞率是接收數據分組與投遞數據分組總數的比值,體現了節點間的LQI,是衡量網絡傳輸性能的關鍵指標。 從圖2可以看出,節點數量的逐步增多,導致網絡剩余能量百分比逐漸降低。改進的路由算法由于在路由發現階段對 RREQ分組的廣播范圍進行限制,減少了不必要的能量損耗,同時能量較低的節點不參與 RREQ分組廣播,有效了節省了網絡的整體耗能。 從圖3中可以看出,由于改進的路由算法對RREQ分組的廣播范圍進行限制并選擇LQI值符合要求的節點,使得分組投遞率得到提高。 從圖4可以看出,在網絡運轉的前期,由于節點能量充裕,節點死亡率為零,隨著網絡的運轉,部分節點因頻繁進行數據轉發和數據接收,導致節點能量耗盡,節點死亡率逐漸升高。優化的 ZigBee路由算法從節點的剩余能量值入手,數據不廣播給剩余能量值較低的節點,死亡節點出現的時間較晚且節點死亡率低于傳統的路由算法,顯著的提高了網絡的運行周期。 結合圖2~4的仿真結果及以上分析,可以看出優化算法能夠達到預期效果。 結合改進的ZigBee路由算法,設計了一種基于ZigBee技術的溫室監控無線網絡,無線網絡采用樹型拓撲結構,在每個溫室內設置一個路由節點和十至二十個終端節點。 溫室監控無線網絡由監控終端、ZigBee網關以及上位機數據監控中心三部分構成,網絡架構如圖5所示。監控終端包括路由節點、采集及控制節點。路由節點負責存儲和轉發采集節點采集的數據,并將控制指令轉發給控制節點。采集節點和控制節點由ZigBee通信模塊和特定的傳感器組成,負責采集和控制溫室內的環境參數(包括溫濕度、CO2濃度和光照強度等)。 ZigBee網關是溫室監控無線網絡的核心,由 ZigBee協調器和 STM32微控制器兩部分組成,負責建立和維護無線網絡,接收采集節點發送的數據,將數據格式轉換之后發送至上位機數據監控中心,同時將上位機數據監控中心發送的指令轉發給終端節點。 圖5 溫室監控無線網絡架構 ZigBee網關由ZigBee協調器和STM32微型控制器組成。 STM32微控制器選用 ALIENTEK戰艦 STM32 F103開發板,以ARM Cortrex- M3為內核,CPU工作頻率最高可達72 MHz,板載十多種標準接口和豐富的片上資源,板載的 DM9000網絡接口芯片通過1個100 M以太網接口( RJ45)實現連接互聯網和數據的遠程傳輸功能。 ZigBee協調器選擇 CC2530芯片,它是一種支持 IEEE802.15.4、 ZigBee和 RF4 CE應用的片上系統( SOC)解決方案,具有無線射頻模塊,集成RF收發器功能,是一種增強型的8051CPU,能夠以極低的功耗和極低的成本建立起強大的無線傳感器網絡[14-15]。ZigBee網關硬件結構如圖6所示。 圖6 ZigBee網關硬件結構 軟件設計部分需要對溫室監控無線網絡中的3種ZigBee節點的通信模塊移植 Z- stack協議棧,它是 TI公司推出的 ZigBee無線通訊協議,定義了 OSAL操作系統并管理和調度 ZigBee網絡中各層定義的協議,并提供 API接口函數,方便用戶調用。根據Z-stack協議棧分別為協調器節點、終端節點和路由節點設計程序。 圖7 ZigBee網關軟件流程 ZigBee網關是連接上位機數據監控中心和監控終端的橋梁。它既要保證節點正常工作,也要建立起與上位機數據監控中心的通信功能。 ZigBee網關在建立網絡并處理完入網請求后,檢查是否接收到指令數據和采集節點傳回的環境數據并對指令及時作出響應,ZigBee網關軟件流程如圖7所示。路由節點在運行過程中只負責進行數據和控制指令的存儲和轉發。路由器節點在上電初始化后,檢測是否有新節點加入網絡,接收終端節點發送的數據并將其轉發至 ZigBee網關,同時將 ZigBee網關發送的控制指令轉發至終端節點。終端節點包括采集節點和控制節點,采集節點將定時采集到的環境數據發往ZigBee網關,控制節點接收到控制指令后,解析指令并運行相應的控制設備。終端節點采取休眠-喚醒的機制,喚醒期間節點接收指令并執行相應的采集和控制操作。終端節點的休眠時間可結合實際情況調節,終端節點程序流程圖如圖8所示。 圖8 終端節點軟件流程 本文提出了一種優化的ZigBee路由算法并將其應用在溫室監控無線網絡中。改進的算法通過控制 RREQ分組的廣播范圍和廣播方向,選擇節點剩余能量和 LQI值較優的節點廣播,從仿真圖像中可以看出,優化的算法有效地降低了 ZigBee網絡的能耗,提高了 ZigBee網絡的運行時間。改進的ZigBee路由算法成功應用于溫室監控無線網絡中,該改進算法和監控無線網絡也可以在相關領域中應用。
2 改進ZigBee路由算法
2.1 改進算法思路
2.2 改進算法流程
2.3 改進算法仿真



2.4 實驗結果與分析
3 溫室監控無線網絡設計
3.1 硬件設計


3.2 軟件設計


4 結束語