基于ZigBee和以太網(wǎng)的無(wú)線網(wǎng)關(guān)設(shè)計(jì)
摘 要: 基于ZigBee 和以太網(wǎng)的無(wú)線網(wǎng)關(guān)設(shè)計(jì),實(shí)現(xiàn)了ZigBee 傳感器網(wǎng)絡(luò)和以太網(wǎng)的互聯(lián)互通,進(jìn)而將監(jiān)測(cè)、控制設(shè)備和互聯(lián)網(wǎng)有效的連接起來(lái),為ZigBee 傳感器網(wǎng)絡(luò)提供了更廣闊的遠(yuǎn)程網(wǎng)絡(luò)控制平臺(tái),并完成ZigBee 網(wǎng)絡(luò)與以太網(wǎng)之間數(shù)據(jù)的透明傳輸和協(xié)議轉(zhuǎn)換。論文給出了結(jié)合ZigBee 和以太網(wǎng)的網(wǎng)關(guān)硬件設(shè)計(jì)方案,利用CC2430 和RTL8019 芯片進(jìn)行無(wú)線網(wǎng)關(guān)的硬件電路設(shè)計(jì),同時(shí)提出一種網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)換方法。
本文引用地址:http://www.ex-cimer.com/article/153856.htm1 引言
ZigBee 是一種新興短距離、低功耗、低傳輸速率的無(wú)線傳感器網(wǎng)絡(luò)通信技術(shù)。以IEEE802.15.4 為標(biāo)準(zhǔn),通過(guò)傳感器節(jié)點(diǎn)相互通信,以接力的方式將采集數(shù)據(jù)傳到另一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)或協(xié)調(diào)器節(jié)。該技術(shù)使用免費(fèi)的IMS 的2.4GHz、915M 和868MHz 頻段,傳輸速率為20K 至250Kbps,具有雙向通信功能。它適用于通信數(shù)據(jù)量不大,傳輸速率相對(duì)較低,分布范圍較小的,而且成本和功耗較低的場(chǎng)合。
隨著計(jì)算機(jī)分布式處理、互聯(lián)網(wǎng)等技術(shù)被廣泛應(yīng)用,計(jì)算機(jī)的聯(lián)網(wǎng)需求迅速擴(kuò)大。如何通過(guò)現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)設(shè)施對(duì)傳感器網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程管理,逐漸成為傳感器網(wǎng)絡(luò)和計(jì)算機(jī)網(wǎng)絡(luò)研究課題。
基于ZigBee 和以太網(wǎng)的無(wú)線網(wǎng)關(guān)設(shè)計(jì)就是在無(wú)線傳感器網(wǎng)絡(luò)和互聯(lián)網(wǎng)之間搭建一條數(shù)據(jù)傳輸通道。
本設(shè)計(jì)中數(shù)據(jù)傳輸系統(tǒng)將ZigBee 數(shù)據(jù)包轉(zhuǎn)化為以太網(wǎng)的TCP/IP 協(xié)議的數(shù)據(jù)包,實(shí)現(xiàn)數(shù)據(jù)在兩個(gè)協(xié)議之間的雙向傳輸,搭建聯(lián)系二者之間的一條透明傳輸通道,完成ZigBee 技術(shù)和以太網(wǎng)互通,從而實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)的監(jiān)測(cè)和遠(yuǎn)程控制。
2 系統(tǒng)概述
結(jié)合ZigBee 和以太網(wǎng)的數(shù)據(jù)傳輸網(wǎng)絡(luò)體系統(tǒng)包括ZigBee 網(wǎng)絡(luò)和以太網(wǎng)兩部分。ZigBee 網(wǎng)絡(luò)通過(guò)網(wǎng)絡(luò)節(jié)點(diǎn)將采集數(shù)據(jù)以多跳變的方式傳送到ZigBee 匯接點(diǎn),匯接點(diǎn)將數(shù)據(jù)發(fā)送到網(wǎng)關(guān),網(wǎng)關(guān)進(jìn)行ZigBee數(shù)據(jù)包解析,從數(shù)據(jù)包中提取有效信息數(shù)據(jù),進(jìn)行協(xié)議轉(zhuǎn)換和數(shù)據(jù)包重新封裝打包成TCP/IP 數(shù)據(jù)包,經(jīng)過(guò)以太網(wǎng)傳輸將數(shù)據(jù)送到控制中心,完成整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)傳輸。圖1 給出了結(jié)合ZigBee 網(wǎng)絡(luò)和以太網(wǎng)的數(shù)據(jù)傳輸網(wǎng)絡(luò)體系結(jié)構(gòu)。
圖1 結(jié)合ZigBee 和以太網(wǎng)的數(shù)傳網(wǎng)絡(luò)體系結(jié)構(gòu)
網(wǎng)關(guān)是建立在傳輸層以上的協(xié)議轉(zhuǎn)換器,連接ZigBee 和以太網(wǎng)兩個(gè)相互獨(dú)立的網(wǎng)絡(luò),實(shí)現(xiàn)ZigBee和以太網(wǎng)協(xié)議轉(zhuǎn)換,并將數(shù)據(jù)壓縮打包封裝,在轉(zhuǎn)發(fā)之前經(jīng)MCU(微處理器)將它轉(zhuǎn)化為另一種數(shù)據(jù)包格式,而不需要外加協(xié)議轉(zhuǎn)換器件,完成二者之間的協(xié)議轉(zhuǎn)換和數(shù)據(jù)傳輸。從結(jié)構(gòu)圖可抽象出結(jié)合ZigBee和以太網(wǎng)的網(wǎng)關(guān)結(jié)構(gòu),如圖2 所示。
圖2 結(jié)合ZigBee 和以太網(wǎng)的網(wǎng)關(guān)結(jié)構(gòu)。
3 芯片選型
3.1 ZigBee 芯片的選型
選用成都Chipcon 公司的無(wú)線收發(fā)芯片CC2430 作為本設(shè)計(jì)ZigBee 網(wǎng)絡(luò)的傳輸方案。
CC2430 是一顆真正片上系統(tǒng)芯片,內(nèi)部集成一個(gè)高性能2.4GHz 直接序列擴(kuò)頻 (DSSS)射頻收發(fā)器核心和一顆工業(yè)級(jí)加強(qiáng)型8051 內(nèi)核[3],無(wú)需再選另外的處理器,使設(shè)計(jì)簡(jiǎn)化。
3.2 以太網(wǎng)芯片的選型
選取臺(tái)灣RETLTEK 公司的網(wǎng)卡芯片RTL8019,該芯片ISA 總線高度集成,具有價(jià)格低,接口簡(jiǎn)單,不需要轉(zhuǎn)接芯片,兼容性強(qiáng)等特點(diǎn)。
4 總體設(shè)計(jì)
4.1 硬件設(shè)計(jì)
本設(shè)計(jì)采用CC2430 片上8051 內(nèi)核作為整個(gè)系統(tǒng)的MCU,來(lái)控制以太網(wǎng)芯片RTL8019,實(shí)現(xiàn)ZigBee和以太網(wǎng)協(xié)議轉(zhuǎn)換和數(shù)據(jù)傳輸。硬件框圖如圖3 所示:
圖3 硬件結(jié)構(gòu)框圖。
由于CC2430 只提供SPI 總線和UART 的接口,硬件接口沒(méi)有選用另外的轉(zhuǎn)接芯片而采用軟件模擬的方式來(lái)解決地址數(shù)據(jù)的總線接口問(wèn)題,從而使系統(tǒng)的硬件設(shè)計(jì)簡(jiǎn)化。硬件接口采用8 位數(shù)據(jù)總線方式,通過(guò)跳線的方式來(lái)選擇RTL8019 在ISA 總線上的數(shù)據(jù)讀取方式的,使RTL8019 工作在8 位數(shù)據(jù)總線方式。
4.2 協(xié)議轉(zhuǎn)換設(shè)計(jì)
圖 4 網(wǎng)關(guān)協(xié)議轉(zhuǎn)換框圖。
在TCP/IP 協(xié)議簇中,以太網(wǎng)的數(shù)據(jù)傳輸使用硬件地址(MAC)來(lái)進(jìn)行識(shí)別,其中,ARP(地址解析協(xié)議)完成IP 地址和數(shù)據(jù)鏈路層使用的硬件地址之間的轉(zhuǎn)換 [4],因此為了保證ZigBee 網(wǎng)關(guān)在以太網(wǎng)中的通信,首先要實(shí)現(xiàn)ARP 協(xié)議的功能。ZigBee 網(wǎng)絡(luò)中節(jié)點(diǎn)都擁有自己唯一的MAC 地址,參考TCP/IP 下的實(shí)現(xiàn)機(jī)制,實(shí)現(xiàn)ZigBee 協(xié)議中的適配層和ARP,實(shí)現(xiàn)IP 地址到ZigBee節(jié)點(diǎn)地址的映射。協(xié)議轉(zhuǎn)化框圖如圖4 所示,據(jù)圖描述數(shù)據(jù)從ZigBee 向以太網(wǎng)方向轉(zhuǎn)換過(guò)程:無(wú)線網(wǎng)絡(luò)中ZigBee 節(jié)點(diǎn),接收指令將數(shù)據(jù)包打包,簡(jiǎn)單判斷后向上發(fā)送給本地ARP,通過(guò)ARP 解析出該節(jié)點(diǎn)的網(wǎng)絡(luò)MAC地址,確定要發(fā)送到的以太網(wǎng)地址;然后向上發(fā)送給網(wǎng)關(guān)應(yīng)用程序,經(jīng)分析后發(fā)送到對(duì)應(yīng)的以太網(wǎng)UDP 或TCP處理函數(shù)進(jìn)行相應(yīng)處理,向下發(fā)送到以太網(wǎng)端口MAC地址。這樣就完成了數(shù)據(jù)從ZigBee 向以太網(wǎng)的協(xié)議轉(zhuǎn)換過(guò)程。
4.3 數(shù)據(jù)傳輸
數(shù)據(jù)包發(fā)送流程如圖5 所示:調(diào)用初始化函數(shù),初始化CC2430 和RTL8019,設(shè)置通訊頻率和本地地址,調(diào)用radioSend(sendBuffer,sizeof,remoteAddrDO_NOT_ACK)函數(shù),確定要發(fā)送的數(shù)據(jù)的長(zhǎng)度,定位要發(fā)送數(shù)據(jù)的目的地址,判斷是是否超出最大有效載荷允許的長(zhǎng)度,否則數(shù)據(jù)被分成幾個(gè)包發(fā)送;然后調(diào)用sppSend(txData)函數(shù),該程序用來(lái)發(fā)送數(shù)據(jù)指針指向的數(shù)據(jù)包。首先設(shè)置DMA 方式,禁止RF中斷添要發(fā)送的數(shù)據(jù)包的格式(SPP_RX_STRUCT),加載的包長(zhǎng),目的地址,源地址、標(biāo)志位以及有效載荷,打開(kāi)接受確認(rèn)鏈路,然后發(fā)送數(shù)據(jù)。如果設(shè)置要求確認(rèn),則會(huì)自動(dòng)切換到接受狀態(tài);如果設(shè)定的確認(rèn)幀的最大接收時(shí)間還沒(méi)有接受的則會(huì)設(shè)定重發(fā)標(biāo)志;如果重發(fā)還沒(méi)有接受則回報(bào)告發(fā)送失敗。
評(píng)論