作者:楊順 章毅 陶康
1 引言
ZigBee 是一種新興短距離、低功耗、低傳輸速率的無線傳感器網(wǎng)絡(luò)通信技術(shù)。以IEEE802.15.4 為標(biāo)準(zhǔn),通過傳感器節(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ù)量不大,傳輸速率相對較低,分布范圍較小的,而且成本和功耗較低的場合。
隨著計(jì)算機(jī)分布式處理、互聯(lián)網(wǎng)等技術(shù)被廣泛應(yīng)用,計(jì)算機(jī)的聯(lián)網(wǎng)需求迅速擴(kuò)大。如何通過現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)設(shè)施對傳感器網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程管理,逐漸成為傳感器網(wǎng)絡(luò)和計(jì)算機(jī)網(wǎng)絡(luò)研究課題。
基于ZigBee 和以太網(wǎng)的無線網(wǎng)關(guān)設(shè)計(jì)就是在無線傳感器網(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)對現(xiàn)場的監(jiān)測和遠(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ò)通過網(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)過以太網(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 公司的無線收發(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],無需再選另外的處理器,使設(shè)計(jì)簡化。
3.2 以太網(wǎng)芯片的選型
選取臺(tái)灣RETLTEK 公司的網(wǎng)卡芯片RTL8019,該芯片ISA 總線高度集成,具有價(jià)格低,接口簡單,不需要轉(zhuǎn)接芯片,兼容性強(qiáng)等特點(diǎn)。
4 總體設(shè)計(jì)
4.1 硬件設(shè)計(jì)
本設(shè)計(jì)采用CC2430 片上8051 內(nèi)核作為整個(gè)系統(tǒng)的MCU,來控制以太網(wǎng)芯片RTL8019,實(shí)現(xiàn)ZigBee和以太網(wǎng)協(xié)議轉(zhuǎn)換和數(shù)據(jù)傳輸。硬件框圖如圖3 所示:
圖3 硬件結(jié)構(gòu)框圖。
由于CC2430 只提供SPI 總線和UART 的接口,硬件接口沒有選用另外的轉(zhuǎn)接芯片而采用軟件模擬的方式來解決地址數(shù)據(jù)的總線接口問題,從而使系統(tǒng)的硬件設(shè)計(jì)簡化。硬件接口采用8 位數(shù)據(jù)總線方式,通過跳線的方式來選擇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)來進(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)換過程:無線網(wǎng)絡(luò)中ZigBee 節(jié)點(diǎn),接收指令將數(shù)據(jù)包打包,簡單判斷后向上發(fā)送給本地ARP,通過ARP 解析出該節(jié)點(diǎn)的網(wǎng)絡(luò)MAC地址,確定要發(fā)送到的以太網(wǎng)地址;然后向上發(fā)送給網(wǎng)關(guān)應(yīng)用程序,經(jīng)分析后發(fā)送到對應(yīng)的以太網(wǎng)UDP 或TCP處理函數(shù)進(jìn)行相應(yīng)處理,向下發(fā)送到以太網(wǎng)端口MAC地址。這樣就完成了數(shù)據(jù)從ZigBee 向以太網(wǎng)的協(xié)議轉(zhuǎn)換過程。
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ù)的長度,定位要發(fā)送數(shù)據(jù)的目的地址,判斷是是否超出最大有效載荷允許的長度,否則數(shù)據(jù)被分成幾個(gè)包發(fā)送;然后調(diào)用sppSend(&txData)函數(shù),該程序用來發(fā)送數(shù)據(jù)指針指向的數(shù)據(jù)包。首先設(shè)置DMA 方式,禁止RF中斷添要發(fā)送的數(shù)據(jù)包的格式(SPP_RX_STRUCT),加載的包長,目的地址,源地址、標(biāo)志位以及有效載荷,打開接受確認(rèn)鏈路,然后發(fā)送數(shù)據(jù)。如果設(shè)置要求確認(rèn),則會(huì)自動(dòng)切換到接受狀態(tài);如果設(shè)定的確認(rèn)幀的最大接收時(shí)間還沒有接受的則會(huì)設(shè)定重發(fā)標(biāo)志;如果重發(fā)還沒有接受則回報(bào)告發(fā)送失敗。
圖 5 數(shù)據(jù)包發(fā)送流程圖。
5 硬件電路
硬件電路主要包括CC2430 和RTL8019 兩部分。
5.1 CC2430 硬件電路
圖 6 CC2430 硬件電路圖。
CC2430 部分是ZigBee 網(wǎng)絡(luò)無線收發(fā)部分,采用32MHZ 晶振為系統(tǒng)提供時(shí)序。電路使用一個(gè)非平衡天線,連接非平衡變壓器可使天性接收性能更好。
非平衡變壓器由電容C12 和電感L2 組成,滿足RF輸入輸出匹配電阻50 歐姆的要求。
CC2430 提供的I/O 口分別作8 位數(shù)據(jù)總線,地址總線和控制總線,具體分配如下:P0 口作8 位數(shù)據(jù)口;P1 口的低5 位作地址口;P2.0,P2.3 分別作讀寫的選通信號(hào);P2.4 口作中斷申請信號(hào)線。
5.2 RTL8019 硬件電路
RTL8019 負(fù)責(zé)將ZigBee 數(shù)據(jù)包轉(zhuǎn)換為TCP/IP數(shù)據(jù)包。電路中采用20M 晶振提供工作時(shí)序。本地DMA 接口把網(wǎng)卡芯片與網(wǎng)線的連接通道,完成控制器與網(wǎng)線的數(shù)據(jù)交換。
工作模式:RTL8019 的第65 腳JP 決定網(wǎng)卡芯片的工作方式,接高電平為跳線工作方式。
I/O 口:RTL8019 的81、82、84、85 引腳決定I/O 口地址,設(shè)計(jì)中全部懸空,選擇的地址為0300H.
圖 7 RTL8019 硬件電路圖。
網(wǎng)絡(luò)接口:由RTL8019 的74、77 引腳決定,使用自動(dòng)檢測,64 引腳為低電平,使用BNC 接口。
中斷:RTL8019 的78、79、80 引腳決定芯片的中斷方式,設(shè)計(jì)中全部懸空,選擇的中斷是INT0.
6 結(jié)語
該網(wǎng)關(guān)功耗低、體積小、設(shè)計(jì)簡單,可滿足小數(shù)據(jù)量的要求。在ZigBee 近距離無線通信和以太網(wǎng)遠(yuǎn)程數(shù)據(jù)傳送之間搭建一座橋梁,為ZigBee 傳感器網(wǎng)絡(luò)提供了以太網(wǎng)網(wǎng)絡(luò)平臺(tái),使ZigBee 在無線傳感器網(wǎng)絡(luò)的應(yīng)用更廣泛。