摘要 無線傳感器網絡通常采用電池供電,放置在沒有基礎結構的地方,節點的通信能力十分有限。這就要求傳感器節點具有自組織的能力,自動形成轉發監測數據的多跳無線網絡。本文提出一種簡單、易實現的自組織協議,選用MSP430F149單片機設計微型傳感器節點,并實現了一種低功耗無線網絡。
關鍵詞 無線傳感器網絡 自組織協議 低功耗
引言
無線傳感器網絡具有非常廣闊的應用前景[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所示。
2? 硬件研制
為了驗證提出的自組織協議,本文選用了片上資源豐富的MSP430F149單片機作為處理器,研制了一種微型傳感器節點[5]。
2.1? 總體方案
系統由基站節點和傳感器節點組成。節點硬件選擇了支持低功耗工作模式的MSP430F149單片機和nRF905射頻模塊,使用32 768 Hz的低頻晶振,采用2節5號電池供電。在設計節點的過程中,撥碼開關、蜂鳴器、LCD指示燈的設計極大方便了實驗的調試。
2.2? 節點設計
圖2為傳感器節點的框圖,該節點使用電池供電,體積小巧,只有打火機般大小。
MSP430系列單片機是TI公司生產的一種混合信號控制器,其突出優點是低電源電壓、超低功耗,可采用電池工作,有很長的使用時間[6]。
nRF905是挪威Nordic VLSI公司推出的單片射頻收發器,低電壓工作,功耗非常低,工作于433/868/915 MHz三個ISM(工業、科學和醫學)頻道,頻道之間的轉換時間小于650 μs[7]。ShockBurstTM工作模式,能自動處理字頭和CRC(循環冗余碼校驗)。通過SPI串口與微控制器通信,使用非常方便;內建空閑模式與關機模式,易于實現節能。nRF905適用于無線數據通信、無線開鎖等諸多領域。
天線的設計是整個系統設計的一個非常重要的環節。系統功耗的高低以及網絡性能的好壞與天線的設計都有密切關系。天線部分的設計采用整體PCB環行差分天線。與傳統的鞭狀天線相比,不僅節省空間,降低生產成本,機構上也更穩固可靠。
因為本文主要研究無線傳感器網絡的自組網和低功耗技術,所以只選擇了MSP430系列單片機的內部集成熱敏二極管來測量節點的工作溫度,但預留了大量外接傳感器接口,外接傳感器的信號能以中斷方式喚醒節點。
2.3? 系統功耗
傳感器節點采用電池供電,功耗的高低直接影響整個網絡的生命期。系統的功耗不僅與選擇的元器件有關,還與整個網絡的控制策略有關。采用不同的控制策略,系統的工作時間就會不同。若希望節點工作一年的時間(365×24=8 760小時),則理論上要求平均工作電流約為263 μA(2 300÷8 760)。發射數據到接收應答的工作時間約為50 ms,這樣可推算出每次工作前的平均休眠時間為2.3 s[8]。實際應用中,可以根據網絡的反應速度和信息的采樣率來選擇系統工作和休眠的時間。
3? 軟件開發
低功耗系統的設計是一種綜合硬件和軟件為一體的技術,必須在使用低功耗芯片的同時,采用智能的控制策略。例如,讓系統在需要工作時全速運行;而當整個系統處理完事件就進入低功耗模式,等待外部事件的喚醒。
系統軟件包括基站節點軟件、傳感器節點軟件和上位機處理軟件。
3.1? 基站節點軟件
基站節點的主程序比較簡單,初始化后就進入低功耗模式,等待外部事件喚醒。外部事件包括串口中斷事件、接收到數據事件和定時器的中斷事件。
圖3給出了基站節點的串口中斷流程。
為了防止串口通信過程中丟失數據,軟件設計上加了握手協議。當基站節點每發送一個數據包給上位機時,上位機都會向基站節點發送應答信號,直到數據包發送給上位機。接收到數據包后,節點會從低功耗模式中喚醒,根據接收到的數據中標志位的不同字符分別進入不同的處理單元。
當多個傳感器節點同時與某個傳感器節點通信時,存在掙搶信道的現象。為了避免多個傳感器節點同時與某個傳感器節點通信造成數據丟失,軟件上采用一定的退避機制。一方面,利用射頻芯片nRF905的CD(載波偵聽)信號來產生隨機延時,以避免同時發送信號;另一方面,當一個傳感器節點與某個傳感器節點建立了通信通道時,其他發送數據的節點會增加發射數據的次數。
3.2? 傳感器節點軟件
傳感器節點初始化后,首先發送請求基站節點分配級別的命令,同時打開一個定時喚醒的定時器;然后進入低功耗模式,等待外部事件的喚醒。若傳感器發送請求基站節點分配級別的次數達到設定上限,仍未確定節點在網絡中的級別,則該節點就會向周圍傳感器節點廣播信息。當廣播次數達到設定值時,傳感器節點就根據收到的信息確定自己的級別以及與該節點有直接聯系的節點的信息,并把這些信息發送給基站節點。傳感器節點的外部中斷事件包括接收到數據事件、定時器中斷事件、狀態突變事件。
當傳感器節點檢測到狀態突變后,會從低功耗狀態喚醒,并及時采集此時的環境參數(包括狀態量、溫度值及節點電壓值),將這些數據發送出去。該數據包通過單跳或多跳到達基站節點并在上位機軟件上顯示。
3.3? 上位機處理軟件
為了監測整個網絡情況,需要在主機上建立良好的人機交互界面。采用Visual Basic(VB)來設計人機界面。利用VB的MSComm控件實現上、下位機的串口通信,利用其他控件實現對無線傳感器網絡的分析、顯示和操作。
上位機主程序主要完成一些變量和控件初始化,然后等待串口數據。數據的接收和發送都是由中斷程序完成的,其流程如圖4所示。
上位機接收到完整的數據包后,會根據數據包中的關鍵字進行不同的處理。發送數據時,根據保存的網絡數據計算中轉數據的路徑。為節約基站節點的能量,網絡中有很多的數據處理是在上位機中進行的。
4? 實驗結果
系統研制完成后,需要設計實驗來考核自組網效果及網絡性能。實驗中,首先關注的問題是隨機分布的傳感器節點在自定義的組織協議下的組網情況。為了考核自組織效果, 首先讓基站節點通過串口與上位機相連并打開上位機處理軟件;然后打開傳感器節點的電源,并通過人工安放或者隨機撒播方式布置好傳感器節點。
借助上位機的處理軟件,可以非常清楚地看到整個網絡的拓撲結構和網絡節點的環境參數。當上位機處理軟件檢測到網絡內的傳感器節點后,會在上位機上進行顯示并保存傳感器節點的數據。圖5為系統演示的11個傳感器節點自由組網時界面的顯示情況。組網時間約3 min。
圖5中的黑色曲線為數據的傳輸路徑。當鼠標點擊某個節點,會彈出該節點的信息采集卡。信息采集卡反映了節點的狀態量、溫度值、電壓值以及剩余能量,通過采集卡可直接對該節點進行遠程控制。
在檢測網絡性能的實驗中,讓傳感器節點一級一級分布下去。通過上位機軟件可以很清楚地看到所投放的傳感器節點可組成的最大跳數的網絡拓撲結構。當網絡組成后,可通過上位機界面對網內各個節點進行遠程控制;當各個節點發生狀態突變時,會以中斷形式喚醒節點,以能量優先的原則逐級傳送到基站節點,并在上位機界面上進行相應顯示。
當新的傳感器節點加入到網絡中,系統會及時反映新加入節點。當系統檢測到傳感器節點由于電源電壓低于工作電壓,或人為破壞引起失效時,會從網絡中刪除該節點的拓撲結構及相關信息,檢測方法有手動刷新和定時采樣兩種。網絡內傳送的數據都保存在網絡數據庫中,便于查尋。通過上位機軟件還能夠對網絡進行復位,讓所有傳感器節點進行重新組網。
結語
本文首先提出了一種無線傳感器網絡的自組織協議,然后選用MSP430F149和nRF905設計了微型傳感器節點,并實現了一種低功耗無線網絡,其特點如下:
①? 利用無線通信攜帶的信息自動生成多級網狀網絡,并按能量優先的原則自動生成數據的傳輸路徑。
②? 采取應答和退避機制,防止多個傳感器節點向一個節點發送數據時所導致的數據丟失。
?、? 無線通信的雙向性,不僅被動顯示各個傳感器節點的信息,還可主動對每個傳感器節點進行遠程控制。
?、? 使用支持低功耗工作模式的硬件,配合軟件上的智能控制策略來實現系統低功耗,盡可能延長網絡壽命。
編者注: 本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
參考文獻
[1]? 孫利民,李建中,陳渝,等.無線傳感器網絡[M].北京:清華大學出版社,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] ?趙明,徐科軍,陳智淵.一種無線傳感器網絡節點設計和通信協議研究[J]. 儀器儀表學報(增刊),2005(8). 630-635.
[6] ?魏小龍.MSP430系列單片機接口技術及系統設計實例[M].北京:北京航空航天大學出版社,2002.
[7]? 鄭啟忠,朱宏輝,耿四軍.單片射頻收發器nRF905及其應用[OL].http://www.51base.com/electron/adhibition/wireless/20065068623.shtml?,2006-05-06.
[8]? 訊通科技.nRF401低功耗設計及其實現方法[OL].http://www.freqchina.com/,2006.
(收修改稿日期:2007-04-18)
評論
查看更多