1 引言
在溫室農業生產過程中,溫度與濕度等環境參數直接影響到作物的生長。因此,環境的監測與控制是保證溫室生產優質高效的重要手段。而大部分的溫室監控系統采用PLC溫室控制和現場總線控制系統,這些系統具有布線費時、抗干擾性差和成本高的缺點,制約了其推廣應用。再加上目前針對特定地區(如我國最北部地區)氣候存在著溫度低、晝夜溫差大、光照強度大等條件研究較少,使得環境監測的可靠性、穩定性成為急需解決的問題。
結合實地考察與測量,引入ZigBee數傳技術到溫室栽培中,建立溫室環境監控系統,可以極大的節省勞動力,再加上低功耗、低成本等優勢,可廣泛應用于現代工農業自動控制,是信息技術在農業應用中的極佳選擇。
2 系統總體方案
為保證在監測過程中數據穩定,避免局部數據代表溫室數據,所以在每個溫室中將安裝多個ZigBee無線模塊傳感器節點,每個ZigBee無線模塊節點采集2種環境參數。總體系統架構如圖1所示。

圖l 溫濕度監測系統
每個溫室的不同地方都有ZigBee數據采集終端節點,作為移動數據檢測節點,每個ZigBee數據采集節點具有采集環境數據并發送給路由的功能。且在每個溫室包括一個路由器,用來轉發數據,并識別和自組網絡節點。
路由器將本溫室的傳感節點數據接收后并發送給協調器。協調器負責整個ZigBee無線網絡的建立和維護,收集ZigBee網絡中各個ZigBee無線模塊節點發出的信息,通過RS232接口把數據傳到上位機。PC主要負責處理數據并顯示,同時通過發送指令控制整個系統的運行。(如果監測節點距離太遠時還可以考慮增加一個Router節點用于路由轉發)。
3 系統硬件設計
整個系統硬件設計主要包括ZigBee網關(協調器)和終端節點2部分。
3.1 ZigBee網關節點
模塊網關節點包括CC2530模塊、電源模塊、串口模塊、USB接口、調試接口和3.3與5.0V電源轉換模塊。其中電源模塊通過電壓轉換盒給節點提供3.3V工作電壓。采用的是可;即聯科技的JL13 ZigBee2530模塊,選取支持最新的ZigBee協議,移植Z-Stack協議棧較為方便的CC2530射頻芯片。該溫濕度監測系統的硬件構成如圖2所示。

圖2 ZigBee網關硬件
3.2 ZigBee終端節點模塊
在終端傳感器節點中,除了網關節點原有模塊之外,只需在CC2530的I/0 增加一個傳感器。采用溫濕度傳感器SHT10。根據需要,終端傳感器節點分布在監測環境中,通過SHT10實時進行環境參數的ZigBee數據采集,經CC2530處理后由射頻芯片發送。電路如圖3所示。

圖3 SHT10連接
P1的2、3引腳對應CC2530的13、12引腳。為了確保芯片和電源系統工作的穩定性,采用BL8555低壓差線性穩壓器,在1.2V~5.0V輸出電壓范圍內給電路提供多種固定電壓。
4 系統軟件設計
整個監控系統軟件設計由ZigBee網關軟件和終端節點軟件2部分組成。協議棧的設計直接關系到整個網絡系統的運行。根據ZigBee星型網絡,協調器與終端設備在網絡中的功能、地位有所不同。ZigBee網關軟件和終端節點軟件這2部分都需要向其ZigBee無線模塊移植ZigBee協議棧(Z-Stack),尤其是與硬件底層密切相關的PHY層和MAC層的實現,它為上層通信應用提供API接口函數。溫濕度采集系統程序設計是基于Z-Stack協議棧的SampleApp實驗進行的,在協議棧的基礎上,實現無線網絡的組網及通信。在節點軟件設計中,為了方便下載與調試,加入了ISP編程接口,可以對采集的數據信息進行處理。
4.1 網關節點程序設計
ZigBee的通信方式主要有點播、組播和廣播3種。
在本設計中采用了周期定時廣播發送的方式。其主要負責將終端節點采集到的數據發送給網關節點(協調器),再由協調器通過RS232串口上傳到PC串口調試助手上。
協調器節點啟動后,根據自身的IEEE地址隨機確定一個PAN ID,并自動形成網絡,同時允許其他節點加入到該網絡,并負責給加入網絡的設備分配一個16位短地址、配置網絡參數、維護網絡正常運行、接收路由器和終端節點發送來的數據。協調器作為整個網絡的核心,主要任務即是搭建ZigBee數傳網絡,實現數據的發送與接收。發送部分協調器在建立網絡過程中,需要登記事件、定義任務ID、設置事件編號和設定發送周期。接收部分需要完成2個任務:讀取接收到的數據;把數據通過串口發送給PC。協調器節點工作流程如圖4所示。

圖4 協調器節點工作流程
4.2 傳感器SHT10程序設計
終端節點主要功能是加入已經存在的ZigBee數傳網絡,接收命令發送數據,但是不能轉發數據。溫濕度信息采集一般分為自動采集和手動采集。將終端定時器設定一個初值,然后啟動定時器,每次到達定時設定值時觸發中斷,開始測量溫濕度,測量結束后由CC2530將數據發送出去,此后終端進入低功耗模式,定時器重新裝載,計時繼續,周而復始,實現自動采集;手動采集是由PC發指令給指定終端,終端識別出該指令后啟動傳感器,開始溫濕度采集,將數據處理后再傳給PC。下面對傳感器節點主要代碼進行說明。
1)傳感器的啟動傳輸程序傳感器上電后,進入11 ms的“休眠”狀態。首先采用一個延時命令來完成系統初始化延時,然后由CC2530給SHTl0發送“啟動傳輸”時序,喚醒芯片。隨后,SHTl0接收由CC2530的微控制器發送的命令。
數據傳輸初始化由一組“啟動傳輸”時序來表示。用0表示低電平,l表示高電平時,當SCK時鐘為1時DATA翻轉為0,緊接著SCK變為0,在下一個SCK時鐘為1時DATA翻轉為1。這部分主要由void s_transstart(void)函數完成。
2)SHTlO寫數據時序系統采用按位寫的方式改變控制線SCK和DATA的狀態。對于SHT10,DATA在每個SCK時鐘下降沿之后寫入一位數據來改變狀態,并僅在SCK時鐘上升沿有效。數據傳輸期間,在SCK時鐘為高電平時,DATA必須維持穩定。否則可能出現寫數據時序的錯誤。寫數據時序主要由char s_write_byte(unsigned char value)函數來完成。
3)SHTl0讀數據時序讀數據程序主要由函數char s_read_byte(unsignedchar aek)完成。ack為讀數據確認控制字,初始變量i=0x80,val=0。當向SHTl0傳感器寫入測溫控制字0x03這個8位數時,系統將進行溫度的測量工作,當寫入0x05時,系統將進行相對濕度的測量。
4)通信復位程序假如與傳感器SHT10的通信發生中斷,可以通過隨后的信號序列將串口復位,保持DATA為1,觸發SCK時鐘9次或更多。在下1次指令執行前,發送1組“啟動傳輸”序列。這些程序序列只對復位串口有效,而狀態寄存器內容仍然保留。該復位程序由void s_connectionreset(void)函數來完成。
5)SHTl0溫濕度信息處理該程序讀取指針p_shiduzhi、p_wenduzhi中的濕度值和溫度值。該部分由void calc_shtl0(float *p_shiduzhi,float *p_wenduzhi)函數來完成。信息處理中設置SHTl0的工作精度為14位溫度和12位濕度測量,進行相對濕度計算。
至此,ZigBee數據采集傳感器節點程序設計完成。ZigBee數據采集傳感器節點作為溫室監測系統的基本組成單元,需要具備環境的參數采集、數據收發、數據處理、無線通信等功能。在實際的應用中只需將CC2530模塊+傳感器即可組成EndDevice節點或者Router節點。這2種節點均可與Coordinator直接通信進行數據采集,故將以上2種節點統稱為傳感器節點。
5 系統測試與分析
本測試階段是在實驗室環境中完成的。在實驗室內部署了3個ZigBee無線模塊,包括1個主節點,2個子節點。
首先需要按圖5所示將硬件系統連接起來,接著需要做的就是把源程序下載到無線ZigBee開發系統中并檢驗系統是否正常工作。

圖5 無線ZigBee開發系統下載連接示意
然后,采用星型網絡拓撲結構組成一個簡單的ZigBee網絡。這3個ZigBee數傳節點(協調器與PC連接,路由器增加ZigBee數傳網絡的傳輸距離,終端節點采集溫濕度信息)的短地址隨機分配。節點之間的通信距離為10 m,系統啟動后自動形成網絡。打開串口終端COM5(串口號根據硬件驅動接口的差別而有所不同),設置波特率為38 400 b/s、無奇偶校驗、8位數據位、1位停止位、無硬件流模式,終端節點發送來的溫濕度數據如圖6所示。

圖6 終端節點溫濕度數據
圖6是一個終端節點接入網絡時的通信情況。文中所采集的數據均為空氣中的溫、濕度信息,從圖中可以看出,終端設備的短地址為0x796F,溫濕度的精確度達到小數點的后4位。定時器周期為5000 ms,溫濕度間隔5 S采集數據一次,該系統實現了環境溫濕度數據采集功能。與系統采集數據時的實際情況相比較,其實際溫度測量誤差為0.8℃,相對濕度測量誤差為4%RH。由于在測試過程中會有一些硬件電路的內部因素存在,所以該系統測得的溫度比實際溫度值高0.7~1.2℃。這與SHTl0溫濕度傳感器技術指標吻合,可以實現系統溫濕度數據采集的功能。
6 結論
結合實地考察的溫室環境,采用ZigBee無線模塊技術應用于溫室監控系統。利用無線ZigBee數據采集傳感器網絡對溫室溫濕度等信息進行采集,設計了無線傳感器組網方案,完成了傳感器節點軟硬件設計,從而實現無線ZigBee數據數據采集與傳輸功能。測試試驗表明:采用ZigBee數傳模塊進行組網和數據采集,有較好的穩定性和良好的實用性。對不同規模的溫室,該系統可以靈活改變網絡規模,能夠滿足溫室監測系統的需要。由此可以得出:將ZigBee數傳技術為基礎的監測和控制系統引入到現代農業溫室監測系統是一個很好的解決方案。