基于nRF905的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn)
2.2.3 路由修復(fù)
數(shù)據(jù)傳輸時(shí),每個(gè)節(jié)點(diǎn)收到數(shù)據(jù)后,都要先回復(fù)應(yīng)答ACK信號(hào)給其前一個(gè)節(jié)點(diǎn),再轉(zhuǎn)發(fā)至下一個(gè)中繼節(jié)點(diǎn),節(jié)點(diǎn)中設(shè)置超時(shí)定時(shí)器,約等待1 633 μs ACK信號(hào),前一個(gè)節(jié)點(diǎn)沒(méi)有收到ACK,則重發(fā)數(shù)據(jù),設(shè)置重發(fā)次數(shù)為3。假若重發(fā)3次都沒(méi)有收到ACK信號(hào),則判斷下一個(gè)節(jié)點(diǎn)為中斷節(jié)點(diǎn)。查詢緩存路由中是否有其他到達(dá)中斷節(jié)點(diǎn)下游節(jié)點(diǎn)的信息,有則使用這個(gè)備用路由,無(wú)則廣播發(fā)送RERR給所有包含中斷節(jié)點(diǎn)路由的源節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)在收到該RERR后,就會(huì)從它的路由緩存中刪除所有包含該中斷節(jié)點(diǎn)的路由。
路由修復(fù)示例如圖5所示。節(jié)點(diǎn)0需要發(fā)送數(shù)據(jù)給節(jié)點(diǎn)5,節(jié)點(diǎn)0中含有到節(jié)點(diǎn)5的路由信息,0→1→2→5;節(jié)點(diǎn)0開始發(fā)送RTS,每個(gè)節(jié)點(diǎn)收到RTS后返回給前一個(gè)節(jié)點(diǎn)ACK,表示路由無(wú)中斷;假若節(jié)點(diǎn)1沒(méi)有收到ACK,重發(fā)3次后仍沒(méi)有ACK返回,則判斷節(jié)點(diǎn)2是中斷節(jié)點(diǎn);這時(shí)查詢節(jié)點(diǎn)1中有無(wú)到達(dá)節(jié)點(diǎn)5的路由,發(fā)現(xiàn)1→3→4→5,則按照此路由繼續(xù)發(fā)送RTS;當(dāng)節(jié)點(diǎn)1返回DATA_ACK,表示數(shù)據(jù)傳輸完成,延遲10×跳數(shù)(ms)后,廣播發(fā)送RRER,收到RRER的每個(gè)節(jié)點(diǎn)查詢本節(jié)點(diǎn)是否含有中斷路由,有則從路由緩存中刪除包含中斷節(jié)點(diǎn)的路由。
3 試驗(yàn)結(jié)果
試驗(yàn)網(wǎng)絡(luò)系統(tǒng)由10個(gè)普通節(jié)點(diǎn)和1個(gè)協(xié)調(diào)器節(jié)點(diǎn)組成,采用人工隨機(jī)安放的方式把所有節(jié)點(diǎn)放置在約200 m的空曠地帶。首先,把協(xié)調(diào)器節(jié)點(diǎn)通過(guò)串口與主控PC機(jī)連接,打開上位機(jī)控制軟件,并給協(xié)調(diào)器節(jié)點(diǎn)上電;隨后在隨機(jī)放置普通節(jié)點(diǎn)的同時(shí)一一打開節(jié)點(diǎn)的電源。
通過(guò)上位機(jī)軟件可以清楚地看到,每當(dāng)有新節(jié)點(diǎn)加入網(wǎng)絡(luò)(打開電源),上位機(jī)會(huì)實(shí)時(shí)顯示出新加入節(jié)點(diǎn)的地址和路由信息,并且通過(guò)反向路由返回應(yīng)答信號(hào)給新節(jié)點(diǎn),表示成功加入網(wǎng)絡(luò)。當(dāng)所有節(jié)點(diǎn)都加入網(wǎng)絡(luò)后,可以通過(guò)上位機(jī)軟件看到整個(gè)網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的路由信息,并且可以對(duì)每個(gè)節(jié)點(diǎn)或多個(gè)節(jié)點(diǎn)進(jìn)行遠(yuǎn)程控制。
為了實(shí)時(shí)監(jiān)測(cè)到每個(gè)節(jié)點(diǎn)的運(yùn)行情況,每個(gè)節(jié)點(diǎn)程序都加入定時(shí)掃描程序,定時(shí)時(shí)間1 min,檢測(cè)節(jié)點(diǎn)本身在1 min內(nèi)是否為空閑狀態(tài),如果是空閑狀態(tài),則向協(xié)調(diào)器節(jié)點(diǎn)發(fā)送節(jié)點(diǎn)信號(hào),保證本鏈路無(wú)中斷;協(xié)調(diào)器在一定時(shí)間周期內(nèi),檢測(cè)接收到的每個(gè)節(jié)點(diǎn)信號(hào),如果缺少某個(gè)節(jié)點(diǎn)的信息,則由協(xié)調(diào)器發(fā)送檢測(cè)信號(hào)給這個(gè)節(jié)點(diǎn),尋找中斷節(jié)點(diǎn)并進(jìn)行路由維護(hù)。也可以直接通過(guò)主控電腦的上位機(jī)軟件手動(dòng)發(fā)送檢測(cè)信號(hào)給每個(gè)節(jié)點(diǎn),從而檢測(cè)每個(gè)節(jié)點(diǎn)的運(yùn)行情況。
nRF905的空中傳輸速率峰值為100 kb/s,有效傳輸速率為50 kb/s。
通過(guò)上位機(jī)軟件對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行連續(xù)數(shù)據(jù)傳輸試驗(yàn),測(cè)試在本協(xié)議下的網(wǎng)絡(luò)吞吐率。測(cè)試條件:200 m空曠地帶,分別測(cè)試一個(gè)節(jié)點(diǎn)至10節(jié)點(diǎn)網(wǎng)絡(luò)中點(diǎn)對(duì)點(diǎn),1跳、2跳、3跳情況下的吞吐率,數(shù)據(jù)包大小32 B。傳輸要求一個(gè)包到達(dá)目的節(jié)點(diǎn)后返回到應(yīng)答表示傳輸完成,其吞吐率計(jì)算[6]如下:
測(cè)得的網(wǎng)絡(luò)吞吐率如圖6所示??梢钥闯?,網(wǎng)絡(luò)中進(jìn)行點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳輸,吞吐率約為16 kb/s,并且隨著節(jié)點(diǎn)數(shù)的增多,影響很??;隨著跳數(shù)的增加,網(wǎng)絡(luò)吞吐率降低,但是網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量增多,同時(shí)節(jié)點(diǎn)傳輸幾率增加,因此逐漸趨于穩(wěn)定值。最后在網(wǎng)絡(luò)設(shè)定最大跳數(shù)(3跳)、10個(gè)節(jié)點(diǎn)網(wǎng)絡(luò)的情況下,網(wǎng)絡(luò)吞吐率約為4 kb/s。
通過(guò)實(shí)驗(yàn)測(cè)得數(shù)據(jù)表明,在短距離的無(wú)線通信網(wǎng)絡(luò)中,該系統(tǒng)可以穩(wěn)定可靠地運(yùn)行,數(shù)據(jù)傳輸率高,網(wǎng)絡(luò)吞吐率完全可以達(dá)到一般的無(wú)線傳感器網(wǎng)絡(luò)的要求。并且該系統(tǒng)具有良好的擴(kuò)展性、移植性和實(shí)用性,可廣泛運(yùn)用于溫度、濕度、光傳感器采集數(shù)據(jù)、能量監(jiān)測(cè)及電路控制等技術(shù)。
參考文獻(xiàn)
[1] 孫利民,李建中,陳渝,等.無(wú)線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005.
[2] 陳???,陳勤,羅敏,等.DSR本地修復(fù)算法的改進(jìn)[J].微電子學(xué)與計(jì)算機(jī),2009(26):142-145.
[3] JAWHAR I, TRABELSI Z, Al-JAROODI J. Towards more reliable source routing in wireless networks[C]. Proc. IEEE Int. Conf. Networking, Archit., Storage-IEEE NAS 2008, 2008.
[4] 屠梓浩,吳榮泉,錢立群.無(wú)線Ad Hoc網(wǎng)絡(luò)DSR路由協(xié)議的優(yōu)化設(shè)計(jì)[J].計(jì)算機(jī)工程,2009,35(4):97-99.
[5] Nordic VLSIASA. Single Chip 433/868/915MHz Transceiver nRF905. 2004-01.
[6] 柯欣,孫利民.多跳無(wú)限傳感器網(wǎng)絡(luò)吞吐量分析[J].通信學(xué)報(bào),2007,28(9):78-84.
評(píng)論