新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于ARM9的嵌入式Zigbee網(wǎng)關(guān)設(shè)計(jì)與實(shí)現(xiàn)

基于ARM9的嵌入式Zigbee網(wǎng)關(guān)設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2008-04-10 來(lái)源:網(wǎng)絡(luò) 收藏
摘要了一個(gè)處理器的無(wú)線傳感器網(wǎng)絡(luò),用來(lái)完成和Internet之間數(shù)據(jù)的透明轉(zhuǎn)換。給出了該的硬件方案和主要軟件編程思路以及一種新型的協(xié)議轉(zhuǎn)換方案的思路。該網(wǎng)關(guān)具有較好的通用性。
關(guān)鍵詞:無(wú)線傳感器網(wǎng)絡(luò);;網(wǎng)關(guān);STR912;LwIP

引言

無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)是指由大量成本相對(duì)低廉的,具有感知能力、計(jì)算能力、實(shí)時(shí)通信能力的傳感器節(jié)點(diǎn)組成的無(wú)線網(wǎng)絡(luò),是當(dāng)前眾多領(lǐng)域的研究和應(yīng)用熱點(diǎn)。建立在IEEE 802.15.4(LR_WPAN,低速率無(wú)線個(gè)人區(qū)域網(wǎng))上的Zigbee協(xié)議是應(yīng)用于無(wú)線監(jiān)測(cè)與控制的全球性無(wú)線通信標(biāo)準(zhǔn),是無(wú)線傳感器網(wǎng)絡(luò)組網(wǎng)的首選技術(shù)之一。

隨著Zigbee無(wú)線傳感器網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,如何通過(guò)現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)設(shè)施(如Internet、GPRS等)對(duì)其進(jìn)行遠(yuǎn)程管理、控制感測(cè)環(huán)境中的各種傳感裝置,逐漸成為該領(lǐng)域的重要研究課題。圖1給出了Zigbee的無(wú)線傳感器網(wǎng)絡(luò)體系結(jié)構(gòu),如圖示Zigbee網(wǎng)關(guān)在整個(gè)無(wú)線傳感器網(wǎng)絡(luò)體系中起著重要的樞紐作用,同時(shí)也是WSN整體系統(tǒng)的“瓶頸”之一。當(dāng)圖1中的服務(wù)器或用戶部分為其它Zigbee網(wǎng)絡(luò)時(shí),通過(guò)Zigbee網(wǎng)關(guān)和Internet或GPRS做媒介,就使得世界范圍內(nèi)的不同監(jiān)測(cè)區(qū)域都可以信息共享,這大大縮小了物理世界的時(shí)空距離。

圖1 Zigbee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)

本文主要研究的是Internet環(huán)境下基于Zigbee傳感器網(wǎng)絡(luò)的網(wǎng)關(guān)及其

1 系統(tǒng)概述

網(wǎng)關(guān)是建立在傳輸層以上的協(xié)議轉(zhuǎn)換器,通常它連接兩個(gè)或多個(gè)相互獨(dú)立的網(wǎng)絡(luò),每接收一種協(xié)議的數(shù)據(jù)包后,在轉(zhuǎn)發(fā)之前將它轉(zhuǎn)換為另一種協(xié)議的格式??紤]到Zigbee節(jié)點(diǎn)的通信能力有限(數(shù)據(jù)速率僅為250 Kbps),為了減少網(wǎng)關(guān)協(xié)議轉(zhuǎn)換自身的工作量,本網(wǎng)關(guān)選擇了一款集成Ethernet接口的 芯片來(lái)完成硬件系統(tǒng)的搭建。

本網(wǎng)關(guān)采用模塊化設(shè)計(jì)方案,如圖2所示由硬件層、軟件層和應(yīng)用層三大部分組成。其中硬件層描述了網(wǎng)關(guān)的硬件實(shí)現(xiàn),在后文將詳細(xì)介紹;軟件層移植μC/OS-II實(shí)時(shí)操作系統(tǒng)內(nèi)核、Zigbee和嵌入式TCP/IP協(xié)議棧LwIP,實(shí)現(xiàn)了Zigbee和TCP/IP協(xié)議的雙向透明轉(zhuǎn)換,同時(shí)封裝一些關(guān)鍵API函數(shù)供應(yīng)用層程序調(diào)用;應(yīng)用層運(yùn)行的是用戶編寫(xiě)的應(yīng)用程序,用戶可以根據(jù)實(shí)際需要使用下層定義的API自行擴(kuò)充相關(guān)應(yīng)用。

圖2 Zigbee網(wǎng)關(guān)總體結(jié)構(gòu)

2 硬件設(shè)計(jì)

網(wǎng)關(guān)硬件結(jié)構(gòu)如圖3所示,由內(nèi)部集成以太網(wǎng)MAC的處理器STR912FW44X、Zigbee射頻收發(fā)模塊CC2420、大容量DataFlash存儲(chǔ)卡片AT45DCB008、以太網(wǎng)收發(fā)芯片(PHY) RTL8201和帶觸摸功能的LCD顯示模塊LQ084V1DG21等模塊組成。

圖3 Zigbee網(wǎng)關(guān)硬件結(jié)構(gòu)

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

Zigbee射頻收發(fā)芯片CC2420是挪威Chipcon(現(xiàn)為T(mén)I)推出的符合2.4 GHz IEEE 802.15.4和Zigbee 標(biāo)準(zhǔn)的射頻收發(fā)器。CC2420采用O-QPSK調(diào)制方式,工作頻帶范圍為2.400~2. 4835 GHz,接收靈敏度為-94 dBm,抗鄰頻道干擾能力為39 dB。利用此芯片開(kāi)發(fā)的無(wú)線通信設(shè)備支持?jǐn)?shù)據(jù)傳輸率高達(dá)250 Kbps,能夠?qū)崿F(xiàn)點(diǎn)對(duì)多點(diǎn)的快速組網(wǎng);

AT45DCB008是Atmel公司推出的新型DataFlash存儲(chǔ)芯片,在該網(wǎng)關(guān)中用來(lái)保存網(wǎng)絡(luò)故障狀態(tài)下的數(shù)據(jù)信息。AT45DCB008中的數(shù)據(jù)按頁(yè)存放,主存共8192頁(yè),每頁(yè)1024字節(jié),總?cè)萘考s為8M字節(jié),每頁(yè)的擦寫(xiě)次數(shù)保證在100,000次以上;

以太網(wǎng)PHY層芯片采用的是Realtek公司的RTL8201BL,它是一個(gè)單端口的物理層收發(fā)器,實(shí)現(xiàn)了全部的10/100M以太網(wǎng)物理層功能;

顯示部分采用的LQ084V1DG21是SHARP公司的帶觸摸屏8.4英寸TFT數(shù)字液晶顯示屏,分辨率為640480。

3 嵌入式網(wǎng)關(guān)軟件設(shè)計(jì)

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

μC/OS-II是一個(gè)搶占式的實(shí)時(shí)多任務(wù)內(nèi)核操作系統(tǒng),具有開(kāi)放源碼、可固化、可剪裁、高穩(wěn)定性和可靠性等特點(diǎn)。目前國(guó)內(nèi)外對(duì)μC/OS-II的相關(guān)研究已有很多,其在STR912處理器上的移植在此不再贅述。LwIP是瑞士計(jì)算機(jī)科學(xué)院開(kāi)發(fā)的輕量級(jí)(Light Weight)開(kāi)放源碼TCP/IP協(xié)議棧,目前最新版本為1.2.0

LwIP協(xié)議棧把所有與硬件相關(guān)、OS、編譯器相關(guān)的部分獨(dú)立出來(lái),放在/src/arch目錄下,可以是說(shuō)其在設(shè)計(jì)時(shí)就考慮了移植問(wèn)題。LwIP在μC/OS-II上的移植就是修改這個(gè)目錄下的文件,其它的文件一般不做修改。需要修改和自己編程實(shí)現(xiàn)的是以下幾部分:

●與STR912及IAR編譯器相關(guān)的include文件;

●μC/OS-II模擬層相關(guān)代碼編寫(xiě);

●與μC/OS-II相關(guān)的一些結(jié)構(gòu)和函數(shù);

●lib_arch中庫(kù)函數(shù)的實(shí)現(xiàn);

●STR912網(wǎng)絡(luò)驅(qū)動(dòng)程序編寫(xiě)。

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

main(){

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

OSTaskCreate(lwip_init_task,LineNo11,lwip_init_stk[TASK_STK_SIZE-1], 0); //創(chuàng)建LwIP初始化任務(wù)

OSTaskCreate(usr_task,LineNo12,usr_stk[TASK_STK_SIZE-1],1);//創(chuàng)建用戶任務(wù)

OSStart();//啟動(dòng)LwIP }

在main函數(shù)中創(chuàng)建了lwip_init_task來(lái)初始化LwIP任務(wù)(優(yōu)先級(jí)為0)和usr_task用戶任務(wù)(優(yōu)先級(jí)為1)。需要指出的是,在lwip_init_task任務(wù)中除了完成初始化硬件時(shí)鐘和LwIP本身等工作之外,還創(chuàng)建了tcpip_thread(優(yōu)先級(jí)為5)和tcpecho_thread(優(yōu)先級(jí)為6),其中tcpip_thread才是LwIP的主線程,也是應(yīng)該先創(chuàng)建的。

3.2 μC/OS-II下的Zigbee協(xié)議棧的實(shí)現(xiàn)

我們?cè)谠摼W(wǎng)關(guān)平臺(tái)上運(yùn)行自主編寫(xiě)Zigbee協(xié)議棧的子集ez_PAN。ez_PAN目前還很不完善,只實(shí)現(xiàn)了Zigbee的部分關(guān)鍵功能,僅支持星型和簇狀網(wǎng)絡(luò)(Cluster),支持網(wǎng)絡(luò)的動(dòng)態(tài)組網(wǎng)配置和動(dòng)態(tài)綁定等。ez_PAN協(xié)議棧結(jié)構(gòu)如圖4所示:

圖4 ez_PAN協(xié)議棧結(jié)構(gòu)

下面給出ez_PAN 協(xié)議棧上的協(xié)調(diào)器(Coordinator)、路由器(Router)和精簡(jiǎn)節(jié)點(diǎn)(RFD)實(shí)現(xiàn)的關(guān)鍵代碼。Coordinator通過(guò)aplFormNetwork()函數(shù)建立網(wǎng)絡(luò),等待其它節(jié)點(diǎn)(Router和RFD)的加入,主要程序如下:

Main()

{

halInit(); //初始化 HAL 層

hawInit();//硬件初始化

aplInit(); //初始化APL

ENABLE_GLOBAL_INTERRUPT(); //開(kāi)中斷

aplFormNetwork(); //建立網(wǎng)絡(luò)

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

while(1) {apsFSM();} //循環(huán)執(zhí)行協(xié)議棧

}

其中調(diào)用apsBusy()來(lái)判斷當(dāng)前協(xié)議棧是否忙于其它程序調(diào)用,apsFSM()是在APS層上實(shí)現(xiàn)的FSM(有限狀態(tài)機(jī)),被apsBusy周期調(diào)用來(lái)維持ez_PAN的運(yùn)行。在Coordinator建立網(wǎng)絡(luò)完成后,允許Router或RFD節(jié)點(diǎn)動(dòng)態(tài)加入,關(guān)鍵代碼實(shí)現(xiàn)如下:

do {

aplJoinNetwork();//Router或RFD加入網(wǎng)絡(luò)

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

} while (aplGetStatus ()! =LRWPAN_SUCCESS);

3.3 協(xié)議轉(zhuǎn)換軟件設(shè)計(jì)

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

圖5 網(wǎng)關(guān)協(xié)議轉(zhuǎn)換框圖

4 結(jié)論

本文設(shè)計(jì)的網(wǎng)關(guān)已在我們的“基于Zigbee無(wú)線傳感器網(wǎng)絡(luò)的煤礦井下定位跟蹤系統(tǒng)”項(xiàng)目中得以實(shí)用,取得了較好的效果。經(jīng)測(cè)試該網(wǎng)關(guān)具有效率高、響應(yīng)實(shí)時(shí)、可靠性高、功耗低,抗干擾能力強(qiáng)等特點(diǎn),同時(shí)具有很好的通用性。由于當(dāng)前Zigbee技術(shù)還在不斷的更新和完善中,如何跟蹤最新的Zigbee技術(shù)來(lái)提高網(wǎng)關(guān)的性能以及如何提高ez_PAN的多平臺(tái)可移植性,將是我們以后研究的重點(diǎn)。

本文作者創(chuàng)新點(diǎn):采用集成Ethernet (MAC)接口的ARM9芯片STR912作為核心擴(kuò)展設(shè)計(jì)了一個(gè)Zigbee網(wǎng)關(guān),它很好地克服了傳統(tǒng)網(wǎng)關(guān)架構(gòu)下Zigbee傳輸速率的瓶頸,大大降低了協(xié)議轉(zhuǎn)換過(guò)程中的資源和處理時(shí)間消耗。該網(wǎng)關(guān)設(shè)計(jì)思路、技術(shù)實(shí)現(xiàn)新穎,具有較強(qiáng)的實(shí)用性。

參考文獻(xiàn)

[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實(shí)現(xiàn)的Zigbee無(wú)線通信設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007(1-2):P101-102

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉