基於ARM9的嵌入式Zigbee網關設計與實現

摘要:設計並實現了一個基於ARM9處理器的Zigbee無線傳感器網絡嵌入式網關,用來完成Zigbee和Internet之間數據的透明轉換。給出了該網關的硬件方案設計和主要軟件編程思路以及一種新型網關的協議轉換方案的實現思路。該網關具有較好的通用性。 關鍵詞:無線傳感器網絡 ;Zigbee ;嵌入式網關;STR912 ;LwIP

引言

    無線傳感器網絡(Wireless Sensor Network,WSN)是指由大量成本相對低廉的,具有感知能力、計算能力、實時通信能力的傳感器節點組成的嵌入式無線網絡,是當前衆多領域的研究和應用熱點。建立在IEEE 802.15.4(LR_WPAN,低速率無線個人區域網)上的Zigbee協議是應用於無線監測與控制的全球性無線通信標準,是無線傳感器網絡組網的首選技術之一。

隨着Zigbee無線傳感器網絡技術的廣泛應用,如何通過現有網絡基礎設施(如Internet、GPRS等)對其進行遠程管理、控制感測環境中的各種傳感裝置,逐漸成爲該領域的重要研究課題。圖1給出了基於Zigbee的無線傳感器網絡體系結構,如圖示Zigbee網關在整個無線傳感器網絡體系中起着重要的樞紐作用,同時也是WSN整體系統的“瓶頸”之一。當圖1中的服務器或用戶部分爲其它Zigbee網絡時,通過Zigbee網關和Internet或GPRS做媒介,就使得世界範圍內的不同監測區域都可以信息共享,這大大縮小了物理世界的時空距離。

 

圖1 基於Zigbee技術的無線傳感器網絡

本文主要研究的是Internet環境下基於Zigbee傳感器網絡的網關設計及其實現。

1 系統概述

   網關是建立在傳輸層以上的協議轉換器,通常它連接兩個或多個相互獨立的網絡,每接收一種協議的數據包後,在轉發之前將它轉換爲另一種協議的格式。考慮到Zigbee節點的通信能力有限(數據速率僅爲250 Kbps),爲了減少網關協議轉換自身的工作量,本網關選擇了一款集成Ethernet接口的ARM9 芯片來完成硬件系統的搭建。

本網關採用模塊化設計方案,如圖2所示由硬件層、軟件層和應用層三大部分組成。其中硬件層描述了網關的硬件實現,在後文將詳細介紹;軟件層移植μC/OS-II實時操作系統內核、Zigbee和嵌入式TCP/IP協議棧LwIP,實現了Zigbee和TCP/IP協議的雙向透明轉換,同時封裝一些關鍵API函數供應用層程序調用;應用層運行的是用戶編寫的應用程序,用戶可以根據實際需要使用下層定義的API自行擴充相關應用。

 

圖2 Zigbee網關總體結構

2 硬件設計

    網關硬件結構如圖3所示,由內部集成以太網MAC的ARM9處理器STR912FW44X、Zigbee射頻收發模塊CC2420、大容量DataFlash存儲卡片AT45DCB008、以太網收發芯片(PHY) RTL8201和帶觸摸功能的LCD顯示模塊LQ084V1DG21等模塊組成。

 

圖3 Zigbee網關硬件結構

其中STR912FW44X作爲硬件系統的主控芯片,它是意法半導體(ST Microelectronics)推出的基於ARM966E-S內核,片內集成Flash、USB、CAN、以太網MAC、AC馬達控制、ADC、RTC、DMA等接口的高性能ARM9 SOC,最高主頻可達96Mhz;

       Zigbee射頻收發芯片CC2420是挪威Chipcon(現爲TI)推出的符合2.4 GHz IEEE 802.15.4和Zigbee 標準的射頻收發器。CC2420採用O-QPSK調製方式,工作頻帶範圍爲2.400~2. 4835 GHz,接收靈敏度爲-94 dBm,抗鄰頻道干擾能力爲39 dB。利用此芯片開發的無線通信設備支持數據傳輸率高達250 Kbps,能夠實現點對多點的快速組網;

       AT45DCB008是Atmel公司推出的新型DataFlash存儲芯片,在該網關中用來保存網絡故障狀態下的數據信息。AT45DCB008中的數據按頁存放,主存共8192頁,每頁1024字節,總容量約爲8M字節,每頁的擦寫次數保證在100,000次以上;

以太網PHY層芯片採用的是Realtek公司的RTL8201BL,它是一個單端口的物理層收發器,實現了全部的10/100M以太網物理層功能;

       顯示部分採用的LQ084V1DG21是SHARP公司的帶觸摸屏8.4英寸TFT數字液晶顯示屏,分辨率爲640×480。

3 嵌入式網關軟件設計

3.1 μC/OS-II下的LwIP的移植

   μC/OS-II是一個搶佔式的實時多任務內核操作系統,具有開放源碼、可固化、可剪裁、高穩定性和可靠性等特點。目前國內外對μC/OS-II的相關研究已有很多,其在STR912處理器上的移植在此不再贅述。LwIP是瑞士計算機科學院開發的輕量級(Light Weight)開放源碼TCP/IP協議棧,目前最新版本爲1.2.0

LwIP協議棧把所有與硬件相關、OS、編譯器相關的部分獨立出來,放在/src/arch目錄下,可以是說其在設計時就考慮了移植問題。LwIP在μC/OS-II上的移植就是修改這個目錄下的文件,其它的文件一般不做修改。需要修改和自己編程實現的是以下幾部分:

●與STR912及IAR編譯器相關的include文件;

●μC/OS-II模擬層相關代碼編寫;

●與μC/OS-II相關的一些結構和函數;

●lib_arch中庫函數的實現;

●STR912網絡驅動程序編寫。

完成以上代碼移植的工作後,LwIP就可以順利運行在μC/OS-II下,主要通過以下程序完成LwIP的初始化及運行:

main(){     

OSInit();//μC/OS-II初始化

OSTaskCreate(lwip_init_task,&LineNo11,&lwip_init_stk[TASK_STK_SIZE-1], 0);      //創建LwIP初始化任務

OSTaskCreate(usr_task,&LineNo12,&usr_stk[TASK_STK_SIZE-1],1);//創建用戶任務

                   OSStart();//啓動LwIP  }

       在main函數中創建了lwip_init_task來初始化LwIP任務(優先級爲0)和usr_task用戶任務(優先級爲1)。需要指出的是,在lwip_init_task任務中除了完成初始化硬件時鐘和LwIP本身等工作之外,還創建了tcpip_thread(優先級爲5)和tcpecho_thread(優先級爲6),其中tcpip_thread纔是LwIP的主線程,也是應該先創建的。

3.2   μC/OS-II下的Zigbee協議棧的實現

我們在該網關平臺上運行自主編寫Zigbee協議棧的子集ez_PAN。ez_PAN目前還很不完善,只實現了Zigbee的部分關鍵功能,僅支持星型和簇狀網絡(Cluster),支持網絡的動態組網配置和動態綁定等。ez_PAN協議棧結構如圖4所示:

 

圖4  ez_PAN協議棧結構

下面給出ez_PAN 協議棧上的協調器(Coordinator)、路由器(Router)和精簡節點(RFD)實現的關鍵代碼。Coordinator通過aplFormNetwork()函數建立網絡,等待其它節點(Router和RFD)的加入,主要程序如下:

Main()

 {

halInit(); //初始化 HAL 層

hawInit();//硬件初始化

aplInit(); //初始化APL

ENABLE_GLOBAL_INTERRUPT(); //開中斷

aplFormNetwork(); //建立網絡

while(apsBusy)()) {apsFSM();}  //等待建立完成

while(1) {apsFSM();}  //循環執行協議棧

}

其中調用apsBusy()來判斷當前協議棧是否忙於其它程序調用,apsFSM()是在APS層上實現的FSM(有限狀態機),被apsBusy週期調用來維持ez_PAN的運行。在Coordinator建立網絡完成後,允許Router或RFD節點動態加入,關鍵代碼實現如下:

do {

aplJoinNetwork();//Router或RFD加入網絡

while(apsBusy ()) {  apsFSM();}  //等待加入完成

} while (aplGetStatus ()! =LRWPAN_SUCCESS);

3.3   協議轉換軟件設計

    在TCP/IP協議簇中,以太網的數據傳輸使用硬件地址(MAC)來進行識別,其中ARP(地址解析協議)完成IP地址和數據鏈路層使用的硬件地址之間的轉換,因此爲了保證Zigbee網關在以太網中的通信,首先要實現ARP協議的功能。Zigbee網絡中的節點數理論上最多可達65536個,每個節點同樣有自己唯一的MAC地址(64位長地址或16位短地址)。參考TCP/IP下的實現機制,我們實現了Zigbee協議中的適配層和ARP,實現IP地址到Zigbee節點地址的映射。協議轉換的工作原理如圖5所示,下面簡單描述一下數據包在網關中從Ethernet向Zigbee單方向轉換過程:Ethernet端從某網絡接口接收一個正常發往本機的IP數據包,簡單判斷後向上發給對應的UDP或TCP處理函數進行相應處理,然後再向上發給網關應用程序處理;網關應用程序經過簡單分析後,確定要轉發給Zigbee網絡中的哪個節點,通過Zigbee端的ARP解析出該節點在Zigbee網絡中的MAC地址,然後將相應數據包成功交至該節點,這樣就完成此次從Ethernet向Zigbee端的協議轉換。Zigbee向Ethernet端轉換類似,不再贅述。

圖5 網關協議轉換框圖

4        結論

本文設計的網關已在我們的“基於Zigbee無線傳感器網絡的煤礦井下定位跟蹤系統”項目中得以實用,取得了較好的效果。經測試該網關具有效率高、響應實時、可靠性高、功耗低,抗干擾能力強等特點,同時具有很好的通用性。由於當前Zigbee技術還在不斷的更新和完善中,如何跟蹤最新的Zigbee技術來提高網關的性能以及如何提高ez_PAN的多平臺可移植性,將是我們以後研究的重點。

本文作者創新點:採用集成Ethernet (MAC)接口的ARM9芯片STR912作爲核心擴展設計了一個Zigbee網關,它很好地克服了傳統網關架構下Zigbee傳輸速率的瓶頸,大大降低了協議轉換過程中的資源和處理時間消耗。該網關設計思路、技術實現新穎,具有較強的實用性。

 

參考文獻

[1] Zigbee specification v1.1. Zigbee Alliance.http://www.zigbee.org,2006

[2] LwIP v1.2.0 source code. Leon Woestenberg.http://savannah.nongnu.org/projects/lwip/, 2006

[3] Patrick Kinney, Kinney Consulting LLC.Gateways: Beyond the Sensor Network .Zigbee Alliance, 2005

[4] http://www.ece.msstate.edu/~reese/msstatePAN/, 2006

[5] 趙晨,何波,王睿.基於射頻芯片CC2420實現的Zigbee無線通信設計[J].微計算機信息,2007(1-2):P101-102

 

轉自 www.21ic.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章