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