摘 要: 根據農田環境的水、空氣、土壤環境的需求,設計了基于ZigBee無線傳感器網絡的智能灌溉系統。具體分析了系統功能,設計了總體結構。探討了基于.Net的智能灌溉系統上位機的功能需求、系統架構、實現方案及關鍵技術等。
關鍵詞: ZigBee; 無線傳感器; .Net; 智能灌溉系統; 上位機
中圖分類號:TP315 文獻標志碼:A 文章編號:1006-8228(2012)12-61-04
Design and implementation of PC software for intelligent irrigation system
Zhao Zhenqi
(Wuxi Machinery and Electron Higher Professional and Technical School, Wuxi, Jiangsu 214028, China)
Abstract: According to the requirements of water, air and soil in farmland environment, an intelligent irrigation system is designed, based on wireless sensor network ZigBee. The system function is analyzed and overall structure is designed. The function demand, system architecture, concrete implementation scheme and key technology of intelligent irrigation system principal machine based on .Net are discussed.
Key words: ZigBee; wireless sensor; .Net; intelligent irrigation system; PC
0 引言
在水資源緊缺的條件下,要實現灌溉農業的可持續發展,就需要灌溉更加精確智能。在不影響農作物生長發育的前提下,按照農作物需水要求準確及時地預報,并實現水量的自動控制,精確施予。目前,主要采用先進的物聯網技術與傳統農業生產相結合的辦法,通過研發先進的傳感器、灌溉控制設備、功能強大的計算機灌溉管理軟件等來實現科學灌溉,提高農業效益[1]。
由于全球氣候的惡化和水污染等原因,水資源短缺已經成為全球性的問題。在各大園林、農業及高爾夫灌溉項目中,越來越多的人認識到了節水灌溉的重要性。為了保證人工植被和農作物的正常生長,節水灌溉系統起到了至關重要的作用。
1 系統主要功能
我們設計并制作出具有監視、控制、環境數據的不間斷采集、整理、統計、繪圖功能的智能灌溉系統,以實現優化科學灌溉。該系統適用于庭院、園林、農田等灌溉場所。主要包括以下功能:
⑴ 根據CO2濃度自動控制電磁閥的開關,與CO2發生器配套使用;
⑵ 根據土壤的干濕度自動控制電磁閥的開關,與噴灌、微灌、滴灌等管道系統配套使用;
⑶ 根據空氣的干濕度自動控制電磁閥的開關,與加/降溫、加/除濕等設備配套使用。
2 總體結構設計
Zigbee是基于IEEE802.15.4標準的低功耗局域網協議。根據這個協議規定的技術是一種短距離、低功耗的無線通信技術。其特點是近距離、低復雜度、自組織、低功耗、低數據速率、低成本。主要適合用于自動控制和遠程控制領域,可以嵌入各種設備。
無線網關實現了ZigBee、GPRS、以太網、串口的網絡互聯和協議轉換,集成了符合ZigBee協議標準的JN5121系列通訊模塊,GPRS模塊,以太網接口,RS232接口。并具有通訊距離遠、抗干擾能力強、組網靈活等優點和特性;可實現一點對多點、多點對多點的串口設備間的數據透明傳輸,也可以根據用戶的需要定制軟件;可按照星形網絡、網狀網絡以及樹狀網絡組網。兼容FCC Part 15, ETSI ETS 300-328和日本的ARIB STD-T16標準。主要應用領域:煤礦/油田設備遠程監控、電力/水利設備遠程監控、遠程智能抄表/線纜取代、工業、農業自動化控制、樓宇、路燈智能控制[2]。
本系統設計由三個部分組成:監控中心、無線網關、無線路由節點。其中,監控中心主體是服務器和上位機;無線網關集成了符合ZigBee協議標準的JN5121系列通訊模塊,GPRS模塊,以太網接口,RS232接口,負責將各節點的數據發送給上位機處理,或接收上位機發送的指令并傳送給各節點;無線路由節點可以有多個,集成了CO2濃度傳感模塊、土壤的干濕度傳感模塊、空氣的干濕度傳感模塊和ARM模塊。系統組成框圖如圖1所示。
3 硬件原理
本系統的傳感節點硬件采用CC2530,如圖2所示。CC2530是用于2.4-GHz IEEE 802.15.4、ZigBee和RF4CE應用的一個真正的片上系統(SoC)解決方案。它能夠以非常低的總材料成本建立強大的網絡節點。CC2530結合了領先的RF 收發器的優良性能,業界標準的增強型8051 CPU,系統內可編程閃存,8-KB RAM和許多其他強大的功能。CC2530有四種不同的閃存版本:CC2530F32/64/128/256,分別具有32/64/128/256KB的閃存。CC2530具有不同的運行模式,使得它特別適應超低功耗要求的系統。運行模式之間的轉換時間短,進一步確保了低能源消耗[3]。
4 上位機的設計
4.1 功能需求
以太網通信方式是物聯網智能灌溉系統與計算機最主要的通信方式,采用UDP通信協議層,多線程方式進行數據交互。
上位機需要單獨具備以太網通信界面,除了實現物聯網智能灌溉系統以太網通信命令中列出的各項命令之外,還需要以下幾個重要功能。
⑴ 網絡拓撲,顯示物聯網智能灌溉系統所有已經注冊的設備節點物理區域視圖,主要用于直觀地反映設備節點的分布概況,用于設備故障定位。在視圖上,雙擊設備節點圖標能夠自動顯示該節點的實時數據信息;如果設備有故障或告警,節點圖標應該改變自身顏色警示操作人員。
⑵ 數據查詢,實時記錄物聯網智能灌溉系統的當前和歷史數據,提供用戶對數據按日期和設備標識查詢的功能。根據數據容量和數據訪問并發性的要求,建議數據庫采用專用的數據庫管理軟件,例如SQL Server 2005。
⑶ 數據分析,根據數據庫內查詢的數據繪制圖表(折線圖或餅圖等),顯示數據的分布和趨勢,提供用戶環境參數的歷史數據和做出灌溉決策的參考信息。
⑷ 分布式軟件,可以在多個計算機上同時打開上位機軟件,軟件之間相互協調,每個上位機作出的參數修改都能在其他上位機軟件上顯示出操作記錄,參數設置具有并發性,多個上位機軟件進行同一參數的設置不會沖突,參數設置完成后,其他上位機界面會同步更新。
4.2 上位機架構
本系統采用.Net三層架構。三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用邏輯上劃分為:表示層(USL)、業務邏輯層(BLL)、數據訪問層(DAL)。三層架構是一個支持可抽取、可替換的“抽屜”式架構,符合“高內聚,低耦合”的思想,所以這些層可以單獨開發,單獨測試[4]。具體的三層架構的分層結構圖,如圖3所示。
4.3 開發工具的選擇
.NET是一個開發平臺,它定義了一種公用語言子集(Common Language Subset, CLS)。.NET統一了編程類庫,提供了對下一代網絡通信標準,可擴展標記語言(XML)的完全支持,使軟件的開發變得容易。.NET與Windows平臺緊密集成,是一種面向網絡、支持各種用戶終端的開發平臺環境。
SQL SERVER 2005對SQL Server 2000中已經存在的特性進行了加強。加強了T-SQL(事務處理SQL),整合了符合.NET規范的語言(可以在數據庫管理系統中執行.NET代碼以充分利用.NET功能),使自身帶有支持對用戶自定義數據庫中存儲的數據進行加密的功能,生成多活動結果集(允許從單個的客戶端到數據庫保持一條持久的連接,以便在每個連接上擁有超過一個的活動請求)等。
基于上述原因,我們選擇.NET架構C#語言開發,作為系統開發的工具。開發人員必須掌握的預備知識和工具有:①UDP通訊編程(UDP包測試工具的使用);②多線程;③Chart控件的使用;④調試工具的使用。
5 數據庫表結構
數據庫名稱:ZigDB。主要包括設備狀態信息表(如表1所示)、設備信息表(如表2所示)、設備類別表(如表3所示)、系統設置表、權限表、用戶表等。
6 系統功能模塊
系統上位機模塊包括四個主要功能模塊:實時監測模塊、數據查詢分析模塊、權限管理模塊和系統管理模塊。每一個模塊中設計了若干子模塊。系統上位機功能模塊圖,如圖4所示。
[系統上位機模塊][實時檢測模塊][數據查詢模塊][權限管理模塊][系統管理模塊][設備分布概況][節點實時信息][讀寫上下閾值][實時圖形顯示][歷史數據查詢][圖表報表分析][角色管理][權限管理][用戶管理][備份還原數據][設備注冊維護][設備采樣維護]
圖4 系統上位機功能模塊圖
7 上下位機通信的方式
本系統主要采用兩種與上位機通信的方式。
⑴ 本地調試端口,采用RS232串口通信方式,用于和計算機直連后進行數據通信,同時,對智能灌溉系統進行設備注冊和網絡參數配置也使用該通信方式。
⑵ 遠程通信端口,采用以太網通信方式,用于和遠端計算機進行數據通信,主要功能是上報智能灌溉系統各傳感器的數據,以及獲取修改相關參數的上下限閾值。
8 主要窗口與關鍵技術
8.1 主要窗口
上位機軟件主要包括以下幾個窗口。
⑴ 主窗口(FormMain):主要包括監聽線程Run()方法,用于實現輪詢,先采樣放入緩沖區然后入庫。
⑵ 網絡拓撲窗口(FormNetworkTop):顯示AP結點拓撲位置,主要包括AP結點圖標的類型和位置,鼠標MouseDown()、MouseUp()、MouseMove()事件處理等。
⑶ 設備狀態窗口(FormOneEq):主要包括發送信息給傳感器sendThreshold()、跨線程訪問控件UpdateUI()、設置最大閾值和最小閾值。
⑷ 設備序列號的設置窗口(FormEqpSN):主要包括一些按鈕事件處理btnSave_Click()、btnDel_Click()、btnUpdate_Click(),實現對設備序列號的增刪改查的操作。
⑸ 數據查詢窗口(FormBrowseHisData):主要包括根據查詢條件顯示查詢結果和CHART圖表。涉及btnBrow_Click()、dgvBrowResult_DataBindingComplete()等事件處理。
8.2 關鍵技術
8.2.1 輪詢監聽
主程序(FormMain)中監聽線程Run()方法代碼,主要根據通訊協議的要求,通過輪詢方式,主要采用基于System.Net,System.Net.Sockets空間的UdpClient類實現UDP通信,向設備發送命令,從而獲取傳感器數據信息,然后解析數據(包括進制轉換),并記錄到數據庫表中。
部分代碼如下:
private void Run()
{ byte [] buffer=new byte[9];
while (true)
{ Try
{ strEqSn=StaticCommon.EqSn[ii];
buffer[0]=buffer[1]=0xef; //發送標識符
buffer[2]=0x06; //發送長度
//序列號組的規則為拆封設備序列號為3個字節
buffer[3]=Convert.ToByte(strEqSn.Substring(0,2));
buffer[4]=Convert.ToByte(strEqSn.Substring(2,2));
buffer[5]=Convert.ToByte(strEqSn.Substring(4,2));
buffer[6]=0x10; //命令字為單字節表示
//命令選項為命令字的輔助標記部分,區分同一類型命令的不同功能
//命令參數的長度不定,在設置類命令中為需要設置的具體參數數值
buffer[7]=0x00;
//校驗和為從應答標識符到應答參數包含的字節內數值累加和
byte x=0;
for (int i=0; i<8; i++) x+=buffer[i];
buffer[8]=x;
StaticCommon.lstbuffer[ii]=buffer; //送到臨時緩沖區
udp.Send(buffer, buffer.Length, ipp); //UDP方式發送
Thread.Sleep(200);
StaticCommon.lstrev[ii]=udp.Receive(ref ipp); //間隔0.2秒接受數據
AddData(StaticCommon.lstrev[ii]); //記錄到數據庫表
Thread.Sleep((int)StaticCommon.ssi.SpanTime);
//間隔用戶指定時間
ii++;
if (ii>=StaticCommon.EqSn.Count) ii=0;
//在指定的設備數中循環
}
catch (Exception ex) //異常處理
{……}
}
}
以上各傳感器數據信息參數的計算公式如下:
二氧化碳濃度:CO2數據=CO2數據1×256+CO2數據2
土壤濕度:SOIL數據=SOIL數據
日照度:SUN數據=SUN數據1×256×256×256+SUN數據2×256×256+SUN數據3×256+SUN數據4
空氣溫度:TEMP數據=TEMP數據-40
空氣濕度:HUMI數據=HUMI數據
8.2.2 跨線程訪問控件
在多線程編程中,經常要在工作線程中去更新界面顯示,而在多線程中直接調用界面控件的方法是錯誤的做法,一般采用Invoke和BeginInvoke解決這個問題。它們的共同之處是參數為delegate(委托),委托的方法是在Control的線程上執行的,也就是UI線程,這樣確保在多線程中安全地更新界面顯示。Invoke在擁有此控件的基礎窗口句柄的線程上執行指定的委托;而BeginInvoke則在創建控件的基礎句柄所在線程上異步執行指定委托。本系統主要采用Invoke方法。
實現輪詢式訪問多節點設備,調用UpdateUI方法多線程實時更新采樣數據,圖形化各設備各傳感器的參數狀態,如果當前某參數值超出上下限閾值范圍,及時顯示警告信息,并記錄在庫表中,供操作者進行分析。
while (true)
{ Try
{ this.Invoke(new System.EventHandler(UpdateUI),
StaticCommon.lstrev[StaticCommon.num]);
Thread.Sleep((int)StaticCommon.ssi.SpanTime);
}
catch (Exception ex) //異常處理
{…… } }
9 調試效果
在歷史數據查詢界面操作中,用戶根據條件查詢,圖形化顯示不同時間段及不同設備的CO2濃度、空氣溫濕度、土壤濕度和日照強度等歷史信息。數據查詢顯示結果圖,如圖5所示。
10 結束語
經過學校、企業、農業部門的共同努力,智能灌溉系統順利通過了驗收,在省農業廳進行了應用推廣,效果良好。在系統地、不間斷地采集環境數據后,上體機軟件對這些數據進行整理、統計、繪圖。使用者不但能實時掌握田間農作物的信息,而且能根據設置的參數自動控制設備,達到了農業的智能化和高效化。隨著我國移動互聯網的發展,我們將進一步研發本系統的智能移動客戶端應用軟件,使用戶更方便地掌控作物環境,更好地為農業現代化服務。
參考文獻:
[1] 顧建華,嚴國軍.遠程控制農田自動灌溉系統研制[J].軟件,2012.6:10
[2] 牛新征,梁帆,周明天.基于無線傳感器的物聯網網絡拓撲發現算法
研究[J].計算機科學,2012.36(4):118-122
[3] 倪瑛,傅大梅.基于無線傳感器網絡的溫室監測系統的設計[J].南京
工業職業技術學院學報,2010.4:39-41
[4] 傅仁軒.基于無線傳感器網絡的遠程自動抄表系統設計[J].現代電子
技術,2011.5:150-152