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