李曉娟 張素君 楊文強
摘 要:該文基于ZigBee技術給出了一種用于溫室數據采集的系統方案。硬件部分選擇溫濕度傳感器SHT11和光傳感器TSL2550D采集溫室環境參數,軟件部分采用C語言編寫上位機程序,數據的采集和傳輸采用周期上報和中斷立即上報兩種工作方式。實驗結果表明,該系統可以實時、準確、可靠地完成溫室環境因子監測,有效地降低了系統功耗,為今后將該網絡應用于實際溫室的數據采集打下基礎,具有廣泛的應用前景。
關鍵詞:ZigBee;數據采集;溫室;SHT11;TSL2550D
中圖分類號 S625.5 文獻標識碼 A 文章編號 1007-7731(2016)12-0122-04
Design of Data Acquisition System for Greenhouse Based on ZigBee Technology
Li Xiaojuan et al.
(Henan Institute of Science and Technology,Xinxiang 453003,China)
Abstract:A data acquisition system for greenhouse based on ZigBee technology was presented in this paper. Part of the hardware select temperature and humidity sensor SHT11 and light sensor TSL2550D to acquisit environmental parameters of greenhouse,part of the software use C language to write the program of the upper computer interface,data is collected and transported using the periodic report mode or interrupt immediately report mode.The experimental results show that,the system can monitor the environmental factors of greenhouse in real time,accurately and reliably,and reduce system power consumption effectively. It has laid a foundation to apply the network in practical greenhouse data acquisition in the future with a broad application prospect.
Key words:ZigBee;Data collection;Greenhouse;SHT11;TSL2550D
溫室大棚可以在不同季節為農作物提供其生長發育所需的環境,適宜的環境對促進農作物的產量和品質起著舉足輕重的作用。溫室生產的一個重要環節是數據的采集與監控。本文基于ZigBee技術給出了一種用于溫室數據采集[1,2]的設計方案。
1 硬件電路設計
1.1 溫濕度采集電路設計 溫室環境因子中,溫濕度的監測相當重要。本系統采用瑞士Sensirion公司推出的新一代基于CMOSensTM技術的數字式溫濕度傳感器SHT11,它將溫濕度傳感器和相關電路功能部件全部采用CMOS技術放置在一個芯片內,這就使得測量精度提高;另外,它具有IIC二線串行總線接口,方便與任何類型的微處理器、微控制器接口相連,為溫濕度的微機化測試帶來極大的方便[3,4]。其與微控制器的接口如圖1所示。
如圖1所示,SCK接到微控制器的I/O口,通過I/O口模擬時鐘信號來實現微處理器與SHT11之間的同步通訊。由于接口包含了完全靜態邏輯,所以不存在最小的SCK頻率,DATA三態門用于數據的讀取,DATA在SCK時鐘下降沿之后改變狀態,僅在SCK時鐘上升沿有效。數據傳輸期間,在SCK時鐘高電平時,DATA必須保持穩定。為避免信號沖突,微處理器應驅動DATA在低電平,需要一個外部的阻值為l0k的上拉電阻將信號提拉至高電平。R8、R9主要是為了測試系統其它部分的功耗而設計;JN5139通過DIO13、DIO12就可以與SHT11通信,從而讀取溫濕度數據。最終讀取的溫度數據,因為能隙材料極好的線性,可直接用公式1轉化為溫度值,其中SOT是傳感器輸出的測量值,d1,d2為溫度轉換系數,分別與供電電壓和轉換精度有關系。
Temperature=d1+d2×SOT (1)
測量得到的濕度值需要補償非線性以獲取準確的數據,采用公式2修正讀數。其中SORH是傳感器輸出的濕度值,C1、C2、C3是濕度轉換系數,與測量精度有關。
Rhlinear=C1+C2×SORH+C3×SORH2 (2)
1.2 光照度采集電路設計 作物的生長、發育和產量同光合作用密切相關,因此對光照度的監測也是溫室環境檢測系統中的關鍵一環。對于普通的光照傳感器只有一只光電探測器,檢測到的光信號既包含可見光(影響光合作用的主要成分)成分又有紅外光成分。這樣,當周圍環境的可見光并不十分強而紅外光較強時,檢測的結果會受到紅外光影響,輸出光照強度大的測量值,與人眼的感覺有很大差異。因此,在光照傳感器設計中,關鍵問題是要濾除紅外光對光照傳感器檢測結果的影響。本系統中采用TAOS公司的TSL2550D光傳感器,其內部有兩個傳感器,提供的輸出是根據兩個組合傳感器讀數推導出來的。其中通道0對紅外光和可見光敏感,通道1只對紅外光敏感。只要將這兩個讀數相減,并將結果數字化,TSL2550 D就能得到近似人眼的響應,從而評估可見光光強以及紅外線的影響[5]。TSL2550D的接口電路圖如圖2所示。
2 軟件設計
本系統通信軟件采用C語言在Jennic CodeBlocks編譯和調試環境下進行程序設計。
2.1 讀取溫濕度數據 讀溫濕度時,為了確保不會發生阻塞,采用狀態機機制,把傳感器的狀態分為:空閑狀態、啟動讀濕度、正在讀濕度、讀濕度完成、啟動讀溫度、正在讀溫度、讀溫度完成、溫濕度數據準備好[6]。在讀溫濕度子函數中利用switch()語句對各個狀態進行判定,根據狀態進行相應的操作,最終正確讀出溫濕度數據。在傳感器節點子程序中,周期性地調用讀溫/濕度測量子程序就可以在狀態機機制下正確地監測溫室溫濕度因子。SHT11測量溫濕度的程序圖如圖3所示。
2.2 讀取光照度數據 TSL2550D光傳感器采用SMBus總線通訊協議,針對SMBus總線編寫寫了幾個基礎函數如下:
PUBLIC void vSMBusInit(void);//初始化SMBus總線
PUBLIC bool_t bSMBusWrite(uint8 u8Address,uint8 u8Command,//SMBus寫函數
uint8 u8Length,uint8* pu8Data);
PUBLIC bool_t bSMBusRandomRead(uint8 u8Address,uint8 u8Command,uint8 u8Length,uint8* pu8Data);// SMBus隨機讀函數
PUBLIC bool_t bSMBusSequentialRead(uint8 u8Address,uint8 u8Length,uint8* pu8Data);//SMBus順序讀函數
針對TSL2550D編寫了以下幾個子函數:
PUBLIC bool_t bTSL2550_Init(void);//用于TSL2550D的初始化;
PUBLIC bool_t bTSL2550_PowerDown(void);//使TSL2550D工作在掉電模式;
PUBLIC bool_t bTSL2550_StartRead(uint8 u8Channel);//啟動通道0、1進行采集;
PUBLIC uint16 u16TSL2550_ReadResult(void);
//從ADC寄存器0、1中讀出轉換結果,并根據公式1計算出Ch0/Ch1計數值。
TSL2550D寄存器數據格式如表1所示,若B7為1則說明ADC寄存器里的數據已經有效,否則無效;B6 B5 B4三位決定CHORD NUMBER,取值范圍為:0~7;B3 B2 B1 B0四位決定STEP NUMBER值,取值范圍為:0~15;利用從ADC寄存器里讀出的值經過換算并按公式3計算即可得到ADC計數值,Ch0/Ch1最終按照光照度公式4計算即可得到實際光照度。
其中,C取值范圍為:0~7;S取值范圍為:0~15;L為亮度,單位為流明;Ch0和Ch1分別代表光照傳感器的兩個光電探測器所采集到的數值;R代表Ch0和Ch1的比值,即當前環境中紅外光所占的比重。
3 實驗驗證
本實驗在實驗室內模擬完成,主要有基于周期上報數據和基于中斷立即上報數據兩種模式。
3.1 周期模式下的數據采集 在測試程序中,對應指定地址寫入32個數據,并從指定地址單元讀出10個數,寫讀成功后,在串口中顯出。協調器不斷檢測是否有按鍵按下,若按下則顯示相應的按鍵編號。為了觀察方便,測試時,向協調器節點發送數據時,主要包括溫度、濕度、光照度及時間。傳感器節點和路由節點完成注冊后,先采集一次數據進入休眠狀態,當Wake timer1(測試時設為10s)時間到時,進入相應中斷事件,在中斷事件中,檢查采集數據是否超限,若超限立即發送數據,若不超限,判定采集數據次數是否大于N(測試時N設為6),若大于則發送一次數據,若不大于則中斷返回。若Wake timer2時間到,則向路由節點詢問是否有發達給自己的數據或命令,并進行相應的處理。周期模式下的數據采集如圖4所示。
3.2 中斷模式下的數據采集 當溫室環境因子發生突變并超限時,路由節點或傳感器節點會立即上報協調器數據,從而用戶可以及時采取相應的措施。在本實驗中,采用隨機函數法來模擬采集溫室數據,當隨機函數產生的數據超限時,則立即上報協調器,發出聲光報警,若數據在正常范圍,則丟棄數據,節點繼續睡眠,從而節省功耗。其中斷數據傳輸如圖5所示。
4 結論
本文基于ZigBee技術將采集的溫度、濕度、光照強度等數據通過無線網絡進行傳輸,監控人員可以實時監控整個溫室環境,通過上位機做出相應處理,從而為植物的生長提供了一個良好的環境,也可以為研究者提供理論依據。本系統對溫室環境參數的監測及時、準確,且具有可靠性高、擴展性強等優點。
參考文獻
[1]段鋒銳,石軍鋒.一種基于Zig Bee技術的溫室數據實時采集系統[J].自動化與儀表,2015(10):41-44.
[2]趙悅,程躍,張宏坤.基于Zig Bee的溫室測控系統設計[J].實驗室研究與探索,2014,33(12):131-134.
[3]匡宇國.智能傳感器SHT11及其在便攜式溫濕度檢測儀中的應用[J].電子器件,2006,29(4):1312-1315.
[4]Sensirion.SHT11/15 relative humidity sensor.http://www.sensirion.com/en/pdf/Datasheet_SHT1x_SHT7x_0206.pdf,June 2002.
[5]Texas Advanced Optoelectronic Solutions.TSL2550 ambient light sensor.http://www.taosinc.com/pdf/tsl2550-E39.pdf,September 2002.
[6]馬潮.基于AVR的單片嵌入式系統原理與實踐應用[M].1版.北京:北京航空航天大學出版社,2007.
(責編:張宏民)