ZigBee技術是一種新興的無線通信技術,以低速率、低功耗、短距離而著稱,是目前研究的熱門技術。本文簡要介紹了ZigBee技術體系結構與特點,以及基于ZigBee技術的無線傳感器網絡的主要優勢;重點介紹了一種采用符合ZigBee技術的射頻芯片MC13192實現無線傳感器網絡節點的設計方案,并對系統硬件接口電路與無線通信軟件流程作了說明。
關鍵詞 ZigBee技術 無線傳感器網絡節點 MC13192 LPC2138
引言
無線傳感器網絡是計算機技術、通信技術和傳感器網絡技術相結合的產物,是互聯網領域研究的熱點之一。應用于無線傳感器網絡的技術有許多種(如藍牙技術、紅外技術和超帶寬無線通信技術等),推動了無線傳感器網絡的發展。但是,在家庭控制、醫療護理和工業監測應用中不需要很高的帶寬,需要的只是低延遲、低功耗;而如果使用現有的、過于復雜的無線通信技術,將非常耗電,占用過多的計算和通信資源。為滿足上述要求,ZigBee技術應運而生。ZigBee技術是一種具有統一技術標準的短距離無線通信技術,把低功耗、低成本作為重要目標,主要應用于低速傳輸,可以作為無線傳感器網絡的通信協議。
傳感器節點是組成無線傳感器網絡的基本單元,是構成無線傳感器網絡的基礎平臺。ZigBee網絡節點通常是一個微型嵌入式系統,完成數據的采集、處理和傳送,是決定網絡性能的重要因素。本文采用Freescale公司的ZigBee無線收發射頻芯片MC13192和Philips公司的32位ARM芯片LPC2138,完成了無線傳感器網絡節點的設計,給出了軟、硬件設計方案,并且在硬件基礎上進行了結果分析。
1? ZigBee技術及其優勢
ZigBee協議標準是由ZigBee聯盟與IEEE 802.15.4的任務小組來共同制定的,其協議棧主要由5層體系組成,結構如圖1所示。其中,物理層和MAC層標準主要由IEEE 802.15.4的任務小組完成;網絡層和安全層由ZigBee聯盟制定;應用層的開發則根據用戶的應用需要對其進行開發,用戶提供機動、靈活的組網方式。
ZigBee技術適合于承載數據流量較小的業務,特別是無線傳感器網絡,因為它具有以下優點:
功耗低。由于其傳輸速率低,發射功率僅為1 mW,所以功耗很低;而且采用了休眠模式,因此ZigBee設備非常省電。據估算,ZigBee設備僅靠兩節五號電池就可以維持長達6個月~2年左右的使用時間。
時延短。通信時延和從休眠狀態激活的時延都非常短,典型的搜索設備的時延為30 ms,休眠激活的時延為15 ms,活動設備信道接入的時延為15 ms。因此,ZigBee技術適用于對時延要求苛刻的無線控制等應用。
網絡容量大。一個星型結構的ZigBee網絡最多可以容納254個從設備和1個主設備,一個區域內最多可以同時存在100個獨立而且互相重疊覆蓋的ZigBee網絡。
安全可靠。采取了碰撞避免策略,避開了發送數據的競爭和沖突;采用完全確認的數據傳輸模式,每個發送的數據包都必須等待接收方的確認信息;還提供了基于循環冗余校驗的數據包完整性檢查功能,支持鑒權和認證。
基于以上特點與優勢,ZigBee技術在無線傳感器網絡中的應用將有廣闊的發展空間。
2? MC13192芯片與LPC2138芯片簡介
MC13192是Freescale公司推出的符合ZigBee標準的射頻芯片。其工作頻率是2.405~2.480 GHz,該頻帶劃分為16個信道,每個信道占用5 MHz的帶寬;采用直接序列擴頻的通信技術,數據傳輸速率為250 kbps。MC13192具有一個優化的數字核心,有助于降低MCU處理功率,縮短執行周期。為了適應低功耗的要求,芯片除了接收、發送和空閑3種工作狀態外,還有3種低功耗運行模式: ①? 掉電模式,這種模式下芯片電流小于1 μA;②? 睡眠模式, 這種模式下電流在3? μA左右;③? 休眠模式,這種模式下下電流約為35 μA。芯片采用可編程功率輸出模式,發送功率為0~4 dBm,接收靈敏度可以達到-92 dBm,傳輸距離30~70 m。
LPC2138芯片是Philips公司推出的一個支持實時仿真和嵌入式跟蹤的32位ARM7微控制器。它具有豐富的片上存儲功能,帶有512 KB嵌入的高速Flash存儲器和32 KB片內靜態RAM;還帶有多個串行接口,2個8路10位A/D轉換器,1個D/A轉換器和47個GPIO,以及多達9個邊沿或電平觸發的外部中斷。LPC2138有兩種低功耗模式: 空閑模式和掉電模式。較小的封裝和極低的功耗使其可以理想地與MC13192結合,作為基于ZigBee技術的無線傳感器網絡節點。
3? 無線傳感器網絡節點設計
傳感器節點一般由數據采集單元、數據處理單元、數據傳輸單元和電源管理單元等功能模塊組成,如圖2所示。數據采集單元負責采集監視區域的信息并完成數據轉換,采集的信息包含溫度、濕度、光強度、加速度和大氣壓力等;數據處理單元負責控制整個節點的處理操作、路由協議、同步定位、功耗管理以及任務管理等;數據傳輸單元負責與其他節點進行無線通信,交換控制消息和收發采集數據;電源管理單元選通所用到的傳感器。
3.1? 節點硬件設計
圖3是節點的硬件原理圖。電路外圍元器件較少,主要包括6個模塊: LPC2138 MCU模塊、MC13192無線射頻模塊、電源模塊、UART串口模塊、JTAG接口模塊和數據采集I/O模塊。LPC2138和MC13192通過SPI總線連接。LPC2138的SPI接口工作在主機模式,是數據傳輸的控制方;MC13192設為從機模式。LPC2138通過4線SPI接口對MC13192的內部寄存器進行讀寫操作,從而完成對MC13192的控制以及數據通信。由傳感器輸出的模擬信號經過10位A/D變換后輸入到LPC2138中,LPC2138將傳感器采集的信號經過處理后通過MC13192發射出去。對傳感器的控制信號可以從MC13192的天線接收進來,通過SPI傳送到LPC2138上,經過其判斷處理后通過GPIO口傳送到傳感器上,以實現對傳感器的控制。MC13192芯片指定的晶振頻率為16 MHz,考慮到晶振對通信質量的影響,在制作PCB板時應將晶振的位置盡可能地靠近MC13192芯片的XTAL1和XTAL2引腳。電源電路采用兩種方式: 一種是3.6 V干電池;另一種是鈕扣電池,可以根據需要選用。
3.2? 節點軟件設計
按照硬件電路設計思路,軟件采用模塊化結構程序設計方式。軟件模塊包括: 數據發送模塊、數據接收模塊、UART串口模塊、LPC2138與MC13192連接的SPI模塊、中斷服務模塊。系統軟件編程的基本思路: 先對SPI端口、MC13192控制端口和LPC2138控制端口進行初始化;使能SPI端口、UART端口和A/D;初始化MC13192芯片;開啟接收機后,即可運行任務程序,實現接收或發送數據。這里簡要給出LPC2138與MC13192之間的SPI通信程序。發送和接收程序流程如圖4和圖5所示。
void SPIDrvWrite (uint8 u8Addr, uint16 u16Content) {/*SPI寫函數*/
uint8 u8TempValue;
MC13192DisableInterrupts();/*禁止MC13192產生中斷請求*/
IO1CLR = MC13192_CE;/*使能MC13192 SPI */
SSPDR = (uint8)(u8Addr & 0x3f);/*寫入要訪問的6位地址,設置寫*/
while((SSPSR & 0x01) == 0);/*等待發送棧為空*/
while((SSPSR & 0x10) != 0);/*等待狀態寄存器空閑*/
u8TempValue = SSPDR;/*清空地址中的內容*/
SSPDR = (uint8)(u16Content >> 8);/*寫高字節*/
while((SSPSR & 0x01) == 0);
while((SSPSR & 0x10) != 0);
u8TempValue = SSPDR;
SSPDR = (uint8)(u16Content & 0x00FF);/*寫低字節*/
while((SSPSR & 0x01) == 0);
while((SSPSR & 0x10) != 0);
u8TempValue = SSPDR;
IO1SET = MC13192_CE;/*禁止MC13192 SPI*/
MC13192RestoreInterrupts(); /*恢復MC13192中斷狀態*/
}
uint16 SPIDrvRead (uint8 u8Addr) {/*SPI讀函數*/
uint8 u8TempValue;
uint16 u16ret;
SPIClearRecieveStatReg(); /*清狀態寄存器*/
SPIClearRecieveDataReg();/*清接收數據寄存器*/
MC13192DisableInterrupts(); /*禁止MC13192產生中斷請求*/
IO1CLR = MC13192_CE;/*使能MC13192 SPI */
SSPDR = (uint8)((u8Addr & 0x3f) | 0x80);/*寫入要訪問的6位地址,設置讀*/
while((SSPSR & 0x01) == 0); /*等待發送棧為空*/
while((SSPSR & 0x10) != 0);/*等待狀態控制器空閑*/
u8TempValue = SSPDR;
SSPDR = (uint8)0xFF;
while((SSPSR & 0x01) == 0);
while((SSPSR & 0x10) != 0);
u8TempValue = SSPDR;/*存放高字節數據*/
SSPDR = (uint8)0xFF;
while((SSPSR & 0x01) == 0);
while((SSPSR & 0x10) != 0);
u16ret = SSPDR;/*存放低字節數據*/
u16ret=u16ret+u8TempValue*256;/*存放一個完整字*/
IO1SET = MC13192_CE;/*禁止MC13192 SPI*/
MC13192RestoreInterrupts();/*恢復MC13192中斷狀態*/
return u16ret;
}
3.3? 實驗結果
圖6為硬件節點實物圖。該電路板經過仿真調試應用良好,可以實現多個節點間的通信;在實驗電路板上設置了一個LED,可以通過燈的閃爍來指示信息接收的質量以及接收的成敗;能夠利用串行接口與計算機進行通信,并且可以通過JTAG接口電路進行程序的固化。初步的實驗表明: 通信距離基本達到預期目標,在空曠地帶以最大功率傳輸,可以以較小誤碼率傳輸60多米。采用1節電壓為3.6 V、容量為2 100 mAh的干電池供電時,節點連續工作的時間為3~4天。如果使得該節點始終工作在超低功耗的工作狀態,則其工作時間可以超過1年,能夠滿足特定應用場合對電池壽命的要求。
結語
經實驗證明,以MC13192和LPC2138為核心構造的無線傳感器網絡節點,在功耗、傳輸距離以及無線傳輸速率等性能上都能滿足應用要求。在此方案基礎之上,通過移植ZigBee協議棧,可以構建ZigBee網絡的網絡層、應用層及安全層,再配以滿足特定要求的傳感器便可實現具體的應用網絡。
評論
查看更多