一種無線傳感器網(wǎng)絡(luò)自組網(wǎng)協(xié)議的研究與實現(xiàn)
1 引言
無線傳感器網(wǎng)絡(luò)是由一些功耗低、體積小的傳感器節(jié)點,以無線通訊方式自組成一個網(wǎng)絡(luò)。這些分散的節(jié)點能夠協(xié)作地實施監(jiān)測、感知和采集各種環(huán)境對象的信息,具有非常廣闊的應(yīng)用前景[1]。近年來,無線傳感器網(wǎng)絡(luò)的研究進展十分迅速,取得了較為豐富的研究成果。自組織算法是無線傳感器網(wǎng)絡(luò)的核心技術(shù)之一,通過自組織算法自動生成的良好的網(wǎng)絡(luò)拓撲結(jié)構(gòu),能夠提高路由協(xié)議和MAC協(xié)議的效率,可為數(shù)據(jù)融合、時間同步和目標定位等很多方面奠定基礎(chǔ),也有利于節(jié)省節(jié)點的能量以延長網(wǎng)絡(luò)的生存期。國內(nèi)外研究者們從ad hoc網(wǎng)絡(luò)借鑒了寶貴經(jīng)驗,提出了形式多樣、側(cè)重點不同的自組織算法。
文獻[2]給出一種傳統(tǒng)的洪泛算法(Flooding),也是最早、最簡單的路由協(xié)議。節(jié)點以廣播的形式發(fā)送消息,接收到消息的節(jié)點再以廣播形式轉(zhuǎn)發(fā)數(shù)據(jù)包給所有的鄰節(jié)點,這個過程重復(fù)執(zhí)行,直到數(shù)據(jù)包到達目的地或者達到預(yù)先設(shè)定的最大跳數(shù)。文獻[3]提出了最具代表性的層次型自組織算法(LEACH,low energy adaptive clustering hierarchy)。LEACH是MIT的Heinzelman等人為無線傳感器網(wǎng)絡(luò)設(shè)計的低功耗自適應(yīng)聚類路由算法。主要通過隨機選擇聚類首領(lǐng),平均分攤中繼通信業(yè)務(wù)來實現(xiàn)。文獻[4]給出以數(shù)據(jù)為中心的自組織算法SPIN(Sensor Protocols for Information Via Negotiation)。它的主要思想是通過高層的描述方式――元數(shù)據(jù)來命名傳感數(shù)據(jù)。在發(fā)送真實的數(shù)據(jù)之前,傳感器節(jié)點廣播采集數(shù)據(jù)的描述信息元數(shù)據(jù),當有相應(yīng)的請求時,才有目的地發(fā)送數(shù)據(jù)信息。這些研究均在無線傳感器網(wǎng)絡(luò)的自組織算法上取得進展,但是,Flooding存在消息“內(nèi)爆”和“重疊”的缺陷。LEACH的動態(tài)分簇帶來了拓撲變換和大量廣播這樣的額外開銷。SPIN中的元數(shù)據(jù)沒有統(tǒng)一的形式,SPIN的拓撲變化是局部性的,因此不適用于需要高可靠性的應(yīng)用。還有很多其它相關(guān)算法停留在理論研究階段。這些研究均在無線傳感器網(wǎng)絡(luò)的自組織算法上取得進展,但沒有考慮實際應(yīng)用的諸多因素,如不易實現(xiàn),算法的收斂性,如何減小外界因素對通訊的干擾,以及節(jié)點失效后如何追加等。
針對目前無線傳感器網(wǎng)絡(luò)中自組織算法的研究現(xiàn)狀,本文首先提出一種簡單易實現(xiàn)的自組織協(xié)議,選用MSP
2 自組織協(xié)議
在協(xié)議中,通過定義數(shù)據(jù)包的格式和關(guān)鍵字來實現(xiàn)節(jié)點的自組織。數(shù)據(jù)包中包含一個關(guān)鍵字和多個字節(jié)的數(shù)據(jù),只要根據(jù)數(shù)據(jù)包的格式填入相應(yīng)信息,就可實現(xiàn)自組織功能。多個字節(jié)中包括了節(jié)點自身信息、數(shù)據(jù)包跳數(shù)、數(shù)據(jù)路由等信息;關(guān)鍵字表示不同性質(zhì)的包,區(qū)分各種情況的數(shù)據(jù),提升網(wǎng)絡(luò)的通訊能力。只需要改變數(shù)據(jù)包中的標志位,就可以對信息進行加密。
2.1 協(xié)議格式
自組織協(xié)議格式如下表示。
Pre |
Key |
From |
Final |
Data |
Check |
Flag |
其中Pre表示前導(dǎo)碼,這些字符雜波不容易產(chǎn)生,通過測試和試驗發(fā)現(xiàn),噪聲中不容易產(chǎn)生像0x55和0xAA非常有規(guī)律的信號;Key表示關(guān)鍵字,來區(qū)分各種情況下的數(shù)據(jù),接收節(jié)點會根據(jù)這些關(guān)鍵字分別進入不同的數(shù)據(jù)處理單元;From表示源地址,是發(fā)送數(shù)據(jù)的節(jié)點自身信息;Final表示數(shù)據(jù)的目標地址;Data表示有效數(shù)據(jù),這些數(shù)據(jù)隨著字符Key的不同采用不同的格式,可攜帶不同的信息;Check表示檢驗位,可避免接收錯誤的數(shù)據(jù)包;Flag表示數(shù)據(jù)包的結(jié)束標志位。
根據(jù)協(xié)議格式中的Key可以將節(jié)點通訊時捎帶的數(shù)據(jù)包分為自組網(wǎng)信息、環(huán)境突變信息、上位機的控制命令、廣播信息等。例如下給出了節(jié)點在發(fā)送狀態(tài)突變時的數(shù)據(jù)包格式。
0x55 |
0xAA |
0xFF |
0x11 |
0x00 |
0x01 |
0x01 |
0x15 |
0x20 |
0x03 |
0x00…0x00 |
0x |
0xBB |
其中0x55和0xAA為數(shù)據(jù)前導(dǎo)碼,0xFF為傳感器節(jié)點在感測到其狀態(tài)突變時向外發(fā)送數(shù)據(jù)的關(guān)鍵字,0x11表示發(fā)送節(jié)點的地址,0x00為數(shù)據(jù)包要到達的目標地址,0x01表示數(shù)據(jù)包在網(wǎng)絡(luò)傳輸中的跳數(shù),接著的0x01表示節(jié)點在當前網(wǎng)絡(luò)中的級別,0x15表示節(jié)點當時采集的溫度,0x20表示節(jié)點當時采集的電源電壓值,0x03表示節(jié)點的狀態(tài)量, 0x00…0x00為11個字節(jié)的有效數(shù)據(jù),可記錄數(shù)據(jù)包經(jīng)過節(jié)點的地址,0x
接收節(jié)點需要向發(fā)送節(jié)點做出應(yīng)答,下表為應(yīng)答狀態(tài)突變時的數(shù)據(jù)包格式。
0x55 |
0xAA |
0xFF |
0x00 |
0x11 |
0x00 |
0x00 |
0x00 |
0x00 |
0x00 |
0x00…0x00 |
0x00 |
0xBB |
其中0xFE就表示應(yīng)答狀態(tài)突變的關(guān)鍵字符,后面分別是發(fā)送節(jié)點和接收節(jié)點的地址。
2.2 自組網(wǎng)過程
網(wǎng)絡(luò)包含一個與上位機相連接的基站節(jié)點和若干傳感器節(jié)點?;竟?jié)點上電初始化后就進入低功耗模式。傳感器節(jié)點隨機布放,傳感器節(jié)點上電初始化后,首先會向基站節(jié)點發(fā)出請求分配級別的命令,然后進入低功耗狀態(tài)并打開定時器。在設(shè)定時間內(nèi)收到基站節(jié)點分配的級別,該傳感器節(jié)點就會向基站節(jié)點發(fā)送自組織信息的數(shù)據(jù)包。如果在設(shè)定時間內(nèi)沒有收到基站節(jié)點分配的級別,該節(jié)點會從低功耗狀態(tài)喚醒,再次發(fā)送請求分配級別的命令,如此循環(huán)。當傳感器節(jié)點發(fā)出請求基站分配級別的命令達到設(shè)定上限后,仍然沒有確定自己在網(wǎng)絡(luò)中的級別。該節(jié)點就會向全網(wǎng)發(fā)出廣播命令,然后進入低功耗狀態(tài)并打開定時器。定時時間到,節(jié)點重新回到發(fā)射廣播命令狀態(tài)。當傳感器節(jié)點發(fā)射廣播的次數(shù)達到設(shè)定值,該節(jié)點就會將接收到的應(yīng)答信息進行整理,確定自己在網(wǎng)絡(luò)中的級別,并確定上級、同級和下級節(jié)點的相關(guān)信息。該節(jié)點再向上級節(jié)點發(fā)送包含這些信息的數(shù)據(jù)包,直到數(shù)據(jù)包傳送到基站節(jié)點,這樣可確定整個網(wǎng)絡(luò)的拓撲結(jié)構(gòu)。節(jié)點的自組織流程如圖1所示。
圖1 節(jié)點的自組織流程
2 硬件研制
為了驗證提出的自組織協(xié)議,本文選用了片上資源豐富的MSP430F149單片機作為處理器,研制了一種微型傳感器節(jié)點[5]。
2.1 總體方案
系統(tǒng)由基站節(jié)點和傳感器節(jié)點組成。節(jié)點硬件選擇了支持低功耗工作模式的MSP430F149單片機和nRF905射頻模塊,使用32 768 Hz的低頻晶振,采用2節(jié)5號電池供電。在設(shè)計節(jié)點的過程中,撥碼開關(guān)、蜂鳴器、LCD指示燈的設(shè)計極大方便了實驗的調(diào)試。
2.2 節(jié)點設(shè)計
圖2為傳感器節(jié)點的框圖,該節(jié)點使用電池供電,體積小巧,只有打火機般大小。
圖2 傳感器節(jié)點框圖
MSP430系列單片機是TI公司生產(chǎn)的一種混合信號控制器,其突出優(yōu)點是低電源電壓、超低功耗,可采用電池工作,有很長的使用時間[6]。
nRF905是挪威Nordic VLSI公司推出的單片射頻收發(fā)器,低電壓工作,功耗非常低,工作于433/868/915 MHz三個ISM(工業(yè)、科學(xué)和醫(yī)學(xué))頻道,頻道之間的轉(zhuǎn)換時間小于650 μs[7]。ShockBurstTM工作模式,能自動處理字頭和CRC(循環(huán)冗余碼校驗)。通過SPI串口與微控制器通信,使用非常方便;內(nèi)建空閑模式 與關(guān)機模式,易于實現(xiàn)節(jié)能。nRF905適用于無線數(shù)據(jù)通信、無線開鎖等諸多領(lǐng)域。
天線的設(shè)計是整個系統(tǒng)設(shè)計的一個非常重要的環(huán)節(jié)。系統(tǒng)功耗的高低以及網(wǎng)絡(luò)性能的好壞與天線的設(shè)計都有密切關(guān)系。天線部分的設(shè)計采用整體PCB環(huán)行差分天線。與傳統(tǒng)的鞭狀天線相比,不僅節(jié)省空間,降低生產(chǎn)成本,機構(gòu)上也更穩(wěn)固可靠。
因為本文主要研究無線傳感器網(wǎng)絡(luò)的自組網(wǎng)和低功耗技術(shù),所以只選擇了MSP430系列單片機的內(nèi)部集成熱敏二極管來測量節(jié)點的工作溫度,但預(yù)留了大量外接傳感器接口,外接傳感器的信號能以中斷方式喚醒節(jié)點。
2.3 系統(tǒng)功耗
傳感器節(jié)點采用電池供電,功耗的高低直接影響整個網(wǎng)絡(luò)的生命期。系統(tǒng)的功耗不僅與選擇的元器件有關(guān),還與整個網(wǎng)絡(luò)的控制策略有關(guān)。采用不同的控 制策略,系統(tǒng)的工作時間就會不同。若希望節(jié)點工作一年的時間(36524=8 760小時),則理論上要求平均工作電流約為263 μA(2 3008 760)。發(fā)射數(shù)據(jù)到接收應(yīng)答的工作時間約為50 ms,這樣可推算出每次工作前的平均休眠時間為2.3 s[8]。實際應(yīng)用中,可以根據(jù)網(wǎng)絡(luò)的反應(yīng)速度和信息的采樣率來選擇系統(tǒng)工作和休眠的時間。
3 軟件開發(fā)
低功耗系統(tǒng)的設(shè)計是一種綜合硬件和軟件為一體的技術(shù),必須在使用低功耗芯片的同時,采用智能的控制策略。例如,讓系統(tǒng)在需要工作時全速運行;而當整個系統(tǒng)處理完事件就進入低功耗模式,等待外部事件的喚醒。
系統(tǒng)軟件包括基站節(jié)點軟件、傳感器節(jié)點軟件和上位機處理軟件。
3.1 基站節(jié)點軟件
基站節(jié)點的主程序比較簡單,初始化后就進入低功耗模式,等待外部事件喚醒。外部事件包括串口中斷事件、接收到數(shù)據(jù)事件和定時器的中斷事件。
圖3給出了基站節(jié)點的串口中斷流程。
圖3 基站節(jié)點串口中斷流程
為了防止串口通信過程中丟失數(shù)據(jù),軟件設(shè)計上加了握手協(xié)議。當基站節(jié)點每發(fā)送一個數(shù)據(jù)包給上位機時,上位機都會向基站節(jié)點發(fā)送應(yīng)答信號,直到數(shù)據(jù)包發(fā)送給上位機。接收到數(shù)據(jù)包后,節(jié)點會從低功耗模式中喚醒,根據(jù)接收到的數(shù)據(jù)中標志位的不同字符分別進入不同的處理單元。
當多個傳感器節(jié)點同時與某個傳感器節(jié)點通信時,存在掙搶信道的現(xiàn)象。為了避免多個傳感器節(jié)點同時與某個傳感器節(jié)點通信造成數(shù)據(jù)丟失,軟件上采用 一定的退避機制。一方面,利用射頻芯片nRF905的CD(載波偵聽)信號來產(chǎn)生隨機延時,以避免同時發(fā)送信號;另一方面,當一個傳感器節(jié)點與某個傳感器 節(jié)點建立了通信通道時,其他發(fā)送數(shù)據(jù)的節(jié)點會增加發(fā)射數(shù)據(jù)的次數(shù)。
3.2 傳感器節(jié)點軟件
傳感器節(jié)點初始化后,首先發(fā)送請求基站節(jié)點分配級別的命令,同時打開一個定時喚醒的定時器;然后進入低功耗模式,等待外部事件的喚醒。若傳感器 發(fā)送請求基站節(jié)點分配級別的次數(shù)達到設(shè)定上限,仍未確定節(jié)點在網(wǎng)絡(luò)中的級別,則該節(jié)點就會向周圍傳感器節(jié)點廣播信息。當廣播次數(shù)達到設(shè)定值時,傳感器節(jié)點 就根據(jù)收到的信息確定自己的級別以及與該節(jié)點有直接聯(lián)系的節(jié)點的信息,并把這些信息發(fā)送給基站節(jié)點。傳感器節(jié)點的外部中斷事件包括接收到數(shù)據(jù)事件、定時器 中斷事件、狀態(tài)突變事件。
當傳感器節(jié)點檢測到狀態(tài)突變后,會從低功耗狀態(tài)喚醒,并及時采集此時的環(huán)境參數(shù)(包括狀態(tài)量、溫度值及節(jié)點電壓值),將這些數(shù)據(jù)發(fā)送出去。該數(shù)據(jù)包通過單跳或多跳到達基站節(jié)點并在上位機軟件上顯示。
3.3 上位機處理軟件
為了監(jiān)測整個網(wǎng)絡(luò)情況,需要在主機上建立良好的人機交互界面。采用Visual Basic(VB)來設(shè)計人機界面。利用VB的MSComm控件實現(xiàn)上、下位機的串口通信,利用其他控件實現(xiàn)對無線傳感器網(wǎng)絡(luò)的分析、顯示和操作。
上位機主程序主要完成一些變量和控件初始化,然后等待串口數(shù)據(jù)。數(shù)據(jù)的接收和發(fā)送都是由中斷程序完成的,其流程如圖4所示。
圖4 上位機的串口中斷流程
上位機接收到完整的數(shù)據(jù)包后,會根據(jù)數(shù)據(jù)包中的關(guān)鍵字進行不同的處理。發(fā)送數(shù)據(jù)時,根據(jù)保存的網(wǎng)絡(luò)數(shù)據(jù)計算中轉(zhuǎn)數(shù)據(jù)的路徑。為節(jié)約基站節(jié)點的能量,網(wǎng)絡(luò)中有很多的數(shù)據(jù)處理是在上位機中進行的。
4 實驗結(jié)果
系統(tǒng)研制完成后,需要設(shè)計實驗來考核自組網(wǎng)效果及網(wǎng)絡(luò)性能。實驗中,首先關(guān)注的問題是隨機分布的傳感器節(jié)點在自定義的組織協(xié)議下的組網(wǎng)情況。為 了考核自組織效果, 首先讓基站節(jié)點通過串口與上位機相連并打開上位機處理軟件;然后打開傳感器節(jié)點的電源,并通過人工安放或者隨機撒播方式布置好傳感器節(jié)點。
借助上位機的處理軟件,可以非常清楚地看到整個網(wǎng)絡(luò)的拓撲結(jié)構(gòu)和網(wǎng)絡(luò)節(jié)點的環(huán)境參數(shù)。當上位機處理軟件檢測到網(wǎng)絡(luò)內(nèi)的傳感器節(jié)點后,會在上位機上進行顯示并保存?zhèn)鞲衅鞴?jié)點的數(shù)據(jù)。圖5為系統(tǒng)演示的11個傳感器節(jié)點自由組網(wǎng)時界面的顯示情況。組網(wǎng)時間約3 min。
圖5中的黑色曲線為數(shù)據(jù)的傳輸路徑。當鼠標點擊某個節(jié)點,會彈出該節(jié)點的信息采集卡。信息采集卡反映了節(jié)點的狀態(tài)量、溫度值、電壓值以及剩余能量,通過采集卡可直接對該節(jié)點進行遠程控制。
圖5 網(wǎng)絡(luò)拓撲及數(shù)據(jù)傳輸路線圖
在檢測網(wǎng)絡(luò)性能的實驗中,讓傳感器節(jié)點一級一級分布下去。通過上位機軟件可以很清楚地看到所投放的傳感器節(jié)點可組成的最大跳數(shù)的網(wǎng)絡(luò)拓撲結(jié)構(gòu)。 當網(wǎng)絡(luò)組成后,可通過上位機界面對網(wǎng)內(nèi)各個節(jié)點進行遠程控制;當各個節(jié)點發(fā)生狀態(tài)突變時,會以中斷形式喚醒節(jié)點,以能量優(yōu)先的原則逐級傳送到基站節(jié)點,并 在上位機界面上進行相應(yīng)顯示。
當新的傳感器節(jié)點加入到網(wǎng)絡(luò)中,系統(tǒng)會及時反映新加入節(jié)點。當系統(tǒng)檢測到傳感器節(jié)點由于電源電壓低于工作電壓,或人為破壞引起失效時,會從網(wǎng)絡(luò) 中刪除該節(jié)點的拓撲結(jié)構(gòu)及相關(guān)信息,檢測方法有手動刷新和定時采樣兩種。網(wǎng)絡(luò)內(nèi)傳送的數(shù)據(jù)都保存在網(wǎng)絡(luò)數(shù)據(jù)庫中,便于查尋。通過上位機軟件還能夠?qū)W(wǎng)絡(luò)進 行復(fù)位,讓所有傳感器節(jié)點進行重新組網(wǎng)。
結(jié)語
本文首先提出了一種無線傳感器網(wǎng)絡(luò)的自組織協(xié)議,然后選用MSP430F149和nRF905設(shè)計了微型傳感器節(jié)點,并實現(xiàn)了一種低功耗無線網(wǎng)絡(luò),其特點如下:
?、?利用無線通信攜帶的信息自動生成多級網(wǎng)狀網(wǎng)絡(luò),并按能量優(yōu)先的原則自動生成數(shù)據(jù)的傳輸路徑。
?、?采取應(yīng)答和退避機制,防止多個傳感器節(jié)點向一個節(jié)點發(fā)送數(shù)據(jù)時所導(dǎo)致的數(shù)據(jù)丟失。
?、?無線通信的雙向性,不僅被動顯示各個傳感器節(jié)點的信息,還可主動對每個傳感器節(jié)點進行遠程控制。
④ 使用支持低功耗工作模式的硬件,配合軟件上的智能控制策略來實現(xiàn)系統(tǒng)低功耗,盡可能延長網(wǎng)絡(luò)壽命。
參考文獻
[1] 孫利民,李建中,陳渝,等.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005.
[2] Heinzelman W R, Kulik J, Balakrishnan H. Adaptive protocols for information dissemination in wireless sensor networks. In: Proceedings of the ACM MobiCom’99. Seattle: ACM Press, 1999:174-185.
[3] Heinzelman W R, Chandrakasan A,Balakrishnan H. An application-specific protocol architecture for wireless microsensor netwoks. IEEE Transactions on Wireless Communications,2002,1(4).660-670.
[4] Kemal Akkaya, Mohamed Younis. A survey on routing protocols for wireless sensor networks,Ad Hoc Networks. 2005(3):325-349.
[5] 趙明,徐科軍,陳智淵.一種無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計和通信協(xié)議研究[J]. 儀器儀表學(xué)報(增刊),2005(8). 630-635.
[6] 魏小龍.MSP430系列單片機接口技術(shù)及系統(tǒng)設(shè)計實例[M].北京:北京航空航天大學(xué)出版社,2002.
[7]鄭啟忠,朱宏輝,耿四軍.單片射頻收發(fā)器nRF905及其應(yīng)用[OL].http://www.51base.com/electron/adhibition/wireless/20065068623.shtml,2006-05-06.
[8]訊通科技.nRF401低功耗設(shè)計及其實現(xiàn)方法[OL].http://www.freqchina.com/,2006.
評論