摘 要: 針對ZigBee傳輸距離短的不足,結合以太網的遠程特性,設計了基于ARM平臺的ZigBee網關。硬件采用STM32處理器和ZigBee CC2530,在操作系統μC/OS-II的基礎上實現TCP/IP協議和ZigBee協議的移植。經測試,該網關通用性好,實現了ZigBee與ARM數據通信,通過以太網實現了數據的遠程監(jiān)測。
關鍵詞: ZigBee;μC/OS-II;以太網;網關
無線傳感網絡WSN(Wireless Sensor Network)是由部署在監(jiān)測區(qū)域內的大量廉價微型傳感器節(jié)點組成的、通過無線通信方式形成的一個多跳的自組織的網絡系統。ZigBee憑借低功耗、短延時、自組網等優(yōu)勢已廣泛應用于無線傳感器網絡中,但如何實現ZigBee網絡的遠程管理和監(jiān)測逐漸成為該領域的重要研究課題。本文設計了基于ARM平臺的ZigBee網關,其目的是實現ZigBee無線網絡的遠程控制。
1 系統概述
網關主要由無線傳感器和以太網服務器兩部分組成。無線傳感器選用ZigBee CC2530;以太網服務器以STM32作為主處理器,通過串口(UART)連接以太網控制器ENC28J60。
網關總體結構由三部分組成,即硬件層、軟件層和應用層[1],如圖1所示。硬件層描述了網關中的處理器和無線傳感等硬件;軟件層是移植μC/OS-II實時內核、嵌入式TCP/IP協議棧LwIP和ZigBee協議棧,實現TCP/IP和ZigBee兩種協議棧間協議的雙向透明轉換,同時封裝一些關鍵應用程序接口(API)函數供應用層程序調用;應用層是用戶根據具體的數據要求編寫的應用程序,用戶根據實際需要使用下層定義的API函數自行擴充相關應用。
2 網關硬件設計
網關的工作流程為:網關內的ZigBee協調器創(chuàng)建一個無線網路,控制區(qū)域內ZigBee節(jié)點自動搜尋網絡,并加入到網絡中;當需要遠程監(jiān)控計算機獲得某一個節(jié)點的數據或者發(fā)送某一個指令給節(jié)點時,只需向以太網口發(fā)送相應的節(jié)點地址和指令即可;網關以太網接口獲得遠程計算機的命令后,就會通過處理器的協議轉換通知ZigBee協調器向相應的傳感器節(jié)點發(fā)送指令;傳感器節(jié)點收到命令后按照指令執(zhí)行操作,并把數據按相反的路徑發(fā)送給遠程監(jiān)測計算機。網關的硬件結構如圖2所示。
其中,微處理器通過SPI方式與ZigBee和以太網控制器通信,ZigBee節(jié)點是監(jiān)測區(qū)域內的傳感器節(jié)點,自動加入協調器建立的網路中。
2.1 硬件選擇
考慮到高性能、低成本等因素,網關選用基于Cortex-M3內核的STM32F103作為主處理器。此系列處理器是增強型處理器,工作頻率達到72 MHz,內置高速存儲器(高達128 KB的閃存和20 B的SRAM)接口。集成了許多緊耦合系統外設,能滿足下一代產品的控制需求。調試模式有串口調試和JTAG接口,本文中采用串口調試方式,節(jié)省了開銷。多個通信接口:2個I2C接口(SMBus/PMBus)、5個USART接口、3個SPI接口等。這些特性足以滿足本網關設計的要求。
CC2530是用于IEEE802.15.4、ZigBee和RF4CE應用的一個真正的片上系統(SoC)解決方案。低功耗、短延時,以非常低的總成本建立龐大的網絡節(jié)點等特性成為無線傳感網絡重要技術之一,并且結合了領先的RF收發(fā)器的優(yōu)良性能,業(yè)界標準的增強型8051 CPU,系統內具有可編程閃存、8 KB RAM和許多其他強大的功能。2個USART接口,調試接口用于內部電路調試,具有兩線串行接口。
2.2 STM32與CC2530的硬件連接
STM32處理器與CC2530的硬件連接[2]如表1所示。
3 網關軟件設計
本文設計的網關,按軟件平臺可分為運行在ZigBee無線模塊中的ZigBee協議棧程序和運行在主處理器STM32中的嵌入式以太網服務器程序兩部分。其中在STM32中移植?滋C/OS-II實時操作系統,兩個不同的網絡使用兩類協議,即TCP/IP協議和ZigBee協議。
3.1 ZigBee協議棧
ZigBee協調器中運行ZigBee協議棧程序,協議棧采用Z-Stack 2007,其結構包括應用層、網絡層、媒介訪問控制層和物理層。可以說Z-Stack是一個小型的操作系統,底層和網絡層內容已經封裝好,只需根據需要修改應用層函數,通過任務輪詢機制執(zhí)行任務。
3.2 μC/0S-II下LwIP的移植
LwIP是瑞士計算機科學院(Swedish Institute of Computer Science)的DUNKELS A等開發(fā)的一個小型開源的TCP/IP協議棧,實現的重點是在保持TCP協議主要功能的基礎上減少對RAM的占用,一般它只需要幾十KB RAM和40 KB左右的ROM就可以運行,使得LwIP協議棧適合應用在低端嵌入式系統中。
LwIP協議棧把所有與硬件、OS、編譯器相關的部分獨立出來,放在/src/arch目錄下,因此LwIP在?滋C/OS-II上的移植實現只需要修改這個目錄下的文件。LwIP成功移植到μC/OS-II操作系統需要修改和編程的部分[3]:
(1)修改與STM32及IAR編譯器相關的include文件(cc.h、cpu.h、perf.h);
(2)修改與μC/OS-II相關的一些結構和函數;
(3)lib_arch中庫函數的實現;
(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 協議轉換軟件設計
如何使得節(jié)點間數據交換透明化是網關應用程序的主要問題,需要設計協議轉換。在TCP/IP協議簇中,以太網的數據傳輸使用硬件地址(MAC)來識別,地址解析協議(ARP)完成IP地址和數據鏈路層使用的硬件地址之間的轉換,參考TCP/IP下的實現機制,在網關軟件支持層的ZigBee協議和TCP/IP協議之上添加應用地址適配層和應用協議層。軟件結構[4]如圖3所示。
應用地址適配層實現ZigBee地址、以太網地址與應用層地址的映射關系,通過創(chuàng)建地址映射表以及相應的軟件操作接口來實現;應用協議層在應用地址適配層的基礎上,通過制定統一的應用協議,規(guī)范數據交換格式;網關應用程序實現網關具體功能,以μC/OS-II任務的形式組織運行。
3.4 μC/OS-II操作系統
μC/OS-II是一種免費公開源代碼、結構小巧、具有可剝奪實時內核的實時操作系統,包含了任務調度、任務管理、時間管理、內存管理和任務間的通信和同步等基本功能。
3.4.1 系統移植
在STM32微處理器平臺上移植?滋C/OS-II只需要修改OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C 3個文件。OS_CPU.H中修改聲明中與微處理器相關的常量、宏和typedef;OS_CPU_A.ASM中實現五個與處理器相關的函數:OS_CPU_SR_Save( )、OS_CPU_SR_Restore( )、OSStart-HighRdy( )、OSCtxSw( )、OSIntCtxSw( );OS_CPU_C.C中有9個鉤子函數(空函數)和一個OSTaskStkInit( )函數,OSTask-StkInit( )函數功能是完成新建任務堆棧的初始化。
3.4.2 網關任務函數
網關應用程序是以μC/OS-II任務的形式組織運行的,μC/OS-II中主要任務是接收和處理以太網的指令,實現以太網和ZigBee節(jié)點間通信。系統中的主要任務函數包括:以太網數據接收任務TaskEthernetRec()、以太網數據處理任務TaskDealEthernet()、以太網數據發(fā)送任務TaskEthernetSend()、ZigBee數據接收任務TaskZigBeeRec()、ZigBee數據處理任務TaskDealZigBee()和ZigBee數據發(fā)送任務TaskZigBeeSend()。
任務之間的數據共享通過多個數據隊列實現,主要數據隊列包括:以太網數據接收緩沖隊列QueueEthernetRec()、以太網數據發(fā)送緩沖隊列QueueEthernetSend()、ZigBee數據接收緩沖隊列QueueZigBeeRec()及ZigBee數據發(fā)送緩沖隊列QueueZigBeeSend()。
通過本網關對兩個ZigBee節(jié)點采集的溫度數據進行簡單的控制,取得了理想的控制效果。網關的設計彌補了ZigBee通信距離短的不足,利用低功耗、高性能的STM32微處理器,實現了ZigBee短距離通信的遠程控制,增加了ZigBee網絡應用的廣泛性。軟件部分采用?滋C/OS-II操作系統,方便移植到更高性能的ARM9處理器上。該網關所具有靈活性使其可應用在多種不同的工業(yè)控制現場,具有較強的實用性。
參考文獻
[1] 張帥華,楊遠,梁玉堂,等.基于AT91SAM9260的ZigBee工業(yè)以太網網關設計[J].微計算機信息,2011,27(8):113-114.
[2] 徐琰,馬忠梅.LM3S1138與CC2420的無線傳感器網絡通信[J].單片機與嵌入式系統應用,2009(10):18-20.
[3] 喬大雷,夏士雄,楊松.基于ARM9的嵌入式ZigBee網關設計與實現[J].微計算機信息,2007,23(12-2):156-158.
[4] 甘勇,王華,常亞軍,等.基于ARM平臺的ZigBee網關設計[J].通信技術,2009,42(1):199-201.