摘 要: 針對(duì)ZigBee無(wú)線傳感器網(wǎng)絡(luò)的遠(yuǎn)程監(jiān)控技術(shù)的實(shí)現(xiàn),,設(shè)計(jì)一個(gè)將ZigBee協(xié)議與TCP/IP協(xié)議有機(jī)融合在一起的無(wú)線網(wǎng)關(guān)。系統(tǒng)運(yùn)行時(shí),,互聯(lián)網(wǎng)中的遠(yuǎn)程服務(wù)器可通過(guò)網(wǎng)關(guān)對(duì)ZigBee無(wú)線傳感器網(wǎng)絡(luò)所有節(jié)點(diǎn)進(jìn)行監(jiān)控,。此網(wǎng)關(guān)設(shè)計(jì)方案成本低廉且易于實(shí)現(xiàn),可以為無(wú)線傳感器網(wǎng)絡(luò)在諸多領(lǐng)域的應(yīng)用開(kāi)發(fā)提供設(shè)計(jì)參考,。
關(guān)鍵詞: ZigBee,;無(wú)線傳感器網(wǎng)絡(luò);C8051F120,;GPRS,;TCP/IP協(xié)議;網(wǎng)關(guān)
隨著無(wú)線通信技術(shù),、傳感器技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,,無(wú)線傳感器網(wǎng)絡(luò)作為一種多學(xué)科交叉技術(shù)得到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。ZigBee技術(shù)是一種具有近距離,、低速率,、低功耗、雙向數(shù)據(jù)傳輸,、可以自組網(wǎng)等特點(diǎn)的高可靠個(gè)域網(wǎng)無(wú)線通信標(biāo)準(zhǔn)[1-2],。在工業(yè)控制、醫(yī)療健康、農(nóng)業(yè)節(jié)水灌溉,、樓宇自動(dòng)化,、智能電網(wǎng)等眾多領(lǐng)域,基于ZigBee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)都具有很好的應(yīng)用價(jià)值和發(fā)展前景[2-3],。ZigBee無(wú)線網(wǎng)絡(luò)的網(wǎng)關(guān)設(shè)計(jì)有多種方法,,設(shè)計(jì)方案各有優(yōu)缺點(diǎn),難易程度和成本開(kāi)支存在差異,。本文所介紹的基于ZigBee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)通過(guò)GPRS將互聯(lián)網(wǎng)中的計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)與無(wú)線傳感器網(wǎng)絡(luò)的協(xié)調(diào)器連接在一起,,通過(guò)互聯(lián)網(wǎng)中的計(jì)算機(jī)對(duì)無(wú)線傳感器網(wǎng)絡(luò)進(jìn)行監(jiān)控。且該系統(tǒng)的網(wǎng)關(guān)實(shí)現(xiàn)了ZigBee無(wú)線傳感網(wǎng)絡(luò)和基于TCP/IP協(xié)議的互聯(lián)網(wǎng)的有機(jī)融合,,網(wǎng)關(guān)GPRS從網(wǎng)絡(luò)中分配到一個(gè)IP地址,,使整個(gè)無(wú)線傳感器網(wǎng)絡(luò)成為互聯(lián)網(wǎng)中的一臺(tái)“計(jì)算機(jī)”[4-5]。該網(wǎng)關(guān)設(shè)計(jì)方案實(shí)現(xiàn)較為容易,,且成本低廉,,對(duì)無(wú)線傳感器網(wǎng)絡(luò)在工業(yè)控制、智能電網(wǎng),、環(huán)境監(jiān)測(cè),、智能家居等領(lǐng)域的應(yīng)用開(kāi)發(fā)具有很好的參考價(jià)值。
1 系統(tǒng)的拓?fù)浣Y(jié)構(gòu)
ZigBee是由ZigBee聯(lián)盟在IEEE 802.15.4的物理層(PHY)和媒體介質(zhì)訪問(wèn)層(MAC)基礎(chǔ)上增加網(wǎng)絡(luò)層(NWK)和應(yīng)用層(APL)等所形成的協(xié)議體系結(jié)構(gòu)[2,,6],。在ZigBee網(wǎng)絡(luò)中存在兩種設(shè)備,即全功能設(shè)備(FFD)和精簡(jiǎn)功能設(shè)備(RFD),。網(wǎng)絡(luò)中的節(jié)點(diǎn)可分為網(wǎng)絡(luò)協(xié)調(diào)器,、路由器和終端節(jié)點(diǎn)。網(wǎng)絡(luò)協(xié)調(diào)器和路由器必須是FFD,,而終端節(jié)點(diǎn)則可以是FFD或者RFD,。FFD既可以與FFD通信,也可以與RFD通信,,而RFD與RFD之間不能直接通信,。ZigBee網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)可分為星形網(wǎng)絡(luò)、網(wǎng)狀網(wǎng)絡(luò)和樹(shù)狀網(wǎng)絡(luò),。
本系統(tǒng)主要是由ZigBee無(wú)線傳感器網(wǎng)絡(luò),、網(wǎng)關(guān)和遠(yuǎn)程服務(wù)器組成,系統(tǒng)的整體結(jié)構(gòu)如圖1所示,。系統(tǒng)的ZigBee無(wú)線傳感器網(wǎng)絡(luò)選用樹(shù)狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),。網(wǎng)關(guān)是整個(gè)ZigBee無(wú)線網(wǎng)絡(luò)的控制中心,它由以CC2430為處理器的ZigBee網(wǎng)絡(luò)協(xié)調(diào)器,、8位單片機(jī)C8051F120,、GPRS模塊,、電源模塊及其他外圍電路所構(gòu)成。網(wǎng)絡(luò)服務(wù)器是連接在互聯(lián)網(wǎng)中具有公網(wǎng)IP地址的一臺(tái)個(gè)人計(jì)算機(jī),,在該臺(tái)計(jì)算機(jī)中安裝有基于Visual C++開(kāi)發(fā)環(huán)境所設(shè)計(jì)開(kāi)發(fā)的帶有Access數(shù)據(jù)庫(kù)的控制軟件,。
2 硬件設(shè)計(jì)
此系統(tǒng)無(wú)線網(wǎng)關(guān)的主要功能是將ZigBee無(wú)線網(wǎng)絡(luò)和互聯(lián)網(wǎng)中的計(jì)算機(jī)連接起來(lái),使得通過(guò)互聯(lián)網(wǎng)可以監(jiān)控ZigBee網(wǎng)絡(luò)中的所有節(jié)點(diǎn),,通過(guò)該網(wǎng)關(guān)也可以對(duì)ZigBee網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)行監(jiān)控。該無(wú)線網(wǎng)關(guān)的硬件主要由ZigBee網(wǎng)絡(luò)協(xié)調(diào)器,、GPRS模塊和C8051F120微處理器組成,。網(wǎng)絡(luò)協(xié)調(diào)器的核心芯片選擇TI公司生產(chǎn)的CC2430單片機(jī),GPRS模塊選用的是SIM300模塊,,C8051F120單片機(jī)是美國(guó)Silicon Laboratories公司的產(chǎn)品,。
CC2430是由一顆高性能、低功耗的8051單片機(jī)內(nèi)核和符合IEEE 802.15.4標(biāo)準(zhǔn)的2.4 GHz的無(wú)線電收發(fā)機(jī)組成[7],。CC2430的閃存根據(jù)存儲(chǔ)空間的大小可以分成3種,,分別是32 KB、64 KB和128 KB,,本系統(tǒng)的網(wǎng)絡(luò)協(xié)調(diào)器微處理器選擇的是128 KB的CC2430,。
C8051F120是一款完全繼承的混合信號(hào)片上系統(tǒng)型的8位MCU,具有64個(gè)數(shù)字I/O引腳,,該款芯片共有100個(gè)引腳,,具有豐富的片上資源;具有128 KB的Flash存儲(chǔ)器和8 448 B的片內(nèi)RAM,;兩個(gè)串行通信接口,,分別是UART0和UART1,在此系統(tǒng)網(wǎng)關(guān)設(shè)計(jì)中這兩個(gè)串行端口對(duì)數(shù)據(jù)和控制指令的傳輸起到關(guān)鍵作用,。
SIM300是一款內(nèi)嵌了TCP/IP網(wǎng)絡(luò)通信協(xié)議,、可以通過(guò)標(biāo)準(zhǔn)的AT指令進(jìn)行操作的高性能GPRS模塊。通過(guò)AT指令操作可以輕松使GRPS與互聯(lián)網(wǎng)中的計(jì)算機(jī)建立基于TCP/IP的網(wǎng)絡(luò)連接,,該模塊還具有短信息和語(yǔ)音通話功能,,非常適合應(yīng)用于工業(yè)監(jiān)控和樓宇自動(dòng)化等領(lǐng)域。
該系統(tǒng)網(wǎng)關(guān)的硬件設(shè)計(jì)結(jié)構(gòu)如圖2所示,,C8051F120與SIM300之間的通信基于RS232串口通信協(xié)議,,使用的是UART0端口,TX0和RX0分別是I/O端口的P0.0與P0.1,;與網(wǎng)絡(luò)協(xié)調(diào)器之間的通信同樣基于RS232串口通信協(xié)議,,使用的是UART1端口,TX1和RX1分別是I/O端口的P0.2與P0.3,。網(wǎng)絡(luò)協(xié)調(diào)器端的串口通信選擇的是CC2430的UART0,,TX和RX分別是I/O端口的P0.3與P0.2。在串口通信中,TX應(yīng)該與接收方的RX連接,,RX應(yīng)該與發(fā)送方的TX連接,,所以C8051F120與GPRS的串口連接要交叉連接,也就是C8051F120的TX0連接GPRS的RX,,RX0連接GPRS的TX,。同理,C8051F120與網(wǎng)絡(luò)協(xié)調(diào)器的連接也要交叉連接,。在該網(wǎng)關(guān)的設(shè)計(jì)中,,還要考慮到一個(gè)電源參考電壓的問(wèn)題,為了使它們有一個(gè)共同的地,,網(wǎng)關(guān)的這三部分的地要連接在一起,。
通過(guò)中間的C8051F120對(duì)網(wǎng)絡(luò)協(xié)調(diào)器和GPRS之間的雙向數(shù)據(jù)進(jìn)行處理,可以使協(xié)調(diào)器不會(huì)因?yàn)镚PRS的握手協(xié)議的存在而提高串口通信的中斷頻率,,把主要的工作放在ZigBee無(wú)線網(wǎng)絡(luò)這一端,,從而提高網(wǎng)絡(luò)協(xié)調(diào)器的運(yùn)行穩(wěn)定性并且使ZigBee無(wú)線網(wǎng)絡(luò)具有良好的可擴(kuò)展性。
3 軟件編程
網(wǎng)關(guān)的軟件設(shè)計(jì)是在網(wǎng)關(guān)的硬件設(shè)計(jì)基礎(chǔ)上展開(kāi)的,。根據(jù)前面的硬件設(shè)計(jì),,程序設(shè)計(jì)可以分為兩個(gè)部分:網(wǎng)絡(luò)協(xié)調(diào)器的程序設(shè)計(jì)和基于C8051F120的程序設(shè)計(jì)。GPRS模塊的操作屬于C8051F120的程序處理范疇,。
3.1 網(wǎng)絡(luò)協(xié)調(diào)器的程序設(shè)計(jì)
網(wǎng)絡(luò)協(xié)調(diào)器是整個(gè)ZigBee網(wǎng)絡(luò)的控制中心,,在ZigBee網(wǎng)絡(luò)中處于核心地位。整個(gè)系統(tǒng)中,,網(wǎng)絡(luò)協(xié)調(diào)器的作用主要分為兩個(gè)方面:(1)對(duì)ZigBee網(wǎng)絡(luò)進(jìn)行組網(wǎng),;(2)連接ZigBee網(wǎng)絡(luò)與C851F120,使二者之間互相通信,。具體而言,,網(wǎng)絡(luò)協(xié)調(diào)器對(duì)ZigBee網(wǎng)絡(luò)進(jìn)行組網(wǎng),為網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)分別分配一個(gè)16位的網(wǎng)絡(luò)地址,,對(duì)網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)行控制和采集相關(guān)節(jié)點(diǎn)信息,。在ZigBee網(wǎng)絡(luò)與C8051F120之間起到“橋梁”的作用,即接收并處理來(lái)自C8051F120的控制指令,,采集來(lái)自ZigBee網(wǎng)絡(luò)的數(shù)據(jù)并打包傳輸給C8051F120,,由C8051F120做進(jìn)一步處理。
網(wǎng)絡(luò)協(xié)調(diào)器與C8051F120之間的通信是基于RS232串口通信協(xié)議的串口通信,。ZigBee協(xié)議棧所定義的串口通信波特率有38 400 bit/s和115 200 bit/s,,此處選擇115 200 bit/s作為協(xié)調(diào)器與C8051F120通信的波特率。系統(tǒng)開(kāi)發(fā)過(guò)程中,,選用Z-Stack的例程SimpleApp并以此為基礎(chǔ)設(shè)計(jì)協(xié)調(diào)器和ZigBee節(jié)點(diǎn)的程序,,此舉可節(jié)省較多開(kāi)發(fā)時(shí)間,。協(xié)調(diào)器程序設(shè)計(jì)時(shí),與串口通信相關(guān)的一些參數(shù)應(yīng)在sapi.h文件中定義,,而初始化部分應(yīng)放在sapi.c中的初始化函數(shù)SAPI_Init(byte task_id)中,,當(dāng)協(xié)調(diào)器開(kāi)始工作時(shí)即可初始化CC2430的串口通信。ZigBee網(wǎng)絡(luò)協(xié)調(diào)器開(kāi)始工作時(shí)是從協(xié)議棧的ZMain.c文件中的主函數(shù)main(void)開(kāi)始運(yùn)行的,,在此過(guò)程中需調(diào)用osal_int_disable(INTS_ALL)關(guān)中斷,,再調(diào)用協(xié)議棧各層的初始化函數(shù)及CC2430片上資源的初始化函數(shù)進(jìn)行初始化,初始化之后調(diào)用osal_int_enable(INTS_ALL)允許中斷,。最后程序通過(guò)osal_start_
system( )進(jìn)入?yún)f(xié)議棧的任務(wù)操作系統(tǒng),。該函數(shù)是協(xié)議棧操作系統(tǒng)的主循環(huán)函數(shù),進(jìn)入該函數(shù)后將不再返回,。在操作系統(tǒng)的運(yùn)行過(guò)程中如果有事件產(chǎn)生將調(diào)用函數(shù)task_event_processor( )對(duì)事件進(jìn)行處理,。
系統(tǒng)開(kāi)發(fā)過(guò)程中,,網(wǎng)絡(luò)協(xié)調(diào)器和終端節(jié)點(diǎn)的程序是在同一個(gè)工程中進(jìn)行開(kāi)發(fā)的,,即Z-Stack中的sapi.c文件和sapi.h文件是由網(wǎng)絡(luò)協(xié)調(diào)器程序和終端節(jié)點(diǎn)程序共同調(diào)用的,故在這兩個(gè)文件中單獨(dú)涉及到網(wǎng)絡(luò)協(xié)調(diào)器和單獨(dú)涉及到終端節(jié)點(diǎn)的程序部分應(yīng)分別存入各自的條件編譯程序塊中,。網(wǎng)絡(luò)協(xié)調(diào)器的程序運(yùn)行流程圖如圖3所示,。
3.2 基于C8051F120的程序設(shè)計(jì)
在系統(tǒng)設(shè)計(jì)中,C8051F120是一個(gè)很重要的中間件,,它將ZigBee網(wǎng)絡(luò)與互聯(lián)網(wǎng)中的遠(yuǎn)程服務(wù)器連接起來(lái),,使得管理員可以通過(guò)服務(wù)器的控制軟件或其他客戶端控制軟件對(duì)ZigBee網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)監(jiān)控。C8051F120通過(guò)UART0與SIM300連接在一起,,在啟動(dòng)時(shí)首先要做的工作就是初始化SIM300模塊并與互聯(lián)網(wǎng)中的遠(yuǎn)程服務(wù)器建立連接,,這樣管理員才可以通過(guò)遠(yuǎn)程服務(wù)器上的控制軟件對(duì)ZigBee無(wú)線網(wǎng)絡(luò)進(jìn)行監(jiān)控。這一步非常重要,,如果不與服務(wù)器建立連接,,則管理員就無(wú)法通過(guò)服務(wù)器上的控制軟件對(duì)ZigBee無(wú)線傳感器網(wǎng)絡(luò)進(jìn)行監(jiān)控。根據(jù)系統(tǒng)要求,,C8051F120對(duì)GPRS模塊的初始化可以分為表1所示的幾個(gè)部分,。
C8051F120的程序設(shè)計(jì)用到兩個(gè)串口通信,串口通信的數(shù)據(jù)收發(fā)均通過(guò)中斷服務(wù)程序?qū)崿F(xiàn)[8],。C8051F120總共有20個(gè)中斷源,。在中斷系統(tǒng)中,UART0的中斷優(yōu)先級(jí)是4,,UART1的中斷優(yōu)先級(jí)是20,,即UART0的優(yōu)先級(jí)比UART1高。系統(tǒng)選用外部22.118 4 MHz晶振經(jīng)鎖相環(huán)二倍頻后,,產(chǎn)生50 MHz時(shí)鐘源,。Timer2通過(guò)16位自動(dòng)重裝載模式設(shè)置115 200 bit/s的波特率作為UART0波特率,。而Timer1通過(guò)8位自動(dòng)重裝載模式設(shè)置115 200 bit/s的波特率作為UART1波特率,這個(gè)波特率與協(xié)調(diào)器的波特率相匹配,。該部分的設(shè)置均采用Silicon Laboratories IDE集成開(kāi)發(fā)環(huán)境來(lái)編程實(shí)現(xiàn),。C8051F120的程序運(yùn)行流程圖如圖4所示。
由于ZigBee網(wǎng)絡(luò)與遠(yuǎn)程服務(wù)器之間的通信屬于通過(guò)GPRS進(jìn)行的基于TCP/IP的網(wǎng)絡(luò)通信,,受移動(dòng)網(wǎng)絡(luò)的影響,,因此系統(tǒng)通信容易產(chǎn)生時(shí)滯,多次發(fā)送的數(shù)據(jù)集中在同一時(shí)間接收,,易產(chǎn)生誤控制及數(shù)據(jù)的誤處理,。為解決該問(wèn)題,需按照以下基本格式定義無(wú)線通信的握手協(xié)議:從服務(wù)器端發(fā)送來(lái)的控制指令的格式為0xAA+節(jié)點(diǎn)序號(hào)+節(jié)點(diǎn)網(wǎng)絡(luò)地址+指令+0xAA,,總字節(jié)數(shù)是6 B,。如果C8051F120從GPRS接收到的數(shù)據(jù)不符合這種數(shù)據(jù)格式,則對(duì)這樣的數(shù)據(jù)不做處理,,直接從緩存中刪除,。C8051F120從網(wǎng)絡(luò)協(xié)調(diào)器接收到的數(shù)據(jù)幀也是由固定的幀頭和幀尾以及中間的相關(guān)數(shù)據(jù)組成,數(shù)據(jù)幀的格式是0xFF+(節(jié)點(diǎn)序號(hào)+節(jié)點(diǎn)網(wǎng)絡(luò)地址+節(jié)點(diǎn)狀態(tài))+…+(節(jié)點(diǎn)序號(hào)+節(jié)點(diǎn)網(wǎng)絡(luò)地址+節(jié)點(diǎn)狀態(tài))+0xFF,。C8051F120接收到網(wǎng)絡(luò)協(xié)調(diào)器發(fā)送過(guò)來(lái)的數(shù)據(jù)時(shí),,則轉(zhuǎn)到UART1串口通信的中斷服務(wù)子程序進(jìn)行處理,要處理的內(nèi)容包括判斷數(shù)據(jù)幀的幀頭,、幀尾,、總字節(jié)數(shù)等。如果中間的數(shù)據(jù)判斷有哪個(gè)與程序設(shè)計(jì)過(guò)程中定義的不一致,,則退出中斷并清空接收緩存,,否則按流程圖的順序執(zhí)行程序。在程序的運(yùn)行過(guò)程中,,C8051F120每完成一個(gè)任務(wù)都會(huì)用一個(gè)相應(yīng)的全局變量來(lái)標(biāo)志,,以便作為下一個(gè)環(huán)節(jié)程序處理依據(jù)。例如變量InitOrRun,,當(dāng)InitOrRun=0時(shí),,表示此時(shí)程序處于GPRS的初始化階段;InitOrRun=1時(shí),,表示此時(shí)程序處于系統(tǒng)正常運(yùn)行階段,。
ZigBee技術(shù)在各種監(jiān)測(cè)與控制領(lǐng)域的應(yīng)用將會(huì)越來(lái)越廣泛,根據(jù)系統(tǒng)的要求以及特定通信協(xié)議設(shè)計(jì)一個(gè)網(wǎng)關(guān),,把不同的通信協(xié)議組合或轉(zhuǎn)換,,是一項(xiàng)非常重要的工作,對(duì)系統(tǒng)的開(kāi)發(fā)實(shí)現(xiàn)起到關(guān)鍵作用,。本系統(tǒng)的網(wǎng)關(guān)不僅可以將基于TCP/IP的網(wǎng)絡(luò)通信的數(shù)據(jù)轉(zhuǎn)換為監(jiān)控ZigBee無(wú)線網(wǎng)絡(luò)的控制指令,,也可以將ZigBee無(wú)線網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)行轉(zhuǎn)換后通過(guò)互聯(lián)網(wǎng)傳輸給遠(yuǎn)程服務(wù)器和客戶端計(jì)算機(jī),。此網(wǎng)關(guān)設(shè)計(jì)方案中單片機(jī)C8051F120的程序稍作修改即可應(yīng)用于類(lèi)似的系統(tǒng)中,例如工業(yè)控制,、智能家居,、農(nóng)業(yè)節(jié)水灌溉、環(huán)境監(jiān)測(cè),、煤礦安全等,。
參考文獻(xiàn)
[1] ZigBee Alliance.ZigBee Specification[S].2006.
[2] 金純,羅祖秋,,羅鳳,,等.ZigBee技術(shù)基礎(chǔ)及案例分析[M].北京:國(guó)防工業(yè)出版社,2008.
[3] 崔遜學(xué),,趙湛,,王成.無(wú)線傳感器網(wǎng)絡(luò)的領(lǐng)域應(yīng)用與設(shè)計(jì)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2009.
[4] 劉元安,,葉靚,,邵謙明,等.無(wú)線傳感器網(wǎng)絡(luò)與TCP/IP網(wǎng)絡(luò)的融合[J].北京郵電大學(xué)學(xué)報(bào),,2006,,29(6):1-4.
[5] 龐訓(xùn)磊,,殷保群,,奚宏生.一種使用TCP/IP協(xié)議實(shí)現(xiàn)無(wú)線傳感器網(wǎng)絡(luò)互連的新型設(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2007,,20(6):1386-1390.
[6] REESE R.A ZigBee TM-subset/IEEE 802.15.4TM multiplatform protocol stack[C].In Electrical/Computer Engr MSU.2006.
[7] Chipcon.CC2430 preliminary data sheet(Rev.1.03)SWRS036A[S].2005.
[8] 陳連坤.單片機(jī)原理及及接口技術(shù)(C語(yǔ)言版)[M].北京:清華大學(xué)出版社,,北京交通大學(xué)出版社,2010.