一種遠(yuǎn)程分布式溫室環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
2015-10-26
作者:周 健,羅 杰
來(lái)源:2014年微型機(jī)與應(yīng)用第22期
摘 要: 針對(duì)現(xiàn)代農(nóng)業(yè)生產(chǎn)中遠(yuǎn)程分布式溫室環(huán)境監(jiān)測(cè)的需求,設(shè)計(jì)了一種遠(yuǎn)程分布式溫室環(huán)境監(jiān)測(cè)系統(tǒng)。系統(tǒng)構(gòu)成包括基于CC2530的傳感網(wǎng)絡(luò)、數(shù)據(jù)采集節(jié)點(diǎn)、主控節(jié)點(diǎn)及上位監(jiān)控機(jī)。開發(fā)了監(jiān)測(cè)過程的通信協(xié)議;實(shí)現(xiàn)了對(duì)多點(diǎn)環(huán)境參數(shù)的遠(yuǎn)程無(wú)線實(shí)時(shí)采集、網(wǎng)絡(luò)節(jié)點(diǎn)狀況的監(jiān)測(cè)和可視化上位機(jī)監(jiān)控。運(yùn)行結(jié)果表明,該系統(tǒng)工作穩(wěn)定可靠,功能完備,操作簡(jiǎn)便,人機(jī)界面友好,較好地滿足了遠(yuǎn)程分布式溫室環(huán)境監(jiān)測(cè)的需求。
關(guān)鍵詞: 環(huán)境參數(shù);無(wú)線監(jiān)測(cè);ZigBee;CC2530;可視化
0 引言
適宜的環(huán)境可以促進(jìn)動(dòng)植物的生長(zhǎng),提高產(chǎn)量。為了得到更好的經(jīng)濟(jì)效益,溫室環(huán)境參數(shù)的監(jiān)測(cè)是十分重要的?,F(xiàn)代化農(nóng)業(yè)大規(guī)模生產(chǎn)對(duì)遠(yuǎn)程分布式溫室環(huán)境監(jiān)測(cè)提出了新的要求,傳統(tǒng)的網(wǎng)絡(luò)化監(jiān)測(cè)系統(tǒng)通常采用有線方式組成網(wǎng)絡(luò),資金投入大,維護(hù)困難,受環(huán)境限制,可移動(dòng)性差[1]。無(wú)線傳感網(wǎng)絡(luò)具有拓展靈活、移動(dòng)性強(qiáng)、成本低、自組織、動(dòng)態(tài)拓?fù)鋄2-3]等優(yōu)點(diǎn),使它在遠(yuǎn)程分布式測(cè)控應(yīng)用中具有明顯的優(yōu)勢(shì)。
ZigBee作為一種新型的無(wú)線通信技術(shù),由于功耗低、成本低、擴(kuò)展方便、易于維護(hù)、移動(dòng)性強(qiáng)[4-8],使它在無(wú)線傳感網(wǎng)絡(luò)中占有重要地位。本文采用新一代SoC芯片CC2530構(gòu)建無(wú)線傳感網(wǎng)絡(luò),設(shè)計(jì)了一種遠(yuǎn)程分布式溫室環(huán)境監(jiān)測(cè)系統(tǒng),開發(fā)了監(jiān)測(cè)過程的通信協(xié)議,實(shí)現(xiàn)了對(duì)多點(diǎn)環(huán)境參數(shù)的遠(yuǎn)程無(wú)線實(shí)時(shí)采集、網(wǎng)絡(luò)節(jié)點(diǎn)狀況的監(jiān)測(cè)和可視化上位機(jī)監(jiān)控,更好地滿足了遠(yuǎn)程溫室環(huán)境監(jiān)測(cè)的需要。
1 總體方案設(shè)計(jì)
1.1 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)基于CC2530構(gòu)建傳感網(wǎng)絡(luò),設(shè)計(jì)了數(shù)據(jù)采集終端節(jié)點(diǎn)、主控節(jié)點(diǎn)及上位監(jiān)控機(jī),整個(gè)系統(tǒng)結(jié)構(gòu)如圖1所示。
主控節(jié)點(diǎn)與上位監(jiān)控機(jī)通過串口進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)了對(duì)各采集節(jié)點(diǎn)的控制與管理。數(shù)據(jù)采集終端節(jié)點(diǎn)主要配合主控節(jié)點(diǎn)完成對(duì)本地環(huán)境參數(shù)的采集。
1.2 系統(tǒng)功能
在溫室環(huán)境監(jiān)測(cè)中,用戶有時(shí)需要實(shí)時(shí)地監(jiān)測(cè)溫室環(huán)境參數(shù),所以需要實(shí)時(shí)地采集環(huán)境參數(shù)。在對(duì)環(huán)境要求不高的情況下,出于能耗的考慮,用戶可以停止對(duì)環(huán)境參數(shù)的實(shí)時(shí)采集,進(jìn)行手動(dòng)單次采集。為確保網(wǎng)絡(luò)節(jié)點(diǎn)穩(wěn)定工作,需要監(jiān)測(cè)每個(gè)節(jié)點(diǎn)的工作電壓。在遇到網(wǎng)絡(luò)故障時(shí),要能及時(shí)檢測(cè)出不能正常工作的節(jié)點(diǎn)。對(duì)于以上要求,本文的設(shè)計(jì)目標(biāo)如下:
?。?)主控節(jié)點(diǎn)能周期性地采集到各采集節(jié)點(diǎn)所處地區(qū)的環(huán)境參數(shù),并能把數(shù)據(jù)正確地傳給上位監(jiān)控機(jī);
?。?)在不需要周期性實(shí)時(shí)采集時(shí),主控節(jié)點(diǎn)能通過手工單次采集命令進(jìn)行手工單次采集;
?。?)為了易于網(wǎng)絡(luò)故障的排查,主控節(jié)點(diǎn)必須承擔(dān)網(wǎng)絡(luò)檢測(cè)的任務(wù),時(shí)刻監(jiān)測(cè)網(wǎng)絡(luò)節(jié)點(diǎn)是否正常工作;
?。?)形象的上位監(jiān)控機(jī)顯示界面。
2 軟件系統(tǒng)設(shè)計(jì)
2.1 主控節(jié)點(diǎn)軟件設(shè)計(jì)
?。?)周期性采集控制:上位監(jiān)控機(jī)通過串口給主控節(jié)點(diǎn)一個(gè)定時(shí)周期采集命令,主控節(jié)點(diǎn)接收到命令后先判斷周期命令是否正確,若正確,則主控節(jié)點(diǎn)通過osal_start_timerEx()系統(tǒng)函數(shù)給主控節(jié)點(diǎn)添加周期性定時(shí)事件。若不正確,則拋棄這次接收到的命令。
(2)手動(dòng)單次采集控制:上位監(jiān)控機(jī)通過串口給主控節(jié)點(diǎn)一個(gè)手動(dòng)采集命令,主控節(jié)點(diǎn)檢查命令是否正確,若正確,則主控節(jié)點(diǎn)通過AF_DataRequest()系統(tǒng)函數(shù)向終端節(jié)點(diǎn)發(fā)送單次采集命令。主控節(jié)點(diǎn)等待接收各終端節(jié)點(diǎn)采集到的環(huán)境參數(shù)信息,并把環(huán)境參數(shù)信息寫進(jìn)串口。
?。?)網(wǎng)絡(luò)節(jié)點(diǎn)監(jiān)測(cè):主控節(jié)點(diǎn)上電后會(huì)周期性地廣播測(cè)試消息,并等待接收終端節(jié)點(diǎn)回發(fā)的狀態(tài)信息。對(duì)接收到的狀態(tài)信息進(jìn)行相應(yīng)處理,并把處理后的網(wǎng)絡(luò)狀態(tài)信息寫進(jìn)串口。
2.2 終端節(jié)點(diǎn)軟件設(shè)計(jì)
?。?)周期性環(huán)境參數(shù)采集:終端節(jié)點(diǎn)接收到主控節(jié)點(diǎn)的周期性采集命令后,采集本地的環(huán)境參數(shù)信息,并把采集到的環(huán)境參數(shù)信息回發(fā)給主控節(jié)點(diǎn)。在周期性采集事件中涉及對(duì)模擬傳感器和數(shù)字傳感器的采集。
?、倌M傳感器數(shù)據(jù)采集:環(huán)境的光照、濕度參數(shù)信息通過模擬傳感器采集。本文考慮到成本和精度,使用了CC2530自帶的AD轉(zhuǎn)換功能。CC2530有7 bit、9 bit、10 bit和11 bit分辨率可選。本文選用了9 bit分辨率。
?、跀?shù)字傳感器數(shù)據(jù)采集:環(huán)境的溫度參數(shù)通過數(shù)字單總線型溫度傳感器DS18B20采集。該傳感器完成了模擬到數(shù)據(jù)量的轉(zhuǎn)化,轉(zhuǎn)化的結(jié)果是12 bit的。轉(zhuǎn)換后的數(shù)字量結(jié)果保存在DS18B20內(nèi)部存儲(chǔ)器中。轉(zhuǎn)換的結(jié)果第一位是符號(hào)位,后11位為數(shù)據(jù)位。如果第一位符號(hào)位為1,表明實(shí)測(cè)溫度低于零度。
?。?)手動(dòng)單次環(huán)境參數(shù)采集:終端節(jié)點(diǎn)接收到主控節(jié)點(diǎn)的手動(dòng)單次采集消息后,采集一次環(huán)境參數(shù)信息,并把環(huán)境參數(shù)信息回發(fā)給主控節(jié)點(diǎn)。
(3)網(wǎng)絡(luò)狀態(tài)監(jiān)測(cè):終端節(jié)點(diǎn)接收到主控節(jié)點(diǎn)的檢測(cè)信息后,回發(fā)各自的狀態(tài)信息。該狀態(tài)信息包含各節(jié)點(diǎn)的工作狀態(tài)。
周期性采集、手動(dòng)單次采集、網(wǎng)絡(luò)狀態(tài)監(jiān)測(cè)的流程圖如圖2所示。
2.3 上位監(jiān)控機(jī)設(shè)計(jì)
上位監(jiān)控機(jī)的所有功能都是基于對(duì)串口數(shù)據(jù)的操作。針對(duì)串口數(shù)據(jù)操作,本文使用了CSerialPort.c和CSerialPort.h兩個(gè)文件。這兩個(gè)文件中定義了許多對(duì)串口處理的函數(shù),用戶只要把它們添加進(jìn)工程,并做相應(yīng)配置就能調(diào)用其中對(duì)串口處理的函數(shù),實(shí)現(xiàn)對(duì)串口的操作。
?。?)參數(shù)提取模塊:參數(shù)提取模塊主要由界面初始化模塊、打開和關(guān)閉串口模塊、接收單個(gè)字節(jié)模塊等組成。界面初始化模塊主要完成添加捕獲到的串口號(hào)、波特率、數(shù)據(jù)位、校驗(yàn)、停止位等界面初始化信息。打開和關(guān)閉串口模塊主要完成關(guān)閉已經(jīng)打開的串口并根據(jù)捕獲到的串口號(hào)、波特率、數(shù)據(jù)位、校驗(yàn)、停止位信息初始化串口。接收單個(gè)字節(jié)模塊主要完成接收下位機(jī)傳過來(lái)的數(shù)據(jù)。
(2)實(shí)時(shí)環(huán)境參數(shù)曲線繪制模塊:實(shí)時(shí)環(huán)境參數(shù)曲線繪制模塊主要由繪制溫室溫度參數(shù)模塊、繪制溫室亮度參數(shù)模塊、繪制溫室濕度參數(shù)模塊、重繪界面模塊等組成。繪制溫室溫度參數(shù)曲線模塊首先繪制時(shí)間軸、溫度值軸、相應(yīng)位置的刻度值,然后根據(jù)參數(shù)提取模塊提取到的溫室溫度值,繪制出溫室溫度的實(shí)時(shí)曲線圖。亮度、濕度參數(shù)曲線的繪制與溫度參數(shù)曲線的繪制類似。重繪界面模塊,當(dāng)輸出一次信息時(shí),需要重繪界面,以防止上次界面對(duì)本次輸出的影響。
(3)溫室狀態(tài)監(jiān)測(cè)顯示模塊:溫室狀態(tài)監(jiān)測(cè)顯示模塊主要由繪制虛擬測(cè)量計(jì)模塊、顯示接收當(dāng)前環(huán)境參數(shù)的時(shí)間模塊等組成。繪制虛擬測(cè)量計(jì)模塊繪制出溫度計(jì)、濕度計(jì)、亮度計(jì),把參數(shù)提取模塊提取到的環(huán)境參數(shù)在對(duì)應(yīng)的度量機(jī)上顯示出來(lái)。顯示接收當(dāng)前環(huán)境參數(shù)的時(shí)間模塊,在參數(shù)提取模塊提取到一個(gè)完整的數(shù)據(jù)包后,提取一次筆記本的系統(tǒng)時(shí)間,并把它顯示出來(lái)。
?。?)網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)顯示模塊主要由判斷節(jié)點(diǎn)正常工作模塊、節(jié)點(diǎn)地址顯示模塊、節(jié)點(diǎn)工作電壓顯示模塊等組成。該模塊主要是分析主控節(jié)點(diǎn)送上來(lái)的網(wǎng)絡(luò)狀態(tài)信息,并能根據(jù)網(wǎng)絡(luò)狀況信息分析節(jié)點(diǎn)是否正常工作,畫出節(jié)點(diǎn)狀態(tài)圖。
整個(gè)系統(tǒng)的工作流程圖如圖3所示。
3 實(shí)際運(yùn)行效果
當(dāng)上位監(jiān)控機(jī)給主控節(jié)點(diǎn)一個(gè)定時(shí)采集周期,監(jiān)控機(jī)上就能定時(shí)顯示出各節(jié)點(diǎn)所處環(huán)境的參數(shù)信息,運(yùn)行結(jié)果如圖4所示。
根據(jù)提取到的環(huán)境參數(shù)信息,畫出環(huán)境參數(shù)的實(shí)時(shí)曲線。點(diǎn)擊打開圖4中的第二個(gè)屬性對(duì)話框,顯示環(huán)境參數(shù)的實(shí)時(shí)曲線,效果如圖5所示。
監(jiān)控機(jī)可以把提取到的環(huán)境參數(shù)信息轉(zhuǎn)換到相應(yīng)測(cè)量計(jì)上的輸出。點(diǎn)擊打開第三個(gè)屬性頁(yè),形象地顯示各節(jié)點(diǎn)環(huán)境參數(shù)信息,效果圖如圖6所示。
監(jiān)控機(jī)可以顯示網(wǎng)絡(luò)狀態(tài)信息,運(yùn)行效果圖如圖7所示。
人為地關(guān)閉第4個(gè)節(jié)點(diǎn),網(wǎng)絡(luò)狀態(tài)圖上的第4個(gè)節(jié)點(diǎn)顏色變灰。由此看出主控節(jié)點(diǎn)可以檢測(cè)網(wǎng)絡(luò)故障。
4 結(jié)論
將ZigBee無(wú)線通信技術(shù)應(yīng)用于遠(yuǎn)程分布式溫室環(huán)境監(jiān)測(cè),有利于提高環(huán)境參數(shù)監(jiān)測(cè)的效率,降低現(xiàn)有監(jiān)測(cè)系統(tǒng)的成本。大量實(shí)驗(yàn)測(cè)試表明,該系統(tǒng)具有數(shù)據(jù)傳輸快、誤碼率低、穩(wěn)定可靠等特點(diǎn),稍加改動(dòng)就可以應(yīng)用于其他監(jiān)測(cè)系統(tǒng),具有一定的市場(chǎng)價(jià)值。
參考文獻(xiàn)
[1] 楊順,劉士敏.基于ZigBee-WSN的啤酒發(fā)酵過程監(jiān)測(cè)系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(12):4410-4414.
[2] 馬祖長(zhǎng),孫怡寧,梅濤.無(wú)線傳感網(wǎng)絡(luò)綜述[J].通信學(xué)報(bào),2004,25(4):114-124.
[3] 汪明偉,汪烈軍,謝衛(wèi)民.無(wú)線傳感器網(wǎng)絡(luò)訪問控制的研究進(jìn)展[J].計(jì)算機(jī)應(yīng)用研究,2013,30(10):2896-2902.
[4] HAN D M, LIM J H. Smart home energy management system using IEEE 802.15.4 and ZigBee[J]. IEEE Transactions on Consumer Electronics,2010, 56(3):1403-1410.
[5] 吳京晶,吳伯農(nóng).基于ZigBee的冷彎型鋼在線監(jiān)測(cè)系統(tǒng)[J].自動(dòng)化儀表,2013,34(12):28-35.
[6] 李彬,李業(yè)德,程海濤.低功耗無(wú)線測(cè)溫系統(tǒng)設(shè)計(jì)[J].山東理工大學(xué)學(xué)報(bào),2008,23(2):141-142.
[7] 李文仲,段朝玉.ZigBee無(wú)線網(wǎng)絡(luò)技術(shù)入門與實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2007.
[8] 李文仲,段朝玉.ZigBee2006無(wú)線網(wǎng)絡(luò)與無(wú)線定位實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2008.