孫天嬌 周霞 王英翔
【摘要】 通過(guò)比較幾種常用的無(wú)線傳輸技術(shù),本文設(shè)計(jì)并實(shí)現(xiàn)了一種使用ZigBee技術(shù)無(wú)線通信,采用單片機(jī)進(jìn)行數(shù)據(jù)采集處理的遠(yuǎn)程監(jiān)測(cè)系統(tǒng),制定了環(huán)境數(shù)據(jù)識(shí)別、獲取的系統(tǒng)方案。系統(tǒng)由現(xiàn)場(chǎng)數(shù)據(jù)采集終端和遠(yuǎn)程監(jiān)測(cè)中心兩級(jí)網(wǎng)絡(luò)構(gòu)成,文章介紹了其結(jié)構(gòu)、功能及實(shí)現(xiàn)方法,對(duì)數(shù)據(jù)采集終端進(jìn)行了軟硬件設(shè)計(jì),實(shí)現(xiàn)了環(huán)境數(shù)據(jù)的采集處理,并采用Visual C++面向?qū)ο蟮木幊趟枷?,完成了系統(tǒng)的上位機(jī)軟件設(shè)計(jì)。
【關(guān)鍵詞】 ZigBee 單片機(jī) 無(wú)線監(jiān)測(cè)
日常生活中,諸多環(huán)境對(duì)環(huán)境參數(shù)有嚴(yán)格的要求,如溫室花房、儲(chǔ)物倉(cāng)庫(kù)、儀器設(shè)備檢測(cè)室等。這類(lèi)環(huán)境監(jiān)測(cè)系統(tǒng)一般需要設(shè)有一個(gè)或者多個(gè)控制中心,配備大量的現(xiàn)場(chǎng)數(shù)據(jù)采集點(diǎn),分散的采集點(diǎn)需要通過(guò)一定的通信手段來(lái)實(shí)現(xiàn)與中心控制單元間的數(shù)據(jù)交互,進(jìn)而實(shí)現(xiàn)對(duì)環(huán)境參數(shù)的監(jiān)測(cè)。本文基于ZigBee技術(shù)實(shí)現(xiàn)了一種環(huán)境參數(shù)無(wú)線監(jiān)測(cè)系統(tǒng),可以實(shí)現(xiàn)對(duì)溫濕度、光照強(qiáng)度等數(shù)據(jù)的無(wú)線采集及監(jiān)測(cè)。
一、ZigBee與其他短距離通信技術(shù)的對(duì)比
1.1 藍(lán)牙(BlueTooth)
藍(lán)牙的工作頻率為2.4GHz,有效范圍約10m。它對(duì)語(yǔ)音和特定網(wǎng)絡(luò)提供支持,需要協(xié)議棧提供250kB系統(tǒng)開(kāi)銷(xiāo),增加了系統(tǒng)成本和集成復(fù)雜性。藍(lán)牙的局限性在于只能配置7個(gè)節(jié)點(diǎn),制約了其在大型傳感器網(wǎng)絡(luò)開(kāi)發(fā)中的應(yīng)用。
1.2 WiFi(Wireless Fidelity,IEEE 802.11)
WiFi的工作頻率為2.4GHz。IEEE802.11的常用版本包括a(5.8GHz,帶寬為54Mbps)、b(2.4GHz,帶寬為11Mbps)、g(2.4GHz,帶寬為22Mbps)。它的局限性在于功耗較大,不間斷使用需要配備充電設(shè)備。
1.3 IrDA(Infrared Data Association)
IrDA利用紅外線進(jìn)行點(diǎn)對(duì)點(diǎn)通信,其標(biāo)準(zhǔn)的無(wú)線傳輸速率已逐步發(fā)展到4Mbps、16Mbps。支持它的軟硬件技術(shù)目前都很成熟,在小型移動(dòng)設(shè)備上被廣泛使用。它具有體積小、功耗低、連接方便、簡(jiǎn)單易用、成本低廉的特點(diǎn)。IrDA的局限性在于只能連接兩臺(tái)設(shè)備,且存在有視距角度等問(wèn)題。
1.4 ZigBee
ZigBee(IEEE802.15.4)使用2.4GHz波段,采用跳頻技術(shù)和擴(kuò)頻技術(shù)。一個(gè)ZigBee星型網(wǎng)絡(luò)中最多可以有254個(gè)子節(jié)點(diǎn)。節(jié)點(diǎn)可以包括儀器和家庭自動(dòng)化應(yīng)用設(shè)備,使得其在工業(yè)監(jiān)控、傳感器網(wǎng)絡(luò)、家庭監(jiān)控、安全系統(tǒng)等領(lǐng)域有很大的發(fā)展空間。同時(shí),它的技術(shù)功耗低,被業(yè)界認(rèn)為是最適合應(yīng)用在工控場(chǎng)合的無(wú)線方式。與以上幾種短距離無(wú)線通信技術(shù)相比,ZigBee具有如下特點(diǎn):(1)功耗更低;(2)成本低;(3)網(wǎng)絡(luò)容量大;(4)工作頻段靈活;(5)可靠。
二、系統(tǒng)總體設(shè)計(jì)
系統(tǒng)通過(guò)各節(jié)點(diǎn)處的溫度傳感器、濕度傳感器、光照強(qiáng)度傳感器等采集環(huán)境數(shù)據(jù),并轉(zhuǎn)換成相應(yīng)范圍的模擬電壓信號(hào),然后利用單片機(jī)的模數(shù)轉(zhuǎn)換功能將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)進(jìn)行相應(yīng)處理,最后通過(guò)ZigBee通信模塊將數(shù)據(jù)由天線發(fā)出,由遠(yuǎn)程數(shù)據(jù)中心的ZigBee通信模塊接收,計(jì)算機(jī)完成監(jiān)測(cè)并存儲(chǔ)數(shù)據(jù)至PC機(jī)內(nèi)。
系統(tǒng)的整體框圖如圖1所示,本監(jiān)測(cè)系統(tǒng)由三部分構(gòu)成。
遠(yuǎn)程數(shù)據(jù)中心:由計(jì)算機(jī)和相關(guān)的ZigBee模塊組成,ZigBee模塊通過(guò)串口與計(jì)算機(jī)相連。ZigBee模塊作為協(xié)調(diào)器節(jié)點(diǎn),負(fù)責(zé)網(wǎng)絡(luò)的啟動(dòng)和給其它終端節(jié)點(diǎn)分配網(wǎng)絡(luò)地址,并作為無(wú)線接收端讀取傳感器的測(cè)量值。
前端數(shù)據(jù)采集:每個(gè)終端采集點(diǎn)由傳感器、單片機(jī)、ZigBee等模塊構(gòu)成,負(fù)責(zé)采集并上傳數(shù)據(jù)。根據(jù)用戶的需要,可靈活配置數(shù)據(jù)采集點(diǎn)的個(gè)數(shù)。
網(wǎng)絡(luò)中繼:根據(jù)實(shí)際環(huán)境的需要,設(shè)置相應(yīng)個(gè)數(shù)的路由節(jié)點(diǎn),實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā),完成遠(yuǎn)距離通信。
基于ZigBee的監(jiān)測(cè)系統(tǒng)支持三種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu):星狀拓?fù)浣Y(jié)構(gòu)(一個(gè)節(jié)點(diǎn)作為網(wǎng)絡(luò)協(xié)調(diào)器,其他所有節(jié)點(diǎn)之間與協(xié)調(diào)器相連)、樹(shù)狀拓?fù)浣Y(jié)構(gòu)(一些節(jié)點(diǎn)一次經(jīng)過(guò)另外一些節(jié)點(diǎn)才能到達(dá)網(wǎng)絡(luò)協(xié)調(diào)器)和網(wǎng)狀拓?fù)浣Y(jié)構(gòu)(無(wú)須主協(xié)調(diào)點(diǎn),各個(gè)節(jié)點(diǎn)之間分享路由職責(zé),三種拓?fù)浣Y(jié)構(gòu)如圖2所示。一個(gè)星型結(jié)構(gòu)的Zigbee網(wǎng)絡(luò)最多可以容納254個(gè)從設(shè)備和一個(gè)主設(shè)備,一個(gè)區(qū)域內(nèi)可以同時(shí)存在最多100個(gè)ZigBee網(wǎng)絡(luò),網(wǎng)絡(luò)組成靈活。
普通的溫室、倉(cāng)庫(kù)、實(shí)驗(yàn)室等環(huán)境結(jié)構(gòu)較為簡(jiǎn)單,模塊的數(shù)據(jù)傳輸能力強(qiáng)、距離近、無(wú)障礙物,可使用星狀結(jié)構(gòu),如圖2(a)所示;若采集節(jié)點(diǎn)距離協(xié)調(diào)器較遠(yuǎn),其數(shù)據(jù)傳輸可通過(guò)添加中繼路由節(jié)點(diǎn)實(shí)現(xiàn),即使用樹(shù)狀結(jié)構(gòu),如圖2(b)所示;若采集節(jié)點(diǎn)多且分布廣、模塊的傳輸能力不足、現(xiàn)場(chǎng)障礙物過(guò)多,使用網(wǎng)狀結(jié)構(gòu)較為可靠,如圖2(c)所示。
三、前端數(shù)據(jù)采集節(jié)點(diǎn)的硬件設(shè)計(jì)及實(shí)現(xiàn)
數(shù)據(jù)采集節(jié)點(diǎn)由傳感器模塊、單片機(jī)處理模塊、ZigBee通信模塊、雙公頭適配器等硬件構(gòu)成。傳感器模塊采用LT系統(tǒng)傳感器,可測(cè)量溫度、濕度、光照強(qiáng)度等;單片機(jī)處理模塊使用STC系列單片機(jī);ZigBee通信模塊使用XBee/XBee Pro系列套件;由于單片機(jī)與XBee/XBee Pro模塊的I/O口均為母口,使用雙公頭適配器連接二者實(shí)現(xiàn)數(shù)據(jù)傳輸。
以單個(gè)節(jié)點(diǎn)為例,節(jié)點(diǎn)的硬件連接示意圖及數(shù)據(jù)流圖如上圖3所示,圖中LT傳感器的三個(gè)輸出引腳與單片機(jī)的ADC0、ADC1、ADC2輸入相連接,分別對(duì)應(yīng)溫度、濕度、光照強(qiáng)度,傳感器輸出0~5V標(biāo)準(zhǔn)電壓,通過(guò)單片機(jī)進(jìn)行數(shù)據(jù)的A/D轉(zhuǎn)換,輸出電壓值轉(zhuǎn)化為數(shù)字量。單片機(jī)的輸出通過(guò)串口連接到ZigBee終端節(jié)點(diǎn)的UART接口上,將轉(zhuǎn)換完成的數(shù)字量通過(guò)天線發(fā)出,通過(guò)ZigBee無(wú)線網(wǎng)絡(luò)送至與上位機(jī)PC相連接的協(xié)調(diào)器模塊,并進(jìn)行數(shù)據(jù)處理。系統(tǒng)中采用的主要硬件模塊如下:
3.1 ZigBee無(wú)線通信模塊
XBee/XBee Pro為2.4GHz無(wú)線通信接口,支持ZigBee協(xié)議棧,模塊功耗僅為3.1mW(+5dBm)。如下圖4所示是XBee Pro模塊的引腳排列圖,該模塊有20個(gè)引腳。RS232接口電路板的引腳可連接到VCC、GND、DOUT和DIN引腳。其中DIN是信號(hào)輸入引腳,可作為UART數(shù)據(jù)輸入,通常與處理器的UART接收端TX相連;DOUT為信號(hào)輸出引腳,可作為UART數(shù)據(jù)輸出,通常與處理器的UART接收端RX相連。
圖5 XBee/XBee Pro模塊的UART內(nèi)部數(shù)據(jù)控制流程
當(dāng)串行數(shù)據(jù)通過(guò)DIN引腳進(jìn)入XBee/XBee Pro模塊后,數(shù)據(jù)會(huì)存儲(chǔ)在DI緩沖器中,直到被發(fā)送器通過(guò)天線發(fā)送出去;當(dāng)RF數(shù)據(jù)由天線接收后,接收數(shù)據(jù)進(jìn)入DO緩沖器,并通過(guò)串口發(fā)送到主機(jī),直到被處理。在一定條件下,模塊可能無(wú)法立即處理在串位接收緩沖中的數(shù)據(jù)。如果大量的串行數(shù)據(jù)發(fā)送到模塊,可能需要使用CTS流控以避免串行接收緩沖溢出。
3.2 傳感器
本系統(tǒng)所使用的LT系統(tǒng)傳感器,是專門(mén)針對(duì)環(huán)境數(shù)據(jù)測(cè)量的傳感器。傳感器輸出3路0~5V的模擬電壓信號(hào),信號(hào)分別與溫度、濕度和光照強(qiáng)度成線性對(duì)應(yīng)關(guān)系。
3.3 單片機(jī)
采用STC12C5A60S2系列單片機(jī)實(shí)現(xiàn)對(duì)傳感器測(cè)量值的轉(zhuǎn)換處理,該單片機(jī)指令代碼完全兼容傳統(tǒng)8051,內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換。因而每個(gè)數(shù)據(jù)采集節(jié)點(diǎn)均可接入8路測(cè)量值,用戶可根據(jù)需要進(jìn)行傳感器的增減。
3.4 雙公頭適配器
由于單片機(jī)模塊和XBee/XBee Pro模塊上的RS232接口均為母口,主要接口Pin2(RXD)、Pin3(TXD)、Pin5(CND)。其間用一塊兩端都是公口(公對(duì)公)的適配器相連,示意圖及內(nèi)部接線圖如下圖6所示:
圖6 雙公口適配器及其內(nèi)部引腳圖
如上圖6所示,將P1端與P2段的發(fā)送與接收引腳交叉相連;P1端的5腳(地)與P2端的5腳(地)直連。
四、系統(tǒng)的網(wǎng)絡(luò)配置及軟件設(shè)計(jì)
4.1 ZigBee模塊的配置
ZigBee網(wǎng)絡(luò)設(shè)備分為三種:協(xié)調(diào)器,主要負(fù)責(zé)網(wǎng)絡(luò)的啟動(dòng)和給其它終端節(jié)點(diǎn)分配網(wǎng)絡(luò)地址;中繼路由器,實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā);終端節(jié)點(diǎn),數(shù)據(jù)的采集及上傳。
首先使用與XBee/XBee Pro模塊配套的X-CTU軟件對(duì)模塊進(jìn)行相應(yīng)節(jié)點(diǎn)的參數(shù)設(shè)置:協(xié)調(diào)器,配置為ZIGBEE COORDINATOR API/AT模式;路由器配置為ZIGBEE ROUTER API/AT模式,終端節(jié)點(diǎn)配置為ZIGBEE END DEVICE API/AT模式。AT模式即透?jìng)髂J剑K的串口一直工作在傳輸模式下,將接收數(shù)據(jù)連續(xù)發(fā)送至目標(biāo)地址。API模式,是以包含地址和數(shù)據(jù)的命令幀的形式發(fā)送。AT方式易于查詢,可以在X-CTU軟件中方便的查詢到所有節(jié)點(diǎn),方便管理,而API方式有返回碼,有利于數(shù)據(jù)的可靠性傳輸。無(wú)論是AT方式還是API方式都可以在所構(gòu)建的同一個(gè)網(wǎng)絡(luò)中進(jìn)行通信。
再將配置好的協(xié)調(diào)器和終端節(jié)點(diǎn)分別與PC機(jī)和數(shù)據(jù)采集模塊通過(guò)串口相連。各模塊工作時(shí),須使用統(tǒng)一的串口參數(shù),一般設(shè)置為XBee/XBee Pro模塊默認(rèn)的串口參數(shù)9600-8-n-1。以終端節(jié)點(diǎn)為例,設(shè)置界面如圖7所示,終端節(jié)點(diǎn)及路由節(jié)點(diǎn)數(shù)據(jù)傳輸?shù)哪繕?biāo)地址設(shè)置為協(xié)調(diào)器節(jié)點(diǎn)的源地址。(圖7)
4.2 前端數(shù)據(jù)采集的程序
前端數(shù)據(jù)采集的程序用KeilC51編寫(xiě)主要用于采集現(xiàn)場(chǎng)環(huán)境數(shù)據(jù),并實(shí)現(xiàn)數(shù)據(jù)的定時(shí)無(wú)線發(fā)送。軟件采用模塊化設(shè)計(jì),包括串口初始化程序、定時(shí)器初始化程序等,其流程如圖8所示。首先進(jìn)行單片機(jī)的初始化,然后進(jìn)行定時(shí)器的初始化,定時(shí)時(shí)間由用戶選擇性設(shè)置,定時(shí)中斷發(fā)生時(shí)由單片機(jī)通過(guò)串口向通信模塊發(fā)送傳送數(shù)據(jù)請(qǐng)求,發(fā)送完畢,等待收到數(shù)據(jù),收到后則送往PC顯示,以實(shí)現(xiàn)實(shí)時(shí)更新。模塊軟件設(shè)計(jì)流程見(jiàn)圖8。
4.3 遠(yuǎn)程數(shù)據(jù)中心上位機(jī)程序
遠(yuǎn)程數(shù)據(jù)中心上位機(jī)上的接收器的程序用面向?qū)ο蟮目梢暬Z(yǔ)言VC++編寫(xiě),主要用于接收現(xiàn)場(chǎng)終端采集節(jié)點(diǎn)發(fā)送過(guò)來(lái)的無(wú)線數(shù)據(jù),并判斷數(shù)據(jù)的準(zhǔn)確性,最后將接收到的數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)中。其接收程序的流程圖如圖9所示。
實(shí)際應(yīng)用中,用戶可根據(jù)需要,創(chuàng)建數(shù)據(jù)庫(kù),設(shè)置數(shù)據(jù)入庫(kù)存儲(chǔ),可便于用戶查看或調(diào)用歷史測(cè)量數(shù)據(jù);或設(shè)定預(yù)警處理,若溫度超過(guò)用戶設(shè)定的上限值,發(fā)送自動(dòng)報(bào)警等,可及時(shí)發(fā)現(xiàn)問(wèn)題并糾正。
五、系統(tǒng)測(cè)試及分析
系統(tǒng)組建完成后,進(jìn)行了系統(tǒng)測(cè)試。測(cè)試中,系統(tǒng)配置了兩個(gè)溫度數(shù)據(jù)采集節(jié)點(diǎn),節(jié)點(diǎn)1放置在自然室溫環(huán)境下,節(jié)點(diǎn)2放置在恒溫15℃的環(huán)境下。在時(shí)間段8:30-17:00每隔半小時(shí)采集一組數(shù)據(jù),得溫度變化曲線圖。節(jié)點(diǎn)1處放置了比對(duì)溫度計(jì),每隔半小時(shí)進(jìn)行一次手動(dòng)記錄,得到溫度變化曲線與節(jié)點(diǎn)1的測(cè)量記錄進(jìn)行對(duì)比。
圖10(a) 節(jié)點(diǎn)1溫度變化圖10(b) 溫度計(jì)測(cè)量值 圖10(c)節(jié)點(diǎn)1溫度變化
由圖(a)(b)可見(jiàn),節(jié)點(diǎn)1的溫度記錄與溫度計(jì)測(cè)量值相近,溫度變化符合秋季實(shí)際溫度情況,溫度隨時(shí)間變化穩(wěn)定;由圖(c)可見(jiàn),節(jié)點(diǎn)2的溫度變化基本在15℃附近,符合恒溫條件。說(shuō)明無(wú)線通信暢通,網(wǎng)絡(luò)結(jié)構(gòu)穩(wěn)定。
六、結(jié)論
本文實(shí)現(xiàn)了一種基于ZigBee的環(huán)境無(wú)線監(jiān)測(cè)系統(tǒng),本系統(tǒng)的優(yōu)點(diǎn)是:模塊化設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、網(wǎng)絡(luò)組態(tài)靈活、功耗低、可靠性高、安裝方便等。用戶可以根據(jù)需要自行增減采集節(jié)點(diǎn);ZigBee終端節(jié)點(diǎn)支持多種數(shù)據(jù)傳輸端口(RS232、RS485、USB等),使得多種傳感器、控制器可與之直接相連接。系統(tǒng)控制界面友好,易于操作。因此本監(jiān)測(cè)系統(tǒng)具有較高的實(shí)用性和推廣價(jià)值,可在溫室花房、儲(chǔ)物倉(cāng)庫(kù)、儀器設(shè)備存儲(chǔ)室及其他眾多領(lǐng)域得到良好的運(yùn)用。
參考文獻(xiàn)
[1] 高超. 基于ZigBee的智能用能管理系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn).電腦知識(shí)與技術(shù),2011(10):7489-7491
[2] 方水良,王加興. 基于XBee的無(wú)線數(shù)據(jù)采集系統(tǒng)開(kāi)發(fā)和應(yīng)用.機(jī)電工程,2010(3):53-56
[3] 王靜霞. 一種與zigBe協(xié)議兼容的RF模塊.電子工程師,2007(3):24-27
[4] 朱曉明,趙曉麗. 基于UART接口的ZigBee傳感器網(wǎng)絡(luò)的設(shè)計(jì).機(jī)床與液壓,2008(10):271