CSMA協議在無線傳感器網絡中的實現
1.2 信道監測的設計
CC2420提供了一項CSMA2CA的功能,稱為CCA(ClearChannelAssessment,空閑信道評估),它使用一個寄存器來設置閾值。當CC2420收到CCA命令后,就開始采樣RSSI值,只有采樣到的RSSI值小于寄存器中的閾值時才允許發送數據。CCA雖然實現了信道監測的基本功能,但是也有其自身的缺點:不夠靈活且開放程度不夠,只能進行一次完整的通道監測,并不能設置采樣次數。
這就限制了它在其他協議中的使用,例如在LPL(LowPowerListening,低功耗偵聽)協議中,只需要進行一次采樣作為偵聽。另外,它的判定機制并不夠完善,只有一個閾值,因而開發者難以找到合適的閾值。
本文參照CCA的閾值機制,設置上下閾值并利用CC2420讀取RSSI采樣值的命令,用軟件來完成信道監測工作。本文使用的信道監測及判定的基本原理就是:先設置兩個適當的信號強度閾值,一個是最小信號強度minSignal,其含義是信道中有數據發送時的最小信號強度值;另一個是噪聲強度noiseStrength,其含義是信道空閑時的信號強度值。然后物理層在一段時間內不斷地進行RSSI采樣,并把采樣結果按照某種規則(在實現中有具體說明)與閾值進行比較,從而得到信道的活動狀態。而且為了更準確地反映信道狀態,在不能判斷信道活動狀態時,還應有擴展采樣機制。
另外,這兩個信號強度閾值并不是一直不變的,它們必須根據信道一段時期的信號強度情況來動態更新,因此本文還實現了一種閾值更新機制,它能根據當前的信道信號強度和一些強度統計信息來動態地更新閾值。
從接口上看,物理層的信道監測只是提供給MAC層的CSMA協議一個探測信道的接口。為了設計一個靈活的信道探測接口給上層,就必須給上層一些調整的接口,例如可以讓上層來設定具體某次監測的采樣次數,這樣上層就可以根據不同的實際情況來設定采樣數。
圖2為物理層信道監測提供的接口與MAC層CSMA的關系簡圖。
2 信道監測的實現
2.1 信道活動狀態判斷的基本規則
采樣得到的RSSI值是一個有符號的振幅值,它只有一個字節。這樣的值并不利于分析,所以統一將其值上升128,即對讀出的RSSI值統一加上128,因此轉換后的值都是為正的,后面提到的RSSI值指的都是轉換后的值。
假設上層設定信道采樣窗口數為N。為了完成連續的N次采樣,需要使用一個采樣定時器。CC2420的RSSI采樣時間約為128μs,再加上硬件延遲以及軟件處理延遲時間,采樣定時器設置為1ms循環觸發(這1ms的采樣在CSMA中稱為“采樣窗口”)。每次定時器觸發后,就向CC2420發送命令讀取當前信道的RSSI值,然后采用如下規則進行信道活動狀態判斷:
①如果采樣到的RSSI值大于等于閾值minSignal,那么就判定信道正被其他節點使用,即使采樣未滿N次也不再采樣,并立即通知上層協議信道正被使用。反之如果該次采樣監測緄鬧敵∮諢虻扔minSignal,那么本次采樣不做任何判斷,繼續下次的采樣。
②如果一直采樣到最后,且最后一次的RSSI值小于noiseLevel(噪聲強度),那么就判定信道為空閑,并給出修改閾值標志,通知上層可以發送數據。注意,只要判定為信道空閑,就要給出更新閾值標志,原因將在后面的閾值維護中說明。
如上所述,只要采樣值大于等于minSignal,就判定信道是繁忙的,而判定信道空閑時卻要求所有的采樣都小于minSignal,且最后一次的采樣值要小于noiseLevel。然而上面兩個規則并不完善,并不能處理任何情況,以下兩種情況就不能得出結論:最后一次采樣绱礱揮械玫RSSI值,或者最后一次采樣的RSSI值介于noiseLevel和min2Signal之間。此時就必須使用擴展規則。
評論