1 系統(tǒng)總體方案
系統(tǒng)由基站節(jié)點、傳感器節(jié)點和上位機組成,。節(jié)點硬件主要包括7 部分: 處理器(MSP430F149 ) ,、Si4432 射頻收發(fā)模塊、電源管理模塊,、串口通信模塊,、JITAG 下載模塊、傳感器接口模塊和E2PROM 存儲模塊,?;竟?jié)點沒有傳感器模塊, 傳感器節(jié)點沒有串口通信模塊,?;竟?jié)點由上位機USB 接口供電。傳感器節(jié)點使用2 節(jié)5號電池供電,。采用TPS61200 作為電源管理器,, 只要電池電壓在0.2 V~5 V 范圍內(nèi), 系統(tǒng)即可以正常工作,, 大大地延長了電池的使用時間,。為了調(diào)試方便, 在節(jié)點上增加了撥碼開關和LED 信號指示燈。整個系統(tǒng)軟件由上位機處理軟件,、基站節(jié)點軟件,、傳感器節(jié)點軟件三部分組成。在傳感器節(jié)點軟件設計上充分考慮了低功耗節(jié)能問題,, 因為它的能量主要消耗于無線射頻模塊,, 因此在組網(wǎng)時盡量使Si4432 的輸出能量設定為最小, 且在沒有收發(fā)信息時工作在睡眠模式,, 即等待喚醒模式,。
2 自組織協(xié)議設計
在協(xié)議中, 通過定義數(shù)據(jù)包的格式和關鍵字來實現(xiàn)節(jié)點的自組織,。
2.1 協(xié)議格式
自組織協(xié)議格式如圖1 所示。
圖1 自組織協(xié)議格式
其中,,Pre 表示前導碼,, 這些字符雜波不容易產(chǎn)生, 通過測試和試驗發(fā)現(xiàn),, 噪聲中不容易產(chǎn)生0x55 和0xAA 等非常有規(guī)律的信號,, 因此前導碼采用0x55AA。Sync( 同步字)在前導碼之后,, 本系統(tǒng)設定的同步字為2 B,, 同步字內(nèi)容為0x2DD4 , 接收端在檢測到同步字后才開始接收數(shù)據(jù),。Key 表示關鍵字,, 高6 位用來表示目標地址的級別, 接收節(jié)點會根據(jù)高6 位決定數(shù)據(jù)的去向( 比本級節(jié)點大則向下級節(jié)點傳,, 若小則反之,, 如果相等則判斷目標地址是否為本節(jié)點地址, 是則直接向目標表地址發(fā)送,, 否則向上級發(fā)送節(jié)點回復重發(fā)應答) ; 低2 位用來區(qū)分各種情況下的數(shù)據(jù)( 命令信號,、組網(wǎng)信息、采集信息,、廣播信息) ; 接收節(jié)點會根據(jù)這些關鍵字低2 位分別進入不同的數(shù)據(jù)處理單元,。From 表示源地址, 是發(fā)送數(shù)據(jù)的節(jié)點地址;Mid 表示接收信息的中轉(zhuǎn)節(jié)點地址;Fina 表示數(shù)據(jù)的目標地址; 除廣播信息外,, 每個信息都有唯一的源地址和目標地址;Data 表示有效數(shù)據(jù),, 這些數(shù)據(jù)隨著關鍵字(Key) 的不同而采用不同的格式, 可攜帶不同的信息;Che 表示檢驗位,, 說明采用何種校驗方式( 校驗和還是CRC 校驗) ,, 可避免接收錯誤的數(shù)據(jù)包;Flag 表示數(shù)據(jù)包的結(jié)束標志位。Si4432 內(nèi)部集成有調(diào)制/解調(diào),、編碼/解碼等功能,, 從而Pre ,、Sync 和Che 都是硬件自動加上去的, 用戶只需設定數(shù)據(jù)包的組成結(jié)構(gòu)和部分結(jié)構(gòu)的具體內(nèi)容(如前導碼和同步字),。
2.2 自組織算法
網(wǎng)絡由一個基站和若干個傳感器節(jié)點組成,, 基站上電初始化后就馬上進入低功耗狀態(tài)(Si4432 射頻模塊處于睡眠狀態(tài)) ; 傳感器節(jié)點隨機地部署在需要采集信息的區(qū)域內(nèi), 上電初始化后開始組網(wǎng),。首先發(fā)送請求基站分配級別的命令,, 若收到基站應答則定義為一級并把自身信息( 包括地址、級別等) 發(fā)給基站; 反之若發(fā)送次數(shù)達到設定值,, 則向周圍節(jié)點發(fā)送廣播信號,, 通過周圍節(jié)點應答信息整理得出自身的網(wǎng)絡級別, 并向周圍節(jié)點及基站發(fā)送自身信息,。如果還是未能分配到級別則延時等待其他節(jié)點分配好級別后重新請求入網(wǎng),。每個入網(wǎng)的傳感器節(jié)點都保存有周圍節(jié)點( 上級、同級,、下級節(jié)點) 信息( 級別及對應的地址) ,, 最后就形成了網(wǎng)絡拓撲結(jié)構(gòu)。
自組織算法流程圖如圖2 所示,。
圖2 自組織算法流程圖
3 節(jié)點硬件設計
傳感器節(jié)點要求低功耗,、體積小, 因此選用的芯片都是集成度高,、功耗低,、體積小的芯片, 其他器件基本上采用貼片封裝,。節(jié)點硬件框圖如圖3 所示,。
本設計中MCU 采用TI 公司生產(chǎn)的一種混合信號處理器MSP430F149 , 內(nèi)部資源豐富,, 具有兩個16 位定時器,、一個14 路的12 bit 的模數(shù)轉(zhuǎn)換器、6 組I/O,、一個看門狗,、兩路USART 通信端口等; 因此節(jié)點的外部電路非常簡單, 并且還具有功耗超低的突出特點,, 當工作頻率為1 MHz,、電壓為2.2 V 時全速工作電流僅為280 μA, 待機狀態(tài)下電流低至1.6 μA,。它的工作電壓范圍為1.8 V~3.6 V,, 非常適合應用于電池供電的節(jié)能系統(tǒng)中。
Si4432 芯片是Silicon Labs 公司推出的一款高集成度、低功耗,、寬頻帶EZRadioPRO 系列無線收發(fā)芯片,。其工作電壓1.8 V~3.6 V,可工作頻率范圍為240 MHz~930 MHz;內(nèi)部集成分集式天線,、功率放大器,、喚醒定時器、數(shù)字調(diào)制解調(diào)器,、64 B 的發(fā)送和接收數(shù)據(jù)FIFO,, 以及可配置的GPIO 等[4]。Si4432 在使用時所需的外部元件很少,,1個30 MHz 的晶振,、幾個電容和電感就可組成一個高可靠性的收發(fā)系統(tǒng), 設計簡單,, 且成本低,。預留了大量外接傳感器接口, 外接傳感器的信號能以中斷方式喚醒節(jié)點,。
4 系統(tǒng)軟件設計
本系統(tǒng)軟件設計注重低功耗,、數(shù)據(jù)采集實時性,、系統(tǒng)穩(wěn)健性及可靠性,, 在低功耗設計中采用智能控制策略, 讓系統(tǒng)需要工作時處于全速工作模式,, 其他時刻處于低功耗模式,。數(shù)據(jù)采集實時性設計中關鍵是路由選擇, 主要依據(jù)是跳數(shù)最少路徑最短原則( 兼顧能量優(yōu)先原則),。系統(tǒng)穩(wěn)健性設計部分,, 當傳感器節(jié)點因能量耗盡或其他原因不能工作或者有新的傳感器節(jié)點請求加入網(wǎng)絡時, 整個網(wǎng)絡會馬上重新組網(wǎng),, 形成新的網(wǎng)絡拓撲結(jié)構(gòu),。在系統(tǒng)可靠性設計中采用看門狗等技術(shù)增強系統(tǒng)抗干擾能力。系統(tǒng)軟件框圖如圖4 所示,。
圖4 系統(tǒng)軟件結(jié)構(gòu)
4.1 基站軟件
基站節(jié)點通過上位機USB 供電所以一直工作在全速狀態(tài),, 加快了對外部的響應速度。上電初始化后,, 根據(jù)中斷程序中的標志位值對獲得的信息進行相應處理,, 處理完后把標志位置零, 循環(huán)執(zhí)行此操作,?;竟?jié)點通過串口與上位機相連; 因此外部事件包括串口中斷事件和接收到數(shù)據(jù)中斷事件。
為了防止串口通信過程中丟失數(shù)據(jù), 軟件設計上加了握手協(xié)議,。當基站節(jié)點每發(fā)送一個數(shù)據(jù)包給上位機時,, 上位機都會向基站節(jié)點發(fā)送應答信號, 直到數(shù)據(jù)包發(fā)送給上位機,。上位機接收到數(shù)據(jù)包后,, 馬上進入中斷處理, 處理完后把相應標志位置1,, 通過主程序做進一步處理,。
4.2 傳感器節(jié)點軟件
傳感器節(jié)點主程序主要是實現(xiàn)組網(wǎng), 當節(jié)點上電初始化后設定發(fā)射功率為最小,,請求入網(wǎng),。如果入網(wǎng)不成功則加大發(fā)射功率,繼續(xù)請求入網(wǎng),。經(jīng)試驗證實,,發(fā)射功率越小,電池的使用壽命就越長,。入網(wǎng)成功后,,保存入網(wǎng)信息, 并馬上進入低功耗狀態(tài),, 同時使用兩個中斷,, 一個外部接收數(shù)據(jù)中斷,一個定時器采集中斷,。程序流程圖分別如圖5,、圖6 所示。數(shù)據(jù)發(fā)送放在定時中斷程序里完成,。
圖5 接收數(shù)據(jù)中斷
圖6 串口中斷流程
當多個傳感器節(jié)點同時發(fā)送數(shù)據(jù)時,, 則會出現(xiàn)掙搶信道的現(xiàn)象。為了避免多個傳感器節(jié)點同時與某個傳感器節(jié)點通信造成數(shù)據(jù)丟失,, 軟件上采用一定的退避機制,。一方面, 利用射頻芯片Si4432 的載波偵聽信號來產(chǎn)生隨機延時,, 以避免同時發(fā)送信號; 另一方面,, 當一個傳感器節(jié)點與某個傳感器節(jié)點建立了通信通道時, 其他發(fā)送數(shù)據(jù)的節(jié)點會增加發(fā)射數(shù)據(jù)的次數(shù),。
4.3 上位機軟件
上位機主要功能有發(fā)送重組網(wǎng)命令,、向任意傳感器節(jié)點發(fā)送采集信息命令、建立良好的人機界面用于觀察傳感器采集來的信息,、幫助基站節(jié)點處理數(shù)據(jù)減輕基站的負擔等,。人機界面采用Visual Basic(VB) 來設計,, 利用VB 的MSComm 控件實現(xiàn)上、下位機的串口通信,。利用其他控件實現(xiàn)對無線傳感器網(wǎng)絡的分析,、顯示和操作, 在此不再詳細說明,。
Si4432 的緩沖寄存器為64 KB,, 一次性可發(fā)送接收信息量可多達62 KB?;竟?jié)點通過串口跟上位機相連,, 在上位機建立良好的人機界面可以觀察每個傳感器采集來的信息, 并且可以控制每個節(jié)點的工作狀態(tài),。本系統(tǒng)已在實際中成功應用,。