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