艾幫迪 陳果
(貴州航天智慧農業有限公司 貴州省貴陽市 550000)
隨著國家城市化程度越來越高,農村種地人口大幅度減少,人均可耕種農田面積將大幅度提高,農業發展由最早的家庭承包責任制往規模化、農場化、合作社模式化發展,現代化農業技術設備將逐步代替人力。雖然目前的水肥一體化系統能夠實現本地化控制,但是由于沒有云端化而導致需要勞動力下地操作。本文研究基于Flutter的水肥一體化手機系統設計與實現,采用普及的Android手機,利用遠程控制、信息采集、無線通訊等技術,實現了對水肥一體化系統的遠程控制,大大提升了運維人員的管理水平。
本系統分底層支撐物聯網平臺[1]和上層應用兩大部分,底層物聯網平臺[1]采用.NetCore開發框架Csharp開發語言開發,包含模塊:基于多租戶的用戶權限模塊[2];基于熱插拔式的設備插件適配器管理模塊[3];基于Quartz框架的任務管理模塊[4];基于Netty框架的設備通信模塊[5];基于EntityFramework框架的數據存儲模塊;基于ABP框架下的數據緩存模塊;基于Signal框架的即時通信模塊;基于SqlServer的數據庫設計;上層應用基于Android平臺Flutter開發框架,采用Dart開發語言進行開發。功能的包含:設備管理、任務管理[4]、報警管理、曲線報表、主題切換、視頻監控[6]等功能。系統架構包括上層應用、應用服務層、邏輯控制層、數據采集層、設備等。
網關作為物聯網平臺[1]與設備之間的通訊紐帶、物聯網系統中的信號轉發器,采用4G實現傳感器數據采集與設備控制。網關作為自動化控制系統的核心,是一個高級可編程智能控制器,由內置電源管理模塊,專用工業 AVR控制單元、數據存儲單元、RTU通訊模塊、物聯網通訊模塊、機殼等組成。通過DTU通訊模塊實現自動控制系統物聯網子網與遠端云服務器連接,完成自動控制系統物聯網子網與信息平臺控制模塊的數據及控制指令的傳遞。同時,能根據灌溉控制、泵站控制、水位控制、數據采集等要求,通過物聯網節點完成各種傳感器數據采集、傳送、儲存、顯示、上傳。最終以數據列表、曲線及圖形等形式顯示控制系統物聯網節點通訊狀態、設備的運行參數、執行元件(閥門、泵站、水肥機[7]開關等)工作狀態,為用戶提供方便的可操作和可視化界面。
節點是一個低級控制器,是控制系統內物聯網的節點。節點由供電管理模塊、物聯網通訊模塊、傳感器數據采集模塊、繼電器輸出模塊、節點機箱、電源組件、通訊天線等組成。節點輸入接口采用485串口,連接各類傳感器,輸出接口為繼電器輸出,連接控制電磁閥、泵站電機等執行元件。
節點分為控制設備和采集設備兩大類型節點,控制設備采用自有協議,自有協議組成規則為幀頭、類型、長度、功能碼、操作數量、編號、數據、CRC校驗碼、幀尾;采集設備采用傳統的Modbus協議。

圖1:通訊流程圖

圖3:告警流程圖

圖4:任務添加圖
本系統基于Android平臺Flutter開發框架,FlutterSdk版本為2.0.6,采用Dart開發語言進行開發,APP主要分為主界面、設備、任務及設置四大模塊。其中主界面是系統登錄后的首顯界面,包含有報警信息、設備統計、設備管理等;設備模塊包含設備列表、設備信息、設備控制、設備數據、設備任務、設備地圖等;任務模塊包含實時任務、定時任務、周期任務、歷史數據報表及曲線等;系統設置主要包含主題更換、Gprs編號申請、賬戶切換和版本更新。
3.1.1 APP通訊流程設計
APP在控制水泵、水肥機[7]、閥門等設備時,設備從執行指令開始到完成往往需要一定的時間,針對這個問題,設計了APP與物聯網平臺[1]主動通訊采用Http短連接方式,設備、物聯網平臺[1]、APP之間采用Socket長連接的方式來進行通訊,通信流程圖如圖1所示。
APP控制設備后,UI界面進行倒計時狀態,等待設備狀態指令回傳,UI界面接收到回傳指令更新界面的設備狀態,倒計時時間結束還沒收到狀態執行代表設備通訊失敗。設備在線狀態獲取過程是采用中心節點方式來配對APP賬戶與設備,設備與物聯網平臺[1]采用Socket長連接方式,設備每20秒上傳一次心跳包通過物聯網平臺[1]直接轉發給APP指定賬戶,通過一定時間內接收不到設備的心跳包來判斷設備是否在線。APP控制界面與設備是否在線如圖2所示。
3.1.2 告警設計
告警分為控制設備通訊失敗告警和傳感器設備采集數據到達設定值的上下閾值告警,用戶可選擇控制對應的水泵、無線閥門、水肥機[7]等設備進行工作,直到環境數據達到系統預設的數據范圍之內,告警結束。如圖3所示。
3.1.3 任務設計
在添加任務時,用戶選擇任務設備與任務類型,并設置相應參數,完畢提交后,由平臺統一管理調度。任務大致可分為三類:即時任務、延時任務以及周期任務,即時任務比較簡單就是在添加任務后立刻由平臺調度執行,并且只執行一次;定時任務,由用戶設置具體時間點,當到達這個時間點,由平臺自動執行任務,任務只執行一次;周期任務即用戶設定好調用時間周期,平臺按設定周期執行相應任務。另外,對于復雜任務還可以添加任務組功能,任務組可以實現多設備協同任務設置。如圖4所示。
本系統在貴陽市息烽縣南山驛站農場和黔南州貴定縣云霧鎮茶園進行了實際應用。使用安卓手機華為Mate40,采用Android10系統版本,登錄賬號即可運行程序。手機客戶端能夠通過GPRS模塊檢測和控制終端設備的運行狀態,包含水泵啟閉、水肥機[7]與田間無線閥門啟閉;氣象站、土壤墑情、壓力傳感器、液位變送器等設備的數據采集;攝像頭畫面實時觀看,可對設備進行實時任務、定時任務、周期任務的設置等功能,應用程序運行良好,滿足了水肥一體化[8]系統的功能需求。
本系統建成了一個集設備實時、定時、周期控制、傳感器數據采集、視頻監控[6]、設備管理、應用一體的手機遠程控制系統,實現了對多種設備的遠程無線控制與傳感器數據采集。在云霧鎮灌區應用運行結果證明,使用水溶性肥肥料量較傳統節約用肥50%左右、利用率從傳統的40%不到提高到80%以上,大大降低了土壤肥料污染的風險,系統運行時可靠性、實時性高,實現了對水肥一體化[8]系統的精準施肥,在農業水肥一體化[8]應用有較好的推廣示范作用。