LPC1227的遠(yuǎn)距離ZigBee無(wú)線網(wǎng)關(guān)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:介紹了一種基于GPRS和遠(yuǎn)距離ZigBee無(wú)線通信技術(shù)的網(wǎng)關(guān)節(jié)點(diǎn)的軟硬件設(shè)計(jì)方法與實(shí)現(xiàn)方案。網(wǎng)關(guān)采用基于Cortex-M0內(nèi)核的LPC1227微控制器,結(jié)合GSM模塊、ZigBee芯片和2.4 GHz無(wú)線功率放大芯片,實(shí)現(xiàn)了GPRS網(wǎng)絡(luò)、以太網(wǎng)和無(wú)線傳感網(wǎng)絡(luò)的互聯(lián)。為測(cè)試網(wǎng)關(guān)功能,搭建了針對(duì)路燈節(jié)能、監(jiān)控應(yīng)用的上位機(jī)測(cè)試系統(tǒng)。測(cè)試表明,網(wǎng)關(guān)工作穩(wěn)定,能夠滿足低成本、高實(shí)時(shí)性的要求。
關(guān)鍵詞:無(wú)線網(wǎng)關(guān);LPC1227;CC2530;CC2591;EM310
引言
物聯(lián)網(wǎng)被稱為繼計(jì)算機(jī)、互聯(lián)網(wǎng)與移動(dòng)通信網(wǎng)之后的世界信息產(chǎn)業(yè)第三次浪潮。它代表了下一代信息發(fā)展技術(shù),被世界各國(guó)當(dāng)作應(yīng)對(duì)國(guó)際金融危機(jī)、振興經(jīng)濟(jì)的重點(diǎn)技術(shù)領(lǐng)域。
物聯(lián)網(wǎng)分為感知層、網(wǎng)絡(luò)層、應(yīng)用層,而無(wú)線網(wǎng)關(guān)節(jié)點(diǎn)則是實(shí)現(xiàn)感知層與網(wǎng)絡(luò)層數(shù)據(jù)交互的橋梁,在物聯(lián)網(wǎng)中具有特殊的地位。網(wǎng)關(guān)負(fù)責(zé)網(wǎng)絡(luò)間的協(xié)議解析,不同網(wǎng)絡(luò)類型的網(wǎng)絡(luò)路由,網(wǎng)絡(luò)數(shù)據(jù)的匯聚、存儲(chǔ)、處理、轉(zhuǎn)發(fā)等功能,成為物聯(lián)網(wǎng)感知層與網(wǎng)絡(luò)層不可缺少的紐帶。因此設(shè)計(jì)出成本低、效率高、運(yùn)行穩(wěn)定的網(wǎng)關(guān)對(duì)物聯(lián)網(wǎng)的推廣有著重要的現(xiàn)實(shí)意義。
1 系統(tǒng)方案
本文設(shè)計(jì)的網(wǎng)關(guān)主要由高速微控制器LPC1227、ZigBee射頻收發(fā)模塊、GSM通信模塊EM310、AC—DC電源模塊等組成。網(wǎng)關(guān)的系統(tǒng)結(jié)構(gòu)如圖1所示。
為了滿足網(wǎng)關(guān)低成本、高實(shí)時(shí)性的要求,網(wǎng)關(guān)的MCU采用基于Cortex-M0內(nèi)核的LPC1227微控制器,該微控制器由NXP半導(dǎo)體公司設(shè)計(jì),于2011年2月投入市場(chǎng)。微控制器可在高達(dá)45 MHz的CPU頻率下運(yùn)行,包含128 KB片內(nèi)Flash存儲(chǔ)器和8 KB數(shù)據(jù)存儲(chǔ)器。512字節(jié)Flash擦除扇區(qū)帶來(lái)了多種設(shè)計(jì)上的好處,同時(shí)該芯片有兩個(gè)具備內(nèi)部FIFO的UART。網(wǎng)關(guān)系統(tǒng)軟件不采用任何嵌入式操作系統(tǒng),利用最小的軟件負(fù)載實(shí)現(xiàn)高實(shí)時(shí)性。
網(wǎng)關(guān)的ZigBee芯片采用TI公司的CC2530芯片,相對(duì)于當(dāng)前使用較多的CC2430芯片,CC2530芯片的性價(jià)比更高。兩種芯片的主要參數(shù)對(duì)比如表1所列。
網(wǎng)關(guān)中擴(kuò)展了配合CC2530芯片的射頻前端芯片CC2591。CC2591是TI公司推出的工作頻率為2.4GHz,面向低功耗與低電壓無(wú)線應(yīng)用,集成度很高的射頻前端芯片。CC2591集成了可將輸出功率提高+22 dBm的功率放大器以及可將接收機(jī)靈敏度提高+6 dBm的低噪聲放大器,從而擴(kuò)大了ZigBee無(wú)線網(wǎng)絡(luò)的覆蓋范圍。
網(wǎng)關(guān)采用華為公司設(shè)計(jì)的EM310 GSM模塊,該模塊具備內(nèi)置的TCP/IP協(xié)議棧,方便實(shí)現(xiàn)ZigBee無(wú)線傳感網(wǎng)和以太網(wǎng)的數(shù)據(jù)交互。
2 硬件設(shè)計(jì)
2.1 網(wǎng)關(guān)電源電路
LPC1227、CC2530和CC2591芯片需要3.3 V電壓供電??紤]到GSM模塊EM310的輸入電壓范圍為3.4~4.7 V,本次設(shè)計(jì)采用4.1 V電壓對(duì)EM310模塊供電。因此網(wǎng)關(guān)電源電路設(shè)計(jì)為3.3 V和4.1 V輸出的應(yīng)用系統(tǒng),如圖2所示。
首先由JP1電源接口輸入220 V的交流電,經(jīng)過(guò)AC—DC電源模塊輸出9 V直流電源。網(wǎng)關(guān)系統(tǒng)中GSM模塊功耗最大,雖然EM310最大瞬時(shí)電流可達(dá)到1.6 A,但是EM310處于GPRS工作模式時(shí)只需要400 mA電流。綜合考慮AC—DC模塊的體積、成本以及系統(tǒng)工作的穩(wěn)定性,最終選擇了功率為10 W的AC—DC電源模塊,可保證系統(tǒng)的穩(wěn)定工作。為了穩(wěn)定地向EM310提供4.1 V的電壓,LDO芯片(低壓差電源芯片)選擇Sipex公司的SP X29302芯片,該芯片可穩(wěn)定輸出高達(dá)3A的電流,結(jié)合43kΩ和100kΩ的電阻,可將輸出電壓調(diào)節(jié)到4.1V。
為保證3.3 V的輸出電壓采用了3.3 V的SPX1117LDO芯片,它的輸出電流可達(dá)800mA,輸出電壓的精度在±1%。
兩種LDO的輸出端都采用一個(gè)10μF的鉭電容來(lái)改善瞬態(tài)響應(yīng)和穩(wěn)定性。
2.2 遠(yuǎn)距離ZigBee模塊電路
遠(yuǎn)距離ZigBee模塊電路主要由晶振電路、CC2530芯片、CC2591芯片、芯片間RF差分信號(hào)線的匹配鏈路、RF信號(hào)到天線的匹配電路、CC25 91控制信號(hào)線,以及電源的退耦濾波部分組成。本文只給出ZigBee模塊系統(tǒng)結(jié)構(gòu)圖,如圖3所示。
對(duì)于CC2591的3個(gè)使能控制引腳,CC2530與CC2591的引腳連接分配如下:P1_1對(duì)應(yīng)PA EN,P1_4對(duì)應(yīng)EN,P0_7對(duì)應(yīng)HGM。
在實(shí)際設(shè)計(jì)ZigBee模塊的PCB電路板時(shí),需注意以下2點(diǎn):
①CC2530的GND引腳在芯片底部,畫(huà)PCB封裝時(shí)可在GND焊盤(pán)上添加GND過(guò)孔,以實(shí)現(xiàn)芯片的GND引腳與PCB板上的GND相連。
②TI公司提供的CC2591設(shè)計(jì)資料中建議采用4層板設(shè)計(jì),考慮成本因素,本次設(shè)計(jì)仍采用2層PCB設(shè)計(jì)。經(jīng)測(cè)試發(fā)現(xiàn)ZigBee節(jié)點(diǎn)間的通信距離在采用5 dm全向天線時(shí),無(wú)障礙通信距離可達(dá)1 km以上,滿足設(shè)計(jì)需要。
2.3 EM310模塊電路
EM310是由華為公司設(shè)計(jì)的GSM模塊。它的輸入電壓設(shè)計(jì)在第1節(jié)中已有介紹。這里需要注意2點(diǎn):
①串口引腳的連接。EM310模塊采用串口與LPC1227進(jìn)行通信,EM310串口引腳的連接比較特殊。RXD對(duì)應(yīng)終端設(shè)備的RXD口,TXD對(duì)應(yīng)終端設(shè)備的TXD口。因此LPC1227與EM310相連時(shí)引腳分配如下:PIO0_1/RXD0對(duì)應(yīng)RXD,PIO0_2/TXD0對(duì)應(yīng)TXD。
②本次設(shè)計(jì)中雖然不需要使用EM310進(jìn)行語(yǔ)音通話,但建議EM310模塊的RING引腳與LPC1227的GPIO引腳相連。因?yàn)镋M310模塊在收到短信和語(yǔ)音呼叫時(shí)都會(huì)在RING引腳輸出低電平,LPC1227通過(guò)中斷可以及時(shí)計(jì)算出RING引腳低電平持續(xù)時(shí)間,從而盡快地對(duì)短信或來(lái)電進(jìn)行處理,比采用軟件查詢方式更具有實(shí)時(shí)性。
3 軟件設(shè)計(jì)
網(wǎng)關(guān)的軟件系統(tǒng)主要由ZigBee協(xié)調(diào)器程序和嵌入式處理器程序構(gòu)成。
3.1 ZigBee協(xié)調(diào)器程序
ZigBee標(biāo)準(zhǔn)定義ZigBee網(wǎng)絡(luò)中存在3種類型的設(shè)備:協(xié)調(diào)器、路由器、終端設(shè)備。其中協(xié)調(diào)器負(fù)責(zé)建立ZigBee網(wǎng)絡(luò),因此網(wǎng)關(guān)中的ZigBee模塊需要在程序中配置為協(xié)調(diào)器類型。
協(xié)調(diào)器程序采用最新的TI公司推出的ZigBee協(xié)議棧2007版,該協(xié)議??珊芎玫刂С志W(wǎng)絡(luò)的自組織和自愈合。相對(duì)于目前使用較多的ZigBe e協(xié)議棧2006版,07版協(xié)議棧在06版協(xié)議?;A(chǔ)上主要增加了支持多密鑰高安全性、大型網(wǎng)絡(luò)和分割傳輸?shù)忍匦浴?br />
協(xié)調(diào)器程序在已有協(xié)議?;A(chǔ)上,主要還需增加如下部分:
①2007版ZigBee協(xié)議棧中包含了CC2591控制程序,為了使用CC2591,在協(xié)調(diào)器程序中需要開(kāi)啟“halboard_cfg.h”文件中的HAL_PA_LNA編譯選項(xiàng)。
②增加串口處理任務(wù),實(shí)現(xiàn)與網(wǎng)關(guān)處理器的串口通信。
③按照自定義的數(shù)據(jù)傳輸幀格式解析、處理接收到的數(shù)據(jù),按照自定義的數(shù)據(jù)傳輸幀格式構(gòu)造待發(fā)送的數(shù)據(jù)。
④定期向全網(wǎng)廣播包含RTC信息的數(shù)據(jù)包。定期廣播該數(shù)據(jù)包對(duì)于全網(wǎng)節(jié)點(diǎn)來(lái)說(shuō)有兩種作用。一是該數(shù)據(jù)包可實(shí)現(xiàn)全網(wǎng)節(jié)點(diǎn)RTC同步;二是網(wǎng)絡(luò)中的其他節(jié)點(diǎn)可通過(guò)定期檢查有無(wú)收到該數(shù)據(jù)包判斷協(xié)調(diào)器有無(wú)出現(xiàn)異常。此設(shè)計(jì)很適合包含路由器、需要RTC同步的大型網(wǎng)絡(luò)。
⑤增加CC2530芯片的看門狗初始化以及定期喂狗程序。
3.2 嵌入式處理器程序
為了實(shí)現(xiàn)網(wǎng)關(guān)的低成本、高實(shí)時(shí)性設(shè)計(jì),本次網(wǎng)關(guān)不采用任何嵌入式操作系統(tǒng)。整個(gè)軟件系統(tǒng)采用前后臺(tái)的編程思想,后臺(tái)ISR(中斷服務(wù)程序)和前臺(tái)主程序循環(huán)之間的數(shù)據(jù)交換可以通過(guò)事件標(biāo)志和數(shù)據(jù)緩存區(qū)來(lái)實(shí)現(xiàn)。
由于EM310模塊內(nèi)置了TCP/IP協(xié)議,因此網(wǎng)關(guān)的MCU向該模塊直接發(fā)送AT指令即可與目標(biāo)上位機(jī)建立TCP/IP連接,實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程無(wú)線傳輸;通過(guò)發(fā)送AT指令還可收發(fā)短信、掛斷語(yǔ)音通話。為了增強(qiáng)網(wǎng)關(guān)的靈活性以及降低運(yùn)行成本,網(wǎng)關(guān)采用GPRS方式與上位機(jī)進(jìn)行通信,同時(shí)保留處理短信功能,實(shí)現(xiàn)短信對(duì)網(wǎng)關(guān)的配置與操控。比如遇到目標(biāo)上位機(jī)IP地址變動(dòng)的情況時(shí),可通過(guò)給網(wǎng)關(guān)發(fā)送短信,配置網(wǎng)關(guān)最新目標(biāo)IP地址然后再與目標(biāo)主機(jī)建立GPRS連接。
對(duì)于該部分程序,需要注意以下幾點(diǎn):
①LPC1227具備在應(yīng)用中編程的功能,對(duì)于需要掉電保存的信息可無(wú)須外擴(kuò)Flash芯片而直接通過(guò)執(zhí)行程序?qū)⑻囟ㄐ畔⒈4娴絃PC1227芯片中。
②ZigBee協(xié)調(diào)器中RAM空間很有限,而且自身的Flash擦除次數(shù)也有限(CC2530支持約2萬(wàn)次的擦寫(xiě),而LPC1227可支持約10萬(wàn)次的擦寫(xiě))??紤]到保存ZigBee網(wǎng)絡(luò)中大量節(jié)點(diǎn)的16位網(wǎng)絡(luò)地址需要很大的空間,而協(xié)調(diào)器中RAM空間明顯不夠用,如果保存到協(xié)調(diào)器的Flash中又會(huì)影響CC2530芯片的使用壽命,因此采用LPC1227中的RAM空間來(lái)保存節(jié)點(diǎn)的網(wǎng)絡(luò)地址。畢竟LPC1227芯片8 KB的RAM空間足以保存一個(gè)大型網(wǎng)絡(luò)中節(jié)點(diǎn)的網(wǎng)絡(luò)地址。同時(shí),LPC1227具備的在應(yīng)用編程功能可將節(jié)點(diǎn)網(wǎng)絡(luò)地址信息保存在自身Flash中。
③本次設(shè)計(jì)中自定義的ZigBee數(shù)據(jù)傳輸幀的節(jié)點(diǎn)ID號(hào)采用一字節(jié)進(jìn)行保存。因此,一個(gè)網(wǎng)關(guān)所建立的ZigBee網(wǎng)絡(luò)容量最大可為255個(gè)節(jié)點(diǎn)(除去協(xié)調(diào)器節(jié)點(diǎn))。為了實(shí)現(xiàn)簡(jiǎn)單的ZigBee節(jié)點(diǎn)網(wǎng)絡(luò)地址和節(jié)點(diǎn)號(hào)之間的地址映射,采用如下代碼實(shí)現(xiàn)(前提是節(jié)點(diǎn)編號(hào)從0到255):
uint16 Node[256]; //定義用于保存16位網(wǎng)絡(luò)地址的數(shù)組
Node[x]=NetAddr; //保存節(jié)點(diǎn)號(hào)為x的網(wǎng)絡(luò)地址
NetAddr=Node[x]; //獲取節(jié)點(diǎn)號(hào)為x的網(wǎng)絡(luò)地址
嵌入式處理器程序的MCU程序處理流程如圖4所示。
4 測(cè)試結(jié)果
網(wǎng)關(guān)的測(cè)試借助上位機(jī)測(cè)試平臺(tái)和ZigBee終端節(jié)點(diǎn),以無(wú)線路燈節(jié)能、監(jiān)控系統(tǒng)為應(yīng)用背景。
上位機(jī)測(cè)試平臺(tái)如圖5所示。
網(wǎng)關(guān)技術(shù)指標(biāo)如表2所列。
5 總結(jié)
本次設(shè)計(jì)中網(wǎng)關(guān)沒(méi)有采用任何嵌入式操作系統(tǒng),相比當(dāng)前采用的嵌入式操作系統(tǒng)網(wǎng)關(guān),它具有更小的軟件負(fù)荷和更低的軟硬件成本。網(wǎng)關(guān)中的ZigBee模塊加入了2.4 GHz功率放大芯片CC2591,使得ZigBee節(jié)點(diǎn)間的無(wú)線通信距離更大,更適用于遠(yuǎn)距離無(wú)線通信場(chǎng)合。
網(wǎng)關(guān)的MCU采用較新的基于Cortex-M0內(nèi)核的ARM芯片LPC1227,運(yùn)行速度高達(dá)45 MHz,具備在應(yīng)用編程(IAP)功能,方便對(duì)關(guān)鍵數(shù)據(jù)的掉電保存。兩路串口與ZigBee模塊和GSM模塊連接方便,具有較高的性價(jià)比。
系統(tǒng)軟件的編寫(xiě)采用前后臺(tái)的設(shè)計(jì)思想,使得網(wǎng)關(guān)具有很好的實(shí)時(shí)性和可靠性,滿足工業(yè)級(jí)要求。因此本文設(shè)計(jì)的網(wǎng)關(guān)在低成本、遠(yuǎn)距離ZigBee通信領(lǐng)域具有較高的推廣價(jià)值。