杜永文,練云翔,朱曉陽
(蘭州交通大學(xué) 電子與信息工程學(xué)院,甘肅 蘭州730070)
無線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSNs)[1]作為計算、通信和傳感器三項技術(shù)相結(jié)合的產(chǎn)物,具有強大的感知能力、計算能力和通信能力。將先進的科技手段融入到農(nóng)業(yè)生產(chǎn)中,提高農(nóng)業(yè)的生產(chǎn)效率、經(jīng)濟效益與環(huán)境效益,這已經(jīng)成為了實現(xiàn)農(nóng)業(yè)現(xiàn)代化的必然發(fā)展趨勢。利用WSNs 技術(shù)進行信息采集與管理[2~4],是目前農(nóng)業(yè)信息技術(shù)研究的熱點。
在農(nóng)業(yè)應(yīng)用上的WSNs 是一種特定的WSNs,這種特定的WSNs 不同于隨機分布WSNs,它通常部署在可以觸及的區(qū)域,在固定位置上人工部署傳感器節(jié)點[5]。它采用固定的拓?fù)浣Y(jié)構(gòu),這種拓?fù)浣Y(jié)構(gòu)會形成特定的路由,傳感器節(jié)點通過特定的路由把感知的數(shù)據(jù)收集起來。針對農(nóng)業(yè)應(yīng)用的特點,本文設(shè)計了特定WSNs 的拓?fù)浣Y(jié)構(gòu)、路由、傳感器節(jié)點、控制端和農(nóng)業(yè)灌溉系統(tǒng)的控制策略。為解決因節(jié)點故障導(dǎo)致的路由鏈路中斷問題,研究了特定WSNs 的路由恢復(fù)算法。這種特定WSNs 的路由恢復(fù)算法使用Tiny-OS[6,7]系統(tǒng)的仿真器TOSSIM[8]進行了仿真。對這種路由恢復(fù)算法和動態(tài)源路由(dynamic source routing,DSR)協(xié)議[9,10]的仿真結(jié)果表明:這種路由恢復(fù)算法可以實現(xiàn)在節(jié)點損壞的情況下自動恢復(fù)路由,而且與具有同樣路由恢復(fù)功能的DSR 協(xié)議相比傳輸?shù)陌?,可以有效降低?jié)點能耗。
基于WSNs 的灌溉系統(tǒng)包括WSNs、控制端和灌溉系統(tǒng)等三個部分組成。WSNs 由傳感器節(jié)點、路由節(jié)點和匯聚節(jié)點組成。
如圖1,傳感器節(jié)點由CC2530 無線控制器、電池、JWSL—6空氣溫濕度傳感器、GY—2561 光強傳感器、YL—69 土壤濕度傳感器構(gòu)成。
CC2530 無線控制器內(nèi)包含性能優(yōu)良的低功耗8051 微控制器內(nèi)核、適應(yīng)2.4 GHz IEEE 802.15.4 的RF 收發(fā)器和A/D 轉(zhuǎn)換器。JWSL—6 空氣溫濕度傳感器用來測量空氣中的溫度和濕度。GY—2561 光強傳感器用來感知光照強度。YL—69 土壤濕度傳感器負(fù)責(zé)感知土壤濕度,通過模擬信號輸出土壤濕度的精確值。
圖1 傳感器節(jié)點設(shè)計圖Fig 1 Design diagram of sensor node
為了覆蓋整個灌溉區(qū)域,并減少重復(fù)覆蓋的情況,傳感器節(jié)點使用人工放置的方式覆蓋灌溉區(qū)域。如圖2,傳感器節(jié)點均勻部署在灌溉區(qū)域,每4 個感知節(jié)點劃分為一簇,簇的中心位置放置路由節(jié)點。
圖2 部署和拓?fù)鋱DFig 2 Deployment and topology diagram
由于路由節(jié)點的傳輸半徑比路由節(jié)點到匯聚節(jié)點的距離小得多,所以,必須通過多跳的方式把環(huán)境信息傳給匯聚節(jié)點。如圖3,路由節(jié)點根據(jù)設(shè)計好的路由把環(huán)境信息傳輸給下一個路由節(jié)點,這樣傳輸下去直到環(huán)境信息到達(dá)匯聚節(jié)點為止。
圖3 路由設(shè)計圖Fig 3 Routing design diagram
2.4.1 路由節(jié)點的路由表設(shè)計
每個路由節(jié)點維護著一個路由表,它記錄了本路由節(jié)點所在路由中的上一個路由節(jié)點地址、下一個路由節(jié)點地址和下下個路由節(jié)點的地址。
2.4.2 路由恢復(fù)算法的研究
為了解決路由節(jié)點損壞后路由中斷的問題,提出了異常節(jié)點路由恢復(fù)(faulty node routing recovery,F(xiàn)NRR)算法。FNRR 算法運行在每個路由節(jié)點中,它可以在一個已建立路由的WSNs 中恢復(fù)損壞的路由。在WSNs 部署后,每個路由節(jié)點都保存了下一個路由節(jié)點的地址。
當(dāng)路由節(jié)點收到上一個路由節(jié)點的數(shù)據(jù)后會保存上一個路由節(jié)點的地址,接著會回復(fù)上一個路由節(jié)點一個回復(fù)包,回復(fù)包中包含下一個路由節(jié)點的地址信息,然后把數(shù)據(jù)轉(zhuǎn)發(fā)給下一個路由節(jié)點。
當(dāng)路由節(jié)點收到周圍傳感器節(jié)點采集的數(shù)據(jù)后,會傳輸數(shù)據(jù)給下一個路由節(jié)點,并等待下一個路由節(jié)點返回的回復(fù)包。如果收到回復(fù)包,就把包內(nèi)的下下個路由節(jié)點的地址保存。如果等待一段時間沒有接收到回復(fù)包,就重復(fù)發(fā)送數(shù)據(jù),直到第三次沒有收到回復(fù)包時,就把路由表中的下一個路由節(jié)點地址位置的內(nèi)容修改為下下個路由節(jié)點地址位置的值,然后清空路由表的下下個路由節(jié)點地址位置的內(nèi)容。
FNRR 算法描述表述如下:
定時發(fā)送線程
{ if(此節(jié)點是路由節(jié)點而不是匯聚節(jié)點)
{ if(累計沒有收到回復(fù)包的計數(shù)<3)
{ 累計沒有收到回復(fù)包的計數(shù)加1;
}
else
{ 路由表的下一個節(jié)點地址位置存放路由表的下下個節(jié)點的地址;
路由表的下下個節(jié)點的地址位置清空;
累計沒有收到回復(fù)包的計數(shù)清零;
}
}
發(fā)送包給下一個節(jié)點;
}
接收數(shù)據(jù)線程
{ if(包的類型是發(fā)送包)
{ 包的源地址保存在路由表的上一個節(jié)點的地址位置中;
向上一個節(jié)點發(fā)送回復(fù)包,回復(fù)包包含了下一個節(jié)點的地址;
}
else if(包的類型是回復(fù)包)
{ 把下下個節(jié)點地址保存在路由表的下下個節(jié)點地址位置中;
累計沒有收到回復(fù)包的計數(shù)清零;
}
}
如圖4,當(dāng)有路由節(jié)點損壞時,路由節(jié)點上的FNRR 算法會讓路由節(jié)點不再與下一個損壞的路由節(jié)點傳輸數(shù)據(jù),而是與損壞的路由節(jié)點的下一個路由節(jié)點傳輸數(shù)據(jù)。
圖4 路由恢復(fù)示意圖Fig 4 Diagram of routing recovery
如圖5,控制端由CC2530 無線控制器、S3C2440 處理器、驅(qū)動電路、觸摸屏、電源組成。控制端的處理器采用三星公司的S3C2440 處理器??刂贫说臒o線數(shù)據(jù)接收和發(fā)送使用CC2530 無線控制器上的RF 收發(fā)器實現(xiàn)。觸摸屏采用帶觸摸屏接口的4.3 寸LCD/STN 液晶屏。
圖5 控制端硬件結(jié)構(gòu)圖Fig 5 Hardware structure diagram of controller end
3.2.1 控制端軟件環(huán)境
控制端上安裝內(nèi)核版本為Linux—2.6.30.4 的嵌入式Linux 系統(tǒng)。在嵌入式Linux 系統(tǒng)中安裝了Qtopia 軟件平臺,可以運行QT 圖形界面程序。使用者可以通過觸摸屏操作軟件,用觸屏的方式進行人機交互。
3.2.2 控制端軟件設(shè)計
通過控制端軟件在控制端的觸摸屏上顯示感知區(qū)域的環(huán)境情況、路由節(jié)點的工作情況等。控制端軟件會把這些信息保存在控制端的嵌入式數(shù)據(jù)庫中。控制端軟件會根據(jù)設(shè)置好的參數(shù)和灌溉策略自動啟動和關(guān)閉灌溉系統(tǒng)。
3.2.3 灌溉策略
當(dāng)控制端發(fā)現(xiàn)灌溉區(qū)域的土壤濕度低于設(shè)定的閾值時開啟灌溉系統(tǒng)。當(dāng)土壤濕度高于設(shè)定的閾值時或當(dāng)光強度弱、空氣溫度低、空氣濕度高時關(guān)閉或不啟動灌溉系統(tǒng)。
本論文提出的FNRR 算法為了與DSR 進行對比,對WSNs 的路由節(jié)點進行了仿真。仿真采用的是TinyOS 操作系統(tǒng)上的仿真器TOSSIM。TinyOS 是針對WSNs 開發(fā)的一套操作系統(tǒng)。TOSSIM 是TinyOS 操作系統(tǒng)上的仿真器,它可以模擬傳感器節(jié)點運行nesC 程序。
仿真過程:將FNRR 算法寫入路由節(jié)點,分別對4,6,8,10 個路由節(jié)點的WSNs 進行仿真。每次仿真都讓一個節(jié)點停止通信,然后讓剩余節(jié)點通過算法恢復(fù)路由。用DSR 協(xié)議也在4,6,8,10 個路由節(jié)點的WSNs 中進行同樣的仿真,然后在從建立路由到恢復(fù)路由的過程中對這兩種算法傳輸?shù)陌鼣?shù)量進行統(tǒng)計,如圖6 所示。
圖6 包數(shù)量統(tǒng)計圖Fig 6 Statistical graph of packages number
從仿真結(jié)果中可以看出:在WSNs 中使用FNRR 算法可以在路由節(jié)點損壞時讓其他路由節(jié)點產(chǎn)生新的路由繼續(xù)傳輸數(shù)據(jù),保持WSNs 的正常工作,并且FNRR 算法在通信使用的包數(shù)量上比DSR 算法更少,這樣節(jié)省了通信消耗的能量。
針對農(nóng)業(yè)應(yīng)用的特點,本文設(shè)計了特定WSNs 的拓?fù)浣Y(jié)構(gòu)、路由、傳感器節(jié)點、控制端和農(nóng)業(yè)灌溉系統(tǒng)的控制策略。提出了一種特定WSNs 的路由恢復(fù)算法,并對這種路由恢復(fù)算法進行了仿真和分析。仿真結(jié)果表明:這種路由恢復(fù)算法傳輸?shù)陌鼣?shù)量比動態(tài)源路由協(xié)議更少,可以有效降低節(jié)點的能耗。
[1] Akyildiz I F,Su W,Sankarasubramaniam Y,et al.Wireless sensor networks:A survey[J].Computer Networks,2002,38(4):393-422.
[2] 王士明,俞阿龍,楊維衛(wèi).基于Zig Bee 的大水域水質(zhì)環(huán)境監(jiān)測系統(tǒng)設(shè)計[J].傳感器與微系統(tǒng),2014,33(11):102-105.
[3] 李加念,倪慧娜.基于無線傳感器網(wǎng)絡(luò)的小粒種咖啡園滴灌自動控制系統(tǒng)[J].傳感器與微系統(tǒng),2014,33(10):43-46.
[4] 肖克輝.基于無線傳感器網(wǎng)絡(luò)的精細(xì)農(nóng)業(yè)智能節(jié)水灌溉系統(tǒng)[J].農(nóng)業(yè)工程學(xué)報,2010,26(11):170-175.
[5] 朱性偉,王子榮.多深度土壤溫度無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計[J].傳感器與微系統(tǒng),2014,33(10):73-79.
[6] 劉 營,于宏毅.基于TinyOS 的無線傳感器網(wǎng)絡(luò)應(yīng)用程序開發(fā)技術(shù)[J].傳感器與微系統(tǒng),2007,26(3):93-96.
[7] 夏靜清,張 榮.P—TOSSIM:一個基于TinyOS 傳感器網(wǎng)絡(luò)的任務(wù)調(diào)度仿真程序[J].計算機應(yīng)用,2005,25(12):2968-2970.
[8] 孫發(fā)軍,吳 昊.一個基于TOSSIM 的異構(gòu)傳感器網(wǎng)絡(luò)仿真方案[J].計算機仿真,2007,24(10):126-129.
[9] 莊春梅,王利利,陸建德.DSR 協(xié)議的路由緩存策略[J].計算機工程,2010,36(2):100-101.
[10]黃 偉,李臘元,孫 強.MANET 路由協(xié)議DSR 的OPNET 實現(xiàn)及仿真[J].武漢理工大學(xué)學(xué)報,2005,29(2):182-185.