《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM平臺(tái)的ZigBee網(wǎng)關(guān)設(shè)計(jì)
基于ARM平臺(tái)的ZigBee網(wǎng)關(guān)設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2013年第16期
徐松松,,周西峰,,郭前崗
(南京郵電大學(xué) 自動(dòng)化學(xué)院,,江蘇 南京210046)
摘要: 針對ZigBee傳輸距離短的不足,結(jié)合以太網(wǎng)的遠(yuǎn)程特性,,設(shè)計(jì)了基于ARM平臺(tái)的ZigBee網(wǎng)關(guān)。硬件采用STM32處理器和ZigBee CC2530,,在操作系統(tǒng)μC/OS-II的基礎(chǔ)上實(shí)現(xiàn)TCP/IP協(xié)議和ZigBee協(xié)議的移植,。經(jīng)測試,該網(wǎng)關(guān)通用性好,,實(shí)現(xiàn)了ZigBee與ARM數(shù)據(jù)通信,,通過以太網(wǎng)實(shí)現(xiàn)了數(shù)據(jù)的遠(yuǎn)程監(jiān)測。
Abstract:
Key words :

摘  要: 針對ZigBee傳輸距離短的不足,,結(jié)合以太網(wǎng)的遠(yuǎn)程特性,,設(shè)計(jì)了基于ARM平臺(tái)的ZigBee網(wǎng)關(guān)。硬件采用STM32處理器和ZigBee CC2530,,在操作系統(tǒng)μC/OS-II的基礎(chǔ)上實(shí)現(xiàn)TCP/IP協(xié)議和ZigBee協(xié)議的移植,。經(jīng)測試,該網(wǎng)關(guān)通用性好,,實(shí)現(xiàn)了ZigBee與ARM數(shù)據(jù)通信,,通過以太網(wǎng)實(shí)現(xiàn)了數(shù)據(jù)的遠(yuǎn)程監(jiān)測。
關(guān)鍵詞: ZigBee,;μC/OS-II,;以太網(wǎng);網(wǎng)關(guān)

    無線傳感網(wǎng)絡(luò)WSN(Wireless Sensor Network)是由部署在監(jiān)測區(qū)域內(nèi)的大量廉價(jià)微型傳感器節(jié)點(diǎn)組成的,、通過無線通信方式形成的一個(gè)多跳的自組織的網(wǎng)絡(luò)系統(tǒng),。ZigBee憑借低功耗、短延時(shí),、自組網(wǎng)等優(yōu)勢已廣泛應(yīng)用于無線傳感器網(wǎng)絡(luò)中,,但如何實(shí)現(xiàn)ZigBee網(wǎng)絡(luò)的遠(yuǎn)程管理和監(jiān)測逐漸成為該領(lǐng)域的重要研究課題。本文設(shè)計(jì)了基于ARM平臺(tái)的ZigBee網(wǎng)關(guān),,其目的是實(shí)現(xiàn)ZigBee無線網(wǎng)絡(luò)的遠(yuǎn)程控制。
1 系統(tǒng)概述
    網(wǎng)關(guān)主要由無線傳感器和以太網(wǎng)服務(wù)器兩部分組成,。無線傳感器選用ZigBee CC2530,;以太網(wǎng)服務(wù)器以STM32作為主處理器,通過串口(UART)連接以太網(wǎng)控制器ENC28J60,。
    網(wǎng)關(guān)總體結(jié)構(gòu)由三部分組成,,即硬件層、軟件層和應(yīng)用層[1],,如圖1所示,。硬件層描述了網(wǎng)關(guān)中的處理器和無線傳感等硬件;軟件層是移植μC/OS-II實(shí)時(shí)內(nèi)核,、嵌入式TCP/IP協(xié)議棧LwIP和ZigBee協(xié)議棧,,實(shí)現(xiàn)TCP/IP和ZigBee兩種協(xié)議棧間協(xié)議的雙向透明轉(zhuǎn)換,,同時(shí)封裝一些關(guān)鍵應(yīng)用程序接口(API)函數(shù)供應(yīng)用層程序調(diào)用;應(yīng)用層是用戶根據(jù)具體的數(shù)據(jù)要求編寫的應(yīng)用程序,,用戶根據(jù)實(shí)際需要使用下層定義的API函數(shù)自行擴(kuò)充相關(guān)應(yīng)用,。

2 網(wǎng)關(guān)硬件設(shè)計(jì)
    網(wǎng)關(guān)的工作流程為:網(wǎng)關(guān)內(nèi)的ZigBee協(xié)調(diào)器創(chuàng)建一個(gè)無線網(wǎng)路,控制區(qū)域內(nèi)ZigBee節(jié)點(diǎn)自動(dòng)搜尋網(wǎng)絡(luò),,并加入到網(wǎng)絡(luò)中,;當(dāng)需要遠(yuǎn)程監(jiān)控計(jì)算機(jī)獲得某一個(gè)節(jié)點(diǎn)的數(shù)據(jù)或者發(fā)送某一個(gè)指令給節(jié)點(diǎn)時(shí),只需向以太網(wǎng)口發(fā)送相應(yīng)的節(jié)點(diǎn)地址和指令即可,;網(wǎng)關(guān)以太網(wǎng)接口獲得遠(yuǎn)程計(jì)算機(jī)的命令后,,就會(huì)通過處理器的協(xié)議轉(zhuǎn)換通知ZigBee協(xié)調(diào)器向相應(yīng)的傳感器節(jié)點(diǎn)發(fā)送指令;傳感器節(jié)點(diǎn)收到命令后按照指令執(zhí)行操作,,并把數(shù)據(jù)按相反的路徑發(fā)送給遠(yuǎn)程監(jiān)測計(jì)算機(jī),。網(wǎng)關(guān)的硬件結(jié)構(gòu)如圖2所示。

   其中,,微處理器通過SPI方式與ZigBee和以太網(wǎng)控制器通信,,ZigBee節(jié)點(diǎn)是監(jiān)測區(qū)域內(nèi)的傳感器節(jié)點(diǎn),自動(dòng)加入?yún)f(xié)調(diào)器建立的網(wǎng)路中,。
2.1 硬件選擇
    考慮到高性能,、低成本等因素,網(wǎng)關(guān)選用基于Cortex-M3內(nèi)核的STM32F103作為主處理器,。此系列處理器是增強(qiáng)型處理器,,工作頻率達(dá)到72 MHz,內(nèi)置高速存儲(chǔ)器(高達(dá)128 KB的閃存和20 B的SRAM)接口,。集成了許多緊耦合系統(tǒng)外設(shè),,能滿足下一代產(chǎn)品的控制需求。調(diào)試模式有串口調(diào)試和JTAG接口,,本文中采用串口調(diào)試方式,,節(jié)省了開銷。多個(gè)通信接口:2個(gè)I2C接口(SMBus/PMBus),、5個(gè)USART接口,、3個(gè)SPI接口等。這些特性足以滿足本網(wǎng)關(guān)設(shè)計(jì)的要求,。
    CC2530是用于IEEE802.15.4,、ZigBee和RF4CE應(yīng)用的一個(gè)真正的片上系統(tǒng)(SoC)解決方案。低功耗,、短延時(shí),,以非常低的總成本建立龐大的網(wǎng)絡(luò)節(jié)點(diǎn)等特性成為無線傳感網(wǎng)絡(luò)重要技術(shù)之一,并且結(jié)合了領(lǐng)先的RF收發(fā)器的優(yōu)良性能,業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8051 CPU,,系統(tǒng)內(nèi)具有可編程閃存,、8 KB RAM和許多其他強(qiáng)大的功能。2個(gè)USART接口,,調(diào)試接口用于內(nèi)部電路調(diào)試,,具有兩線串行接口。
2.2 STM32與CC2530的硬件連接
    STM32處理器與CC2530的硬件連接[2]如表1所示,。

3 網(wǎng)關(guān)軟件設(shè)計(jì)
    本文設(shè)計(jì)的網(wǎng)關(guān),,按軟件平臺(tái)可分為運(yùn)行在ZigBee無線模塊中的ZigBee協(xié)議棧程序和運(yùn)行在主處理器STM32中的嵌入式以太網(wǎng)服務(wù)器程序兩部分。其中在STM32中移植?滋C/OS-II實(shí)時(shí)操作系統(tǒng),,兩個(gè)不同的網(wǎng)絡(luò)使用兩類協(xié)議,,即TCP/IP協(xié)議和ZigBee協(xié)議。
3.1 ZigBee協(xié)議棧
    ZigBee協(xié)調(diào)器中運(yùn)行ZigBee協(xié)議棧程序,,協(xié)議棧采用Z-Stack 2007,,其結(jié)構(gòu)包括應(yīng)用層、網(wǎng)絡(luò)層,、媒介訪問控制層和物理層,。可以說Z-Stack是一個(gè)小型的操作系統(tǒng),,底層和網(wǎng)絡(luò)層內(nèi)容已經(jīng)封裝好,,只需根據(jù)需要修改應(yīng)用層函數(shù),通過任務(wù)輪詢機(jī)制執(zhí)行任務(wù),。
3.2 μC/0S-II下LwIP的移植
    LwIP是瑞士計(jì)算機(jī)科學(xué)院(Swedish Institute of Computer Science)的DUNKELS A等開發(fā)的一個(gè)小型開源的TCP/IP協(xié)議棧,,實(shí)現(xiàn)的重點(diǎn)是在保持TCP協(xié)議主要功能的基礎(chǔ)上減少對RAM的占用,一般它只需要幾十KB RAM和40 KB左右的ROM就可以運(yùn)行,,使得LwIP協(xié)議棧適合應(yīng)用在低端嵌入式系統(tǒng)中,。
    LwIP協(xié)議棧把所有與硬件、OS,、編譯器相關(guān)的部分獨(dú)立出來,,放在/src/arch目錄下,因此LwIP在?滋C/OS-II上的移植實(shí)現(xiàn)只需要修改這個(gè)目錄下的文件,。LwIP成功移植到μC/OS-II操作系統(tǒng)需要修改和編程的部分[3]:
    (1)修改與STM32及IAR編譯器相關(guān)的include文件(cc.h,、cpu.h、perf.h),;
    (2)修改與μC/OS-II相關(guān)的一些結(jié)構(gòu)和函數(shù);
    (3)lib_arch中庫函數(shù)的實(shí)現(xiàn),;
    (4)STM32網(wǎng)絡(luò)驅(qū)動(dòng)程序編寫,;
    (5)μC/OS-II模擬層相關(guān)代碼編寫。
    完成上面的幾個(gè)部分后就可以在?滋C/0S-II中初始化LwIP,,并創(chuàng)建TCP或UDP任務(wù),。LwIP的初始化必須在μC/0SII完全啟動(dòng)之后(即在任務(wù)中)進(jìn)行,,因?yàn)樗某跏蓟玫搅诵盘?hào)量等 OS相關(guān)的操作。關(guān)鍵代碼和說明如下:
main(){
OSInit(),;
OSTaskCreate(lwip_init_task, &LineNo11, &lwip_init_stk
[TASK_STK_SIZE-1], 0),;
OSTaskCreate(usr_task,&LineNo12,&usr_stk[TASK_STK_
SIZE-1],1);
OSStart(),;
}
3.3 協(xié)議轉(zhuǎn)換軟件設(shè)計(jì)
    如何使得節(jié)點(diǎn)間數(shù)據(jù)交換透明化是網(wǎng)關(guān)應(yīng)用程序的主要問題,,需要設(shè)計(jì)協(xié)議轉(zhuǎn)換。在TCP/IP協(xié)議簇中,,以太網(wǎng)的數(shù)據(jù)傳輸使用硬件地址(MAC)來識(shí)別,,地址解析協(xié)議(ARP)完成IP地址和數(shù)據(jù)鏈路層使用的硬件地址之間的轉(zhuǎn)換,參考TCP/IP下的實(shí)現(xiàn)機(jī)制,,在網(wǎng)關(guān)軟件支持層的ZigBee協(xié)議和TCP/IP協(xié)議之上添加應(yīng)用地址適配層和應(yīng)用協(xié)議層,。軟件結(jié)構(gòu)[4]如圖3所示。

 

 

    應(yīng)用地址適配層實(shí)現(xiàn)ZigBee地址,、以太網(wǎng)地址與應(yīng)用層地址的映射關(guān)系,,通過創(chuàng)建地址映射表以及相應(yīng)的軟件操作接口來實(shí)現(xiàn);應(yīng)用協(xié)議層在應(yīng)用地址適配層的基礎(chǔ)上,,通過制定統(tǒng)一的應(yīng)用協(xié)議,,規(guī)范數(shù)據(jù)交換格式;網(wǎng)關(guān)應(yīng)用程序?qū)崿F(xiàn)網(wǎng)關(guān)具體功能,,以μC/OS-II任務(wù)的形式組織運(yùn)行,。
3.4 μC/OS-II操作系統(tǒng)
    μC/OS-II是一種免費(fèi)公開源代碼、結(jié)構(gòu)小巧,、具有可剝奪實(shí)時(shí)內(nèi)核的實(shí)時(shí)操作系統(tǒng),,包含了任務(wù)調(diào)度、任務(wù)管理,、時(shí)間管理,、內(nèi)存管理和任務(wù)間的通信和同步等基本功能。
3.4.1 系統(tǒng)移植
    在STM32微處理器平臺(tái)上移植?滋C/OS-II只需要修改OS_CPU.H,、OS_CPU_A.ASM和OS_CPU_C.C 3個(gè)文件,。OS_CPU.H中修改聲明中與微處理器相關(guān)的常量、宏和typedef,;OS_CPU_A.ASM中實(shí)現(xiàn)五個(gè)與處理器相關(guān)的函數(shù):OS_CPU_SR_Save( ),、OS_CPU_SR_Restore( )、OSStart-HighRdy( ),、OSCtxSw( ),、OSIntCtxSw( );OS_CPU_C.C中有9個(gè)鉤子函數(shù)(空函數(shù))和一個(gè)OSTaskStkInit( )函數(shù),OSTask-StkInit( )函數(shù)功能是完成新建任務(wù)堆棧的初始化,。
3.4.2 網(wǎng)關(guān)任務(wù)函數(shù)
    網(wǎng)關(guān)應(yīng)用程序是以μC/OS-II任務(wù)的形式組織運(yùn)行的,,μC/OS-II中主要任務(wù)是接收和處理以太網(wǎng)的指令,實(shí)現(xiàn)以太網(wǎng)和ZigBee節(jié)點(diǎn)間通信,。系統(tǒng)中的主要任務(wù)函數(shù)包括:以太網(wǎng)數(shù)據(jù)接收任務(wù)TaskEthernetRec(),、以太網(wǎng)數(shù)據(jù)處理任務(wù)TaskDealEthernet()、以太網(wǎng)數(shù)據(jù)發(fā)送任務(wù)TaskEthernetSend(),、ZigBee數(shù)據(jù)接收任務(wù)TaskZigBeeRec(),、ZigBee數(shù)據(jù)處理任務(wù)TaskDealZigBee()和ZigBee數(shù)據(jù)發(fā)送任務(wù)TaskZigBeeSend()。
    任務(wù)之間的數(shù)據(jù)共享通過多個(gè)數(shù)據(jù)隊(duì)列實(shí)現(xiàn),,主要數(shù)據(jù)隊(duì)列包括:以太網(wǎng)數(shù)據(jù)接收緩沖隊(duì)列QueueEthernetRec(),、以太網(wǎng)數(shù)據(jù)發(fā)送緩沖隊(duì)列QueueEthernetSend()、ZigBee數(shù)據(jù)接收緩沖隊(duì)列QueueZigBeeRec()及ZigBee數(shù)據(jù)發(fā)送緩沖隊(duì)列QueueZigBeeSend(),。
    通過本網(wǎng)關(guān)對兩個(gè)ZigBee節(jié)點(diǎn)采集的溫度數(shù)據(jù)進(jìn)行簡單的控制,,取得了理想的控制效果。網(wǎng)關(guān)的設(shè)計(jì)彌補(bǔ)了ZigBee通信距離短的不足,,利用低功耗,、高性能的STM32微處理器,實(shí)現(xiàn)了ZigBee短距離通信的遠(yuǎn)程控制,,增加了ZigBee網(wǎng)絡(luò)應(yīng)用的廣泛性,。軟件部分采用?滋C/OS-II操作系統(tǒng),方便移植到更高性能的ARM9處理器上,。該網(wǎng)關(guān)所具有靈活性使其可應(yīng)用在多種不同的工業(yè)控制現(xiàn)場,,具有較強(qiáng)的實(shí)用性。
參考文獻(xiàn)
[1] 張帥華,,楊遠(yuǎn),,梁玉堂,等.基于AT91SAM9260的ZigBee工業(yè)以太網(wǎng)網(wǎng)關(guān)設(shè)計(jì)[J].微計(jì)算機(jī)信息,,2011,,27(8):113-114.
[2] 徐琰,馬忠梅.LM3S1138與CC2420的無線傳感器網(wǎng)絡(luò)通信[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,,2009(10):18-20.
[3] 喬大雷,,夏士雄,楊松.基于ARM9的嵌入式ZigBee網(wǎng)關(guān)設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,,2007,,23(12-2):156-158.
[4] 甘勇,王華,,常亞軍,,等.基于ARM平臺(tái)的ZigBee網(wǎng)關(guān)設(shè)計(jì)[J].通信技術(shù),,2009,42(1):199-201.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。