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