無線傳感器網絡自組網協議的實現方法
引言
無線傳感器網絡具有非常廣闊的應用前景[1]。文獻[2]給出一種傳統的洪泛算法(Flooding),也是最早、最簡單的路由協議。節點以廣播的形式發送消息,接收到消息的節點再以廣播形式轉發數據包給所有的鄰節點,這個過程重復執行,直到數據包到達目的地或者達到預先設定的最大跳數。文獻 [3]提出了最具代表性的層次型自組織算法(LEACH,Low Energy Adaptive Clustering Hierarchy)。LEACH是MIT的Heinzelman等人為無線傳感器網絡設計的低功耗自適應聚類路由算法,主要通過隨機選擇聚類首領、平均分攤中繼通信業務來實現。文獻[4]給出以數據為中心的自組織算法SPIN(Sensor Protocols for Information Via Negotiation)。它的主要思想是通過高層的描述方式——元數據來命名傳感數據。在發送真實的數據之前,傳感器節點廣播采集數據的描述信息元數據,當有相應的請求時,才有目的地發送數據信息。這些研究均在無線傳感器網絡的自組織算法上取得進展,但是,Flooding存在消息“內爆”和“重疊” 的缺陷;LEACH的動態分簇帶來了拓撲變換和大量廣播這樣的額外開銷;SPIN中的元數據沒有統一的形式,且其拓撲變化是局部性的,因此不適用于需要高可靠性的應用。還有很多其他相關算法停留在理論研究階段。
針對這種研究現狀,本文提出一種簡單易實現的自組織協議,選用MSP430F149單片機設計了微型傳感器節點,并實現了一種低功耗無線網絡。
1 自組織協議
在協議中,通過定義數據包的格式和關鍵字來實現節點的自組織。
1.1 協議格式
自組織協議格式如下:
其中,Pre表示前導碼,這些字符雜波不容易產生,通過測試和試驗發現,噪聲中不容易產生0x55和0xAA等非常有規律的信號;Key表示關鍵字,用來區分各種情況下的數據,接收節點會根據這些關鍵字分別進入不同的數據處理單元;From表示源地址,是發送數據的節點自身信息;Final表示數據的目標地址;Data表示有效數據,這些數據隨著字符Key的不同采用不同的格式,可攜帶不同的信息;Check表示檢驗位,可避免接收錯誤的數據包;Flag表示數據包的結束標志位。
根據協議格式中的Key,可以將節點通信時捎帶的數據包分為自組網信息、環境突變信息、上位機的控制命令、廣播信息等。節點在發送狀態突變時的數據包格式如下:
其中,0x55和0xAA為數據前導碼,0xFF為傳感器節點在感測到其狀態突變時向外發送數據的關鍵字,0x11表示發送節點的地址, 0x00為數據包要到達的目標地址,0x01表示數據包在網絡傳輸中的跳數,接著的0x01表示節點在當前網絡中的級別,0x15表示節點當時采集的溫度,0x20表示節點當時采集的電源電壓值,0x03表示節點的狀態量, 0x00…0x00為11個字節的有效數據,可記錄數據包經過節點的地址,0x3A為前面核心數據和的低8位,作為數據包的檢驗碼,0xBB為數據包的結束標志。
接收節點需要向發送節點做出應答,應答狀態突變時的數據包格式如下:
其中,0xFF就表示應答狀態突變的關鍵字,后面分別是發送節點和接收節點的地址。
1.2 自組網過程
網絡包含一個與上位機相連接的基站節點和若干傳感器節點。基站節點上電初始化后就進入低功耗模式。傳感器節點隨機布放,上電初始化后,傳感器節點首先會向基站節點發出請求分配級別的命令,然后進入低功耗狀態并打開定時器。若在設定時間內收到基站節點分配的級別,該傳感器節點就會向基站節點發送自組織信息的數據包。如果在設定時間內沒有收到基站節點分配的級別,該節點會從低功耗狀態喚醒,再次發送請求分配級別的命令,如此循環。當傳感器節點發出請求基站分配級別的命令達到設定上限后,但仍然沒有確定自己在網絡中的級別時,該節點就會向全網發出廣播命令,然后進入低功耗狀態并打開定時器。定時時間到,節點重新回到發射廣播命令狀態。當傳感器節點發射廣播的次數達到設定值時,該節點就會將接收到的應答信息進行整理,確定自己在網絡中的級別,并確定上級、同級和下級節點的相關信息。該節點再向上級節點發送包含這些信息的數據包,直到數據包傳送到基站節點,從而確定整個網絡的拓撲結構。節點的自組織流程如圖1所示。
圖1 節點的自組織流程
2 硬件研制
為了驗證提出的自組織協議,本文選用了片上資源豐富的MSP430F149單片機作為處理器,研制了一種微型傳感器節點[5]。
電能表相關文章:電能表原理
評論