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