基于nRF905的無線傳感器網絡節點的設計與實現

2.1 路由協議
現有無線網狀網絡的路由協議通常可分為:表驅動式路由協議和按需路由協議。前者需要網絡中的每個節點維護一張或多張路由表,以記錄到其他節點的路由,增加了路由開銷。而按需路由協議——動態源路由協議(DSR)使用了源路由,每一個數據分組的幀頭中包含整條路由的信息,中間節點不需要維持當前的路由信息,分組自己帶有路由信息,按需路由的特性避免了周期性路由廣播和鄰居節點的檢測。
DSR協議包括兩個過程:路由發現和路由維護。路由發現過程使用泛洪路由(Flooding Routing)。為了減少路由發現過程的開銷,每一個節點都包括一個緩存器,存放最近學到的和用過的路由信息。路由維護過程是源節點用來檢測網絡拓撲是否發生變化的機制。若拓撲發生變化、源路由發生中斷,源節點就會收到路由錯誤信息。其他節點收到路由錯誤信息后刪除中斷路由,并且重新發起廣播尋找路由。
本系統中的路由協議采用DSR協議,并對DSR協議進行一些改進。
(1)每個節點中到達目的節點含有最多兩個路由緩存。
(2)查到中斷節點后先檢查本節點中有無到中斷節點下級節點的信息,若有,則直接使用此路由,若無,則立即廣播發送RRER。
(3)所有節點收到RRER后,檢查是否含有終端路由,有則刪除中斷路由。
系統通信協議格式如表1所示。其中,FRAME_TYPE表示命令幀類型,SOURCE_ADDR表示源地址,FIRE_ADDR表示目的地址,MID表示路由節點地址,REMIAN表示最大跳數下剩余跳數,MAX表示最大跳數,DATA表示要傳輸的數據,ODD代表奇校驗。

2.2 程序設計
2.2.1 廣播
在廣播RREQ時,為了避免廣播沖突,利用nRF905的載波檢測多路訪問機制CSMA/CA,發送前先進入接收模式,監聽該信道是否空閑。如果檢測到CD信號為高,則表示該信道被占用,根據退避延時一段時間,再檢測CD信號是否為高。
而根據檢測,數據包接收的時間大致為20 μs,時隙為60 μs,加上程序運行的時間,定義短幀空間SIFS和時隙分別為50 μs及100 μs,分散幀空間DIFS為SIFS加2個時隙即250 μs。CSMA/CA程序流程如圖3所示,定義NB、CW和BE。

后退次數(NB):NB的初始值為0,當設備有數據要傳送時,經過一段后退時間(2BE-1)×100 μs后,檢測CD,若檢測到信道忙,則會再一次產生倒退時間。此時NB值會加1,NB值最大定義為4。當信道在經過4次的后退延遲時間后仍為忙,則放棄此次的傳送,以避免過大開銷。
嘗試次數(CW):循環判斷當前頻道是否空閑,當判斷到了一定次數后該頻道依然空閑則跳出循環,開始傳送數據,設初值為2。
后退指數(BE):初值設為2。
本設計中,CD信號為高時必須通過切換至standby模式來使CD信號復位,以保證下次CD信號的檢測。
根據nRF905模塊的時序可知,模塊從standby模式切換至接收或發送模式的時間為650 μs,發送和接收模式之間的切換需要550 μs,切換時間遠大于時隙及DIFS的值。因此,BE設置為2,最大為4。
2.2.2 數據傳輸
在進行數據傳輸時,源節點首先檢查自己的緩存中是否有到目的節點的路由信息,如果沒有,則先進行路由發現,與廣播模式相同。如果有至目的節點的路由信息,則根據路由信息,先發送數據請求命令RTS。當目的節點接收到返回的允許發送命令CTS信號時,則表示已經建立了數據傳輸通道,由請求節點開始傳輸數據,傳輸完畢后,由目的節點發送DATA_ACK給源節點,表示數據發送完畢。其工作流程如圖4所示。


評論