基于nRF905的無線傳感器網(wǎng)絡(luò)節(jié)點的設(shè)計與實現(xiàn)
2.1 路由協(xié)議
現(xiàn)有無線網(wǎng)狀網(wǎng)絡(luò)的路由協(xié)議通??煞譃椋罕眚?qū)動式路由協(xié)議和按需路由協(xié)議。前者需要網(wǎng)絡(luò)中的每個節(jié)點維護一張或多張路由表,以記錄到其他節(jié)點的路由,增加了路由開銷。而按需路由協(xié)議——動態(tài)源路由協(xié)議(DSR)使用了源路由,每一個數(shù)據(jù)分組的幀頭中包含整條路由的信息,中間節(jié)點不需要維持當(dāng)前的路由信息,分組自己帶有路由信息,按需路由的特性避免了周期性路由廣播和鄰居節(jié)點的檢測。
DSR協(xié)議包括兩個過程:路由發(fā)現(xiàn)和路由維護。路由發(fā)現(xiàn)過程使用泛洪路由(Flooding Routing)。為了減少路由發(fā)現(xiàn)過程的開銷,每一個節(jié)點都包括一個緩存器,存放最近學(xué)到的和用過的路由信息。路由維護過程是源節(jié)點用來檢測網(wǎng)絡(luò)拓?fù)涫欠癜l(fā)生變化的機制。若拓?fù)浒l(fā)生變化、源路由發(fā)生中斷,源節(jié)點就會收到路由錯誤信息。其他節(jié)點收到路由錯誤信息后刪除中斷路由,并且重新發(fā)起廣播尋找路由。
本系統(tǒng)中的路由協(xié)議采用DSR協(xié)議,并對DSR協(xié)議進行一些改進。
(1)每個節(jié)點中到達目的節(jié)點含有最多兩個路由緩存。
(2)查到中斷節(jié)點后先檢查本節(jié)點中有無到中斷節(jié)點下級節(jié)點的信息,若有,則直接使用此路由,若無,則立即廣播發(fā)送RRER。
(3)所有節(jié)點收到RRER后,檢查是否含有終端路由,有則刪除中斷路由。
系統(tǒng)通信協(xié)議格式如表1所示。其中,F(xiàn)RAME_TYPE表示命令幀類型,SOURCE_ADDR表示源地址,F(xiàn)IRE_ADDR表示目的地址,MID表示路由節(jié)點地址,REMIAN表示最大跳數(shù)下剩余跳數(shù),MAX表示最大跳數(shù),DATA表示要傳輸?shù)臄?shù)據(jù),ODD代表奇校驗。
2.2 程序設(shè)計
2.2.1 廣播
在廣播RREQ時,為了避免廣播沖突,利用nRF905的載波檢測多路訪問機制CSMA/CA,發(fā)送前先進入接收模式,監(jiān)聽該信道是否空閑。如果檢測到CD信號為高,則表示該信道被占用,根據(jù)退避延時一段時間,再檢測CD信號是否為高。
而根據(jù)檢測,數(shù)據(jù)包接收的時間大致為20 μs,時隙為60 μs,加上程序運行的時間,定義短幀空間SIFS和時隙分別為50 μs及100 μs,分散幀空間DIFS為SIFS加2個時隙即250 μs。CSMA/CA程序流程如圖3所示,定義NB、CW和BE。
后退次數(shù)(NB):NB的初始值為0,當(dāng)設(shè)備有數(shù)據(jù)要傳送時,經(jīng)過一段后退時間(2BE-1)×100 μs后,檢測CD,若檢測到信道忙,則會再一次產(chǎn)生倒退時間。此時NB值會加1,NB值最大定義為4。當(dāng)信道在經(jīng)過4次的后退延遲時間后仍為忙,則放棄此次的傳送,以避免過大開銷。
嘗試次數(shù)(CW):循環(huán)判斷當(dāng)前頻道是否空閑,當(dāng)判斷到了一定次數(shù)后該頻道依然空閑則跳出循環(huán),開始傳送數(shù)據(jù),設(shè)初值為2。
后退指數(shù)(BE):初值設(shè)為2。
本設(shè)計中,CD信號為高時必須通過切換至standby模式來使CD信號復(fù)位,以保證下次CD信號的檢測。
根據(jù)nRF905模塊的時序可知,模塊從standby模式切換至接收或發(fā)送模式的時間為650 μs,發(fā)送和接收模式之間的切換需要550 μs,切換時間遠(yuǎn)大于時隙及DIFS的值。因此,BE設(shè)置為2,最大為4。
2.2.2 數(shù)據(jù)傳輸
在進行數(shù)據(jù)傳輸時,源節(jié)點首先檢查自己的緩存中是否有到目的節(jié)點的路由信息,如果沒有,則先進行路由發(fā)現(xiàn),與廣播模式相同。如果有至目的節(jié)點的路由信息,則根據(jù)路由信息,先發(fā)送數(shù)據(jù)請求命令RTS。當(dāng)目的節(jié)點接收到返回的允許發(fā)送命令CTS信號時,則表示已經(jīng)建立了數(shù)據(jù)傳輸通道,由請求節(jié)點開始傳輸數(shù)據(jù),傳輸完畢后,由目的節(jié)點發(fā)送DATA_ACK給源節(jié)點,表示數(shù)據(jù)發(fā)送完畢。其工作流程如圖4所示。
評論