基于ZigBee的嵌入式網(wǎng)關設計方案
引言
物聯(lián)網(wǎng)是一個基于互聯(lián)網(wǎng)、傳統(tǒng)電信網(wǎng)等信息承載體,讓所有能夠被獨立尋址的普通物理對象實現(xiàn)互聯(lián)互通的網(wǎng)絡。它具有普通對象設備化、自治終端互聯(lián)化和普適服務智能化3個重要特征。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,基于ZigBee技術(shù)的無線傳感器網(wǎng)絡己經(jīng)被廣泛的應用到人們的生產(chǎn)及生活當中(如家庭自動化、智慧農(nóng)業(yè)等)。如何將ZigBee網(wǎng)絡接入到互聯(lián)網(wǎng),是人們在應用ZigBee技術(shù)組網(wǎng)時所面臨的一個熱點問題。
然而,ZigBee協(xié)議與互聯(lián)網(wǎng)中所使用的TCP/IP協(xié)議并不兼容,要想把ZigBee網(wǎng)絡接入到基于IP的互聯(lián)網(wǎng),就需要一個設備來完成兩個異構(gòu)網(wǎng)絡間數(shù)據(jù)的轉(zhuǎn)發(fā)。因此,提出了網(wǎng)關的概念,由網(wǎng)關來完成兩個異構(gòu)網(wǎng)絡之間數(shù)據(jù)的轉(zhuǎn)發(fā)。本文使用PXA270嵌入式平臺和CC2430 ZigBee模塊,基于windows CE6.0嵌入式操作系統(tǒng)和Z—Stack協(xié)議棧,設計了一種嵌入式網(wǎng)關的解決方案。網(wǎng)關工作在兩個異構(gòu)的網(wǎng)絡之間,連接著無線傳感網(wǎng)絡和互聯(lián)網(wǎng),其功能包括異構(gòu)網(wǎng)絡之間的數(shù)據(jù)轉(zhuǎn)發(fā)和對ZigBee網(wǎng)絡的管理。
1 系統(tǒng)整體設計
網(wǎng)關整體設計如圖1所示,其總體上包括CC2430ZigBee模塊、PXA270嵌入式平臺、以太網(wǎng)口、電源模塊和其他外設模塊。
圖1:網(wǎng)關整體設計
網(wǎng)關的軟件設計基于Windows CE6.0嵌入式操作系統(tǒng)和Z—Stack v1.4.3協(xié)議棧。Windows CE6.0系統(tǒng)功能豐富、內(nèi)核穩(wěn)定,是高度模塊化的系統(tǒng),具有占先式多任務調(diào)度和強大的網(wǎng)絡通訊能力。系統(tǒng)支持Winsock網(wǎng)絡編程接口,通過C/S Socket通信模型實現(xiàn)網(wǎng)關和互聯(lián)網(wǎng)客戶端的命令和數(shù)據(jù)交互。Z—Stack v1.4.3協(xié)議棧是TI公司開發(fā)的完整支持ZigBee 2006的協(xié)議棧,該協(xié)議棧提供了大量的編程接口函數(shù),方便基于該協(xié)議棧進行開發(fā)設計。
設計中CC2430 ZigBee模塊通過串口與PXA270嵌入式平臺連接。Windows CE和Z—Stack協(xié)議棧都提供了對串口通信的支持,調(diào)用相應的串口API就可以實現(xiàn)對串口的讀寫等操作,這樣也就方便了PXA270嵌入式平臺和 CC2430 ZigBee模塊之間的串口通信程序的設計。
2 各模塊軟件的設計
2.1 ZigBee協(xié)調(diào)器模塊部分
ZigBee網(wǎng)絡由一個協(xié)調(diào)節(jié)點、多個路由節(jié)點和多個終端節(jié)點構(gòu)成,設備類型通常在編譯時通過編譯選項決定(ZDO COORDINATOR and RTR NWK)。本設計中與PXA270嵌入式平臺通過串口連接的CC2430模塊作為整個ZigBee網(wǎng)絡的協(xié)調(diào)節(jié)點,其主要作用是:(1)數(shù)據(jù)收發(fā)。接收 ZigBee網(wǎng)絡上傳的數(shù)據(jù),解析并通過串口轉(zhuǎn)發(fā)至PXA270平臺;轉(zhuǎn)發(fā)PXA270平臺要發(fā)送到zigBee網(wǎng)絡中的數(shù)據(jù)。(2)ZigBee網(wǎng)絡管理。包括網(wǎng)絡信道和網(wǎng)絡ID的選取、網(wǎng)絡的啟動、節(jié)點的加入等。協(xié)調(diào)節(jié)點的程序流程圖如圖2所示。
圖2:協(xié)調(diào)節(jié)點的程序流程圖
協(xié)調(diào)節(jié)點與PXA270平臺通信時,需用到Z—Stack提供的串口應用程序接口函數(shù)。其中,HalUARTInit()用來在設備啟動時初始化串口(如設置波特率為115200),HalUARTOpen()、HalUART Close()用來打開和關閉串口,HalUARTRead()、HalUARTWrite()用來完成對串口的讀寫。
2. 2 PXA270嵌入式平臺部分
PXA270嵌入式平臺作為網(wǎng)關的主要控制模塊其功能包括:與ZigBee協(xié)調(diào)節(jié)點通信,接收協(xié)調(diào)節(jié)點通過串口轉(zhuǎn)發(fā)的數(shù)據(jù)或?qū)⒖刂泼畎l(fā)送到協(xié)調(diào)節(jié)點;通過基于TCP/IP的流式Socket方式與IP網(wǎng)絡通信,如上傳數(shù)據(jù)、接收遠程命令。PXA270平臺的工作流程如圖3所示。
圖3:PXA270平臺的工作流程
本設計中通過兩個線程來分別完成上述兩個方面的工作,分別是串口通信線程和Socket通信線程,兩個線程采用互斥機制實現(xiàn)對公共緩沖區(qū)的互斥訪問。
3 測試結(jié)果
對設計方案進行ZigBee組網(wǎng)測試和系統(tǒng)整體測試。在ZigBee組網(wǎng)測試中,ZigBee協(xié)議棧的參數(shù)配置為默認值(MAX DEPTH=5,MAXROUTERS=6,MAX CHILDREN=20),地址分配方式選擇分布式分配機制。將ZigBee協(xié)調(diào)器通過串口直接與電腦的COM1口相連,由ZigBee協(xié)調(diào)器通過串口向電腦發(fā)送ZigBee網(wǎng)絡中的節(jié)點網(wǎng)絡ID,通過串口調(diào)試助手顯示ZigBee網(wǎng)絡中的節(jié)點信息,其測試結(jié)果如圖4所示。
圖4:ZigBee組網(wǎng)測試結(jié)果
在系統(tǒng)整體測試中,將ZigBee協(xié)調(diào)器通過串口直接與PXA270嵌入式平臺的串口相連,由ZigBee協(xié)調(diào)器通過串口向PXA270嵌入式平臺發(fā)送 ZigBee網(wǎng)絡中的節(jié)點網(wǎng)絡ID,PXA270嵌入式平臺通過C/SSocket通信模型實現(xiàn)網(wǎng)關和互聯(lián)網(wǎng)客戶端的命令和數(shù)據(jù)交互,其測試結(jié)果如圖5所示。
圖5:系統(tǒng)整體測試結(jié)果
4 結(jié)論
針對如何把基于ZigBee無線網(wǎng)絡接入到基于TCP/IP的互聯(lián)網(wǎng)的問題,本文提出一種基于WindowsCE嵌入式操作系統(tǒng)和 ZigBee協(xié)議棧的嵌入式網(wǎng)關的設計方案,對網(wǎng)關的基本功能進行了實現(xiàn)。使ZigBee網(wǎng)絡采集到的數(shù)據(jù)能夠通過網(wǎng)關轉(zhuǎn)發(fā)到基于TCP/IP的網(wǎng)絡,通過網(wǎng)關能夠完成對ZigBee網(wǎng)絡的管理,達到了兩個異構(gòu)網(wǎng)絡互聯(lián)互通的目的,具有切合實際的應用價值。
4月8號更有無線通訊技術(shù)研討會線下指導開發(fā),讓開發(fā)技術(shù)難題無憂~!