無(wú)線(xiàn)傳感器網(wǎng)絡(luò )自組網(wǎng)協(xié)議的實(shí)現方法
2.1 總體方案
系統由基站節點(diǎn)和傳感器節點(diǎn)組成。節點(diǎn)硬件選擇了支持低功耗工作模式的MSP430F149單片機和nRF905射頻模塊,使用32 768 Hz的低頻晶振,采用2節5號電池供電。在設計節點(diǎn)的過(guò)程中,撥碼開(kāi)關(guān)、蜂鳴器、LCD指示燈的設計極大方便了實(shí)驗的調試。
2.2 節點(diǎn)設計
圖2為傳感器節點(diǎn)的框圖,該節點(diǎn)使用電池供電,體積小巧,只有打火機般大小。
圖2 傳感器節點(diǎn)框圖
MSP430系列單片機是TI公司生產(chǎn)的一種混合信號控制器,其突出優(yōu)點(diǎn)是低電源電壓、超低功耗,可采用電池工作,有很長(cháng)的使用時(shí)間[6]。
nRF905是挪威Nordic VLSI公司推出的單片射頻收發(fā)器,低電壓工作,功耗非常低,工作于433/868/915 MHz三個(gè)ISM(工業(yè)、科學(xué)和醫學(xué))頻道,頻道之間的轉換時(shí)間小于650 μs[7]。ShockBurstTM工作模式,能自動(dòng)處理字頭和CRC(循環(huán)冗余碼校驗)。通過(guò)SPI串口與微控制器通信,使用非常方便;內建空閑模式與關(guān)機模式,易于實(shí)現節能。nRF905適用于無(wú)線(xiàn)數據通信、無(wú)線(xiàn)開(kāi)鎖等諸多領(lǐng)域。
天線(xiàn)的設計是整個(gè)系統設計的一個(gè)非常重要的環(huán)節。系統功耗的高低以及網(wǎng)絡(luò )性能的好壞與天線(xiàn)的設計都有密切關(guān)系。天線(xiàn)部分的設計采用整體PCB環(huán)行差分天線(xiàn)。與傳統的鞭狀天線(xiàn)相比,不僅節省空間,降低生產(chǎn)成本,機構上也更穩固可靠。
因為本文主要研究無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的自組網(wǎng)和低功耗技術(shù),所以只選擇了MSP430系列單片機的內部集成熱敏二極管來(lái)測量節點(diǎn)的工作溫度,但預留了大量外接傳感器接口,外接傳感器的信號能以中斷方式喚醒節點(diǎn)。
2.3 系統功耗
傳感器節點(diǎn)采用電池供電,功耗的高低直接影響整個(gè)網(wǎng)絡(luò )的生命期。系統的功耗不僅與選擇的元器件有關(guān),還與整個(gè)網(wǎng)絡(luò )的控制策略有關(guān)。采用不同的控制策略,系統的工作時(shí)間就會(huì )不同。若希望節點(diǎn)工作一年的時(shí)間(365×24=8 760小時(shí)),則理論上要求平均工作電流約為263 μA(2 300÷8 760)。發(fā)射數據到接收應答的工作時(shí)間約為50 ms,這樣可推算出每次工作前的平均休眠時(shí)間為2.3 s[8]。實(shí)際應用中,可以根據網(wǎng)絡(luò )的反應速度和信息的采樣率來(lái)選擇系統工作和休眠的時(shí)間。
3 軟件開(kāi)發(fā)
低功耗系統的設計是一種綜合硬件和軟件為一體的技術(shù),必須在使用低功耗芯片的同時(shí),采用智能的控制策略。例如,讓系統在需要工作時(shí)全速運行;而當整個(gè)系統處理完事件就進(jìn)入低功耗模式,等待外部事件的喚醒。
系統軟件包括基站節點(diǎn)軟件、傳感器節點(diǎn)軟件和上位機處理軟件。
3.1 基站節點(diǎn)軟件
基站節點(diǎn)的主程序比較簡(jiǎn)單,初始化后就進(jìn)入低功耗模式,等待外部事件喚醒。外部事件包括串口中斷事件、接收到數據事件和定時(shí)器的中斷事件。
圖3給出了基站節點(diǎn)的串口中斷流程。
圖3 基站節點(diǎn)串口中斷流程
為了防止串口通信過(guò)程中丟失數據,軟件設計上加了握手協(xié)議。當基站節點(diǎn)每發(fā)送一個(gè)數據包給上位機時(shí),上位機都會(huì )向基站節點(diǎn)發(fā)送應答信號,直到數據包發(fā)送給上位機。接收到數據包后,節點(diǎn)會(huì )從低功耗模式中喚醒,根據接收到的數據中標志位的不同字符分別進(jìn)入不同的處理單元。
當多個(gè)傳感器節點(diǎn)同時(shí)與某個(gè)傳感器節點(diǎn)通信時(shí),存在掙搶信道的現象。為了避免多個(gè)傳感器節點(diǎn)同時(shí)與某個(gè)傳感器節點(diǎn)通信造成數據丟失,軟件上采用一定的退避機制。一方面,利用射頻芯片nRF905的CD(載波偵聽(tīng))信號來(lái)產(chǎn)生隨機延時(shí),以避免同時(shí)發(fā)送信號;另一方面,當一個(gè)傳感器節點(diǎn)與某個(gè)傳感器節點(diǎn)建立了通信通道時(shí),其他發(fā)送數據的節點(diǎn)會(huì )增加發(fā)射數據的次數。
3.2 傳感器節點(diǎn)軟件
傳感器節點(diǎn)初始化后,首先發(fā)送請求基站節點(diǎn)分配級別的命令,同時(shí)打開(kāi)一個(gè)定時(shí)喚醒的定時(shí)器;然后進(jìn)入低功耗模式,等待外部事件的喚醒。若傳感器發(fā)送請求基站節點(diǎn)分配級別的次數達到設定上限,仍未確定節點(diǎn)在網(wǎng)絡(luò )中的級別,則該節點(diǎn)就會(huì )向周?chē)鷤鞲衅鞴濣c(diǎn)廣播信息。當廣播次數達到設定值時(shí),傳感器節點(diǎn)就根據收到的信息確定自己的級別以及與該節點(diǎn)有直接聯(lián)系的節點(diǎn)的信息,并把這些信息發(fā)送給基站節點(diǎn)。傳感器節點(diǎn)的外部中斷事件包括接收到數據事件、定時(shí)器中斷事件、狀態(tài)突變事件。
當傳感器節點(diǎn)檢測到狀態(tài)突變后,會(huì )從低功耗狀態(tài)喚醒,并及時(shí)采集此時(shí)的環(huán)境參數(包括狀態(tài)量、溫度值及節點(diǎn)電壓值),將這些數據發(fā)送出去。該數據包通過(guò)單跳或多跳到達基站節點(diǎn)并在上位機軟件上顯示。
3.3 上位機處理軟件
為了監測整個(gè)網(wǎng)絡(luò )情況,需要在主機上建立良好的人機交互界面。采用Visual Basic(VB)來(lái)設計人機界面。利用VB的MSComm控件實(shí)現上、下位機的串口通信,利用其他控件實(shí)現對無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的分析、顯示和操作。
上位機主程序主要完成一些變量和控件初始化,然后等待串口數據。數據的接收和發(fā)送都是由中斷程序完成的,其流程如圖4所示。
電能表相關(guān)文章:電能表原理
評論