劉忠超, 范偉強, 常有周
(1.南陽理工學院電子與電氣工程學院,河南南陽 473004; 2.西北農林科技大學機械與電子工程學院,陜西楊凌 712100; 3.中國礦業大學(北京)機電與信息工程學院,北京 100083)
我國是人口大國,人均耕地占有率排名較靠后,占有世界近22%人口的國家,卻依靠著占世界近7%的耕地來生存著[1]。此外,我國耕地質量呈下滑的趨勢,這對糧食產量有著較大的影響,提高單位面積糧食產量和擴大糧食種植面積是農業發展迫在眉睫的要求。溫室栽培改變了傳統農業生產模式。打破了植物生長的地域和時空界限,推動了農業生產和社會文明的發展。現代溫室越來越廣泛地應用于設施農業生產中,溫室生產成為現代農業的標志。隨著現代農業的發展,特別是隨著農業人口向城市轉移,對農業自動化的要求越來越高,溫室技術也逐步向智能化方向發展[2]。
智能溫室能將溫度、濕度、光照度等環境量自動調節到農作物生長所需要的范圍內,從而可以不受自然環境的影響,實現全年任何季節都能生產的需求。傳統的溫室大多采用人工方式進行環境數據的測量,費時費力,在溫室面積較大時更是增加了勞動量[3]。當采用有線的方式進行監控時,需要布設較多的線纜,出現故障的可能性較大,并且成本較高,降低了溫室的效益[4]。針對傳統溫室存在的問題,課題借助ZigBee無線傳感網絡和以太網通信技術的優勢,設計了一種智能溫室無線監控系統,利用傳感器自動采集溫室環境參數,實現對溫室環境的智能化監控。
為了實現溫室環境參數的遠程自動監控,系統主要由溫室終端環境因子采集系統和遠程網絡傳輸系統組成。終端通過溫濕度傳感器、光照度傳感器采集環境因子,并通過ZigBee組建的網絡將溫室環境量上傳至協調器,協調器和STM32控制器之間采用串口直連的方式進行數據間的雙向傳遞,單片機在收到數據后會在液晶屏上進行環境數據的就地顯示及動態曲線的繪制,同時通過網絡模塊將數據上傳到基于WEB的上位機上,上位機會對溫室內的環境量進行實時顯示。同時上位機開啟自動控制功能,如果溫室內溫濕度、光照度高于或低于設定值,則會自動發送相應的命令給下位機,終端會對收到的命令進行解析,控制風扇、加熱器、除濕器、風機的開和關,以此來實現溫室的智能調節。系統總體架構如圖1所示。

STM32系列單片機是意法半導體公司推出的高性能、低成本、低功耗的嵌入式微處理器,該芯片的配置非常強大,片上資源十分豐富。結合系統的功能需求,系統選用STM32F103ZET6作為ZigBee網關的微控制器,通過2路串口與協調器和電腦進行數據傳輸,并借助1路SPI接口和網絡模塊相連,實現與上位機之間的以太網通信[5]。
系統選用DHT11傳感器來測量溫濕度,該傳感器已經對輸出的數字信號進行了校準,可靠性與穩定性極高。傳感器采用單總線的串行通信方式,使硬件連線變得簡單,使用起來較為方便[6]。DHT11傳感器電路如圖2所示。

光照度的測量通常簡便的方法是采用光敏電阻。它是一種光照度與其阻值成反比的元器件,在強光條件下,光敏電阻的阻值僅有數百歐姆,在暗光條件下,它的阻值最大可達 10 MΩ。BH1750FVI是一種采用I2C總線來進行通信的數字式光照度傳感器,這種傳感器具有很高的分辨率,能夠檢測的光照度變化范圍較大,并且受紅外線、溫度的影響很小[7]。光照度檢測電路如圖3所示。
為了在現場實時監控溫室里的溫濕度、光照度等環境量,顯示界面必不可少。常用的顯示方式有數碼管、液晶屏和點陣等。本系統要顯示的數據比較多,數碼管只能顯示單一數字,不能顯示出數據的變化趨勢,而TFT LCD液晶屏不僅能顯示不同顏色的漢字和數字,而且還能繪制出溫濕度、光照度的變化曲線,作為溫室監控的顯示界面較為合適[8]。系統采用尺寸為3.2英寸、分辨率為240×320像素的液晶屏,液晶顯示電路如圖4所示。


智能溫室不僅需要實時監視溫濕度、光照度等環境量,而且還需要對風扇、加熱器、除濕器、風機等進行控制。終端節點帶負載能力有限,輸出信號不足以驅動這些大功率器件,因此采用繼電器的方式來控制[9]。選用松樂直流5 V繼電器,最大承受10 A/30 V的直流電,能滿足系統設計要求。考慮到風機等大功率器件啟動時電流的影響,加入光耦來對信號進行隔離。繼電器輸出電路如圖5所示。

ZigBee網關數據傳輸的核心就是網絡模塊。STM32單片機一般有2種方式接入以太網:即軟件TCP/IP協議棧和硬件TCP/IP協議棧的方式。系統采用W5500以太網芯片來實現硬件協議棧方案,采用硬件協議棧能減輕單片機處理的數據量。W5500是Wiznet公司設計的全硬件協議棧芯片,具有超高的性價比。在使用過程中,不需要再植入軟件協議棧,大大降低了代碼量,同時具有較高的安全性[10]。用STM32控制W5500網絡模塊,用TCP Client的方式來接入互聯網。
W5500硬件電路如圖6所示。
系統中ZigBee芯片、傳感器、STM32單片機工作電壓均為3.3 V,而單片機對電壓要求較高,因此單獨采用穩壓芯片為其供電。選擇2節鋰電池串聯來為系統提供電能, 由于系統正常工作的電流不是太大,選擇常用的AMS1117-3.3 V線性穩壓芯片來轉換成需要的電壓[11]。AMS1117-3.3 V電源電路如圖7所示。


軟件系統包括兩大部分:第一部分是由ZigBee無線傳感網絡構成的溫室數據采集軟件系統,第二部分是以ZigBee網關為核心的數據監控軟件系統。數據采集軟件系統主要有ZigBee組網、 無線通信、傳感器采集、 I/O輸出控制4個模塊組成。數據監控軟件系統主要有MCU、以太網通信、LCD顯示、上位機監控4個模塊組成[12]。軟件系統總體框架如圖8所示。
終端節點上的DHT11溫濕度傳感器與ZigBee進行通信的方式為串行單總線,通信1次的時間需要約4 ms,開始時主機發送1個下降沿啟動信號,傳感器響應該信號并從低功耗模式變為高速模式。DHT11將在啟動信號結束后輸出一個響應脈沖信號同時發送包含需要的5個字節的溫濕度數據,完成一次信號采樣過程[13]。讀出完整的一幀數據格式為1個字節的濕度整數,1個字節的濕度小數,1個字節的溫度整數,1個字節的溫度小數,最后1個字節是校驗和。溫濕度程序流程如圖9所示。


光照度程序流程如圖10所示。

網關與協調器之間以串行方式進行數據傳輸,單片機每收到1字節的數據都會進入中斷進行判斷、讀取,直至完成1幀數據的接收并將其放在數據緩沖區。單片機通過W5500模塊將收到的1幀完整數據轉換成TCP/IP協議的數據格式并發送到WEB上,并在LCD上實時顯示數據及曲線,實現了本地和遠程可以同時監控溫室環境因子的功能。網關主程序流程如圖11所示。

根據系統需求,溫室環境因子在上位機上以WEB的形式實時顯示數據和曲線。PHP是一種適合WEB開發的開源腳本語言,因此采用PHP作為上位機的編程語言。ZigBee網關與上位機之間使用TCP協議進行通信,網關TCP通信用C語言進行編程,上位機TCP通信用PHP語言進行編程,兩者編程語言不同,網關設備作為TCP Client,調用Connect函數接口,上位機作為TCP Server,調用Listen函數接口,通過調用Socket提供的函數接口來實現兩者間的通信。上位機登錄界面如圖12所示。

系統軟硬件測試完成后在南陽某溫室大棚放置2個終端節點對系統整體功能進行測試。終端液晶屏就地顯示結果如圖13所示,紅線代表溫度,綠線代表濕度,藍線代表光照度,在液晶屏上實時顯示了終端采集節點1、2的溫濕度和光照度,并且改變溫濕度和光照度時曲線有相應的變化,能反映出變化的趨勢。從系統整體測試結果來看,液晶屏能準確反映出溫室內環境參數的變化趨勢。

通過遠端WEB頁面登錄上位機成功后可以查看不同時間的溫度、濕度和光照度的變化趨勢,溫度、濕度曲線、光照度曲線分別如圖14至圖16所示。


借助于ZigBee技術,網關作為數據轉換中心,把溫室內的環境因子無線發送到上位機,實現了溫室的智能遠程監控功能,系統具有布線簡單、結構合理、使用方便的特點。
利用DHT11溫濕度傳感器和BH1750FVI光照傳感器采集終端所在溫室的環境因子,并實現了溫室環境因子的無線遠距離傳送。
基于PHP和以太網開發了溫室環境人機交互界面,實現了能通過Web遠程監控溫室環境參數。
