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