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