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

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

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

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

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

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

 

 

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。