趙江武+高濤+陳教料+王彪
doi:10.15889/j.issn.1002-1302.2017.13.052[HT9.]
摘要:針對溫室遠程監控的需要,提出一種以Android平臺智能設備為終端的溫室監控系統設計方案。系統由基于控制器局域網絡(controller area network,CAN)總線的嵌入式子系統、溫室本地服務器和Android客戶端等3部分組成。基于CAN總線的嵌入式系統用于環境數據的采集和設備控制;溫室本地服務器采用Java開發的監控主程序來處理、傳輸溫室采集的數據,實現溫室的本地監控;Android客戶端采用基于Java開發的監控終端程序實現對溫室的遠程移動監控。結果表明,基于Android平臺的溫室監控系統能可靠地實現對溫室內環境的監控。溫室作業人員能夠通過本系統實現對溫室高效、優質調控。
關鍵詞:溫室;智能監控;Android;遠程移動
中圖分類號: TP277.2;S126文獻標志碼: A[HK]
文章編號:1002-1302(2017)13-0189-04[HS)][HT9.SS]
收稿日期:2016-04-05
基金項目:國家自然科學基金(編號:61374094)。
作者簡介:趙江武(1990—),男,浙江溫州人,碩士研究生,主要從事農業工程研究。E-mail:zhaogghg@126.com。
通信作者:陳教料,博士,副教授,主要從事農業工程研究。E-mail:jlchen@zjut.edu.cn。
[ZK)]
當前,隨著國內溫室大棚的迅速增多,為提高農作物生產效率,增加經濟收入,溫室大棚的自動化測量、自動化控制成為實現溫室優質、高產的發展方向。為實現低耗、高產、優質的現代溫室生產形式,研究對溫室內環境的高效調控是非常必要的,這對溫室控制技術和理論都提出了更高的要求。
隨著傳感器技術、計算機控制、網絡通信以及嵌入式系統等技術的快速發展,融合上述高新技術的溫室監控系統逐漸被應用到溫室監控領域[1-3]。馬增煒等設計了基于Wi-Fi網絡的溫室環境遠程監控系統[4]。溫室環境監控系統是提高溫室作物產量、降低溫室能耗、減少勞動力成本的關鍵技術,代表了溫室生產的核心競爭力。隨著移動互聯網技術和通信技術的發展,Android平臺已經成為智能手機中用戶量最多的操作系統,且能提供良好的人機界面[5]。已有一些研究者將Android系統應用到溫室環境的監控中,如陳美鎮等利用異構網絡來監控溫室網關數據[6]及陳大鵬等基于Android平臺設計的溫室環境遠程監控系統[7]等。
本研究設計一種基于Android平臺的溫室監控系統,該系統能實現溫室環境參數的自動采集、實時顯示及溫室現場設備的控制,并結合Android平臺的移動便攜性優勢,實現溫室的遠程移動監控。
1溫室監控系統方案
本研究的溫室監控系統總體上可分為3部分,即基于CAN總線的嵌入式系統、溫室本地服務器和Android客戶端(圖1)。各部分子系統相對獨立,溫室本地服務器作為系統的中間部分分別與處在系統兩端的嵌入式系統和Android客戶端交互,依賴聚合性較低,具有良好的可擴展性。
基于CAN總線的嵌入式系統主要負責溫室數據(如溫度、濕度、風速、光照、土壤水分等溫室信息)的采集,并對溫室環境各子系統的繼電器進行控制,繼電器的相應動作控制著溫室環境調控設備(風機、天窗、加熱器、濕簾等)的啟停。嵌入式系統分為4層:(1)各個溫室的傳感器和控制執行器的設備層,負責溫室數據、作物數據的采集和溫室的機構控制;(2)設備層節點的CAN接口模塊與嵌入式系統連接的CAN總線層,負責將分散在溫室各處的傳感器和環境控制執行器與嵌入式系統進行通信;(3)嵌入式系統的現場監控層;(4)溫室本地服務器的中央監控層。嵌入式系統通過局域網實現與溫室群中央服務器的TCP/IP協議通信。溫室環境由現場監控層嵌入式系統進行控制,也可以由溫室中央監控主機進行跨級監控。
[FK(W16][TPZJW1.tif][FK)]
溫室本地服務器主要負責數據的傳輸和處理。基于CAN總線的嵌入式系統向溫室本地服務器發送采集的數據并接受服務器的控制指令。本地服務器將采集的溫室數據進行存儲并通過網絡服務器發送至Android客戶端。Android客戶端通過移動網絡與服務器通信,溫室作業人員即可在溫室監控系統的Android客戶端上實現對溫室的遠程信息采集、數據查詢、設備控制等功能。
[WTHZ]2Android客戶端的設計與實現
Android是一種基于Linux的自由及開放源代碼的操作系統,主要用于移動設備,如智能手機和平板電腦。Android系統支持觸屏、音頻、視頻等功能,在眾多嵌入式系統領域被廣泛應用,如采用Android手機作為機器人操作控制器、飛行器攝像的顯示端、智能家居的控制端等[8]。考慮到Android平臺的普及性和Android應用人性化的人機交互界面等優點,采用具有Android平臺的手機和智能平板電腦作為溫室監控系統的遠程終端,以實現對溫室的遠程移動監控。
2.1客戶端設計
采用C/S模式設計溫室監控系統Android客戶端,通過移動網絡與服務器建立連接,以實現對溫室本地服務器數據庫的實時讀取和遠程控制模塊的訪問。圖2顯示了Android客戶端登錄模塊、主界面模塊、溫室環境數據模塊、溫室控制模塊的主要程序流程。[FL)]
[FK(W25][TPZJW2.tif][FK)]
[FL(2K2]Android客戶端的設計邏輯如圖3所示。主要分為4個層面。
2.1.1人機交互表層人機交互表層主要負責向用戶輸出溫室狀態信息并接受用戶輸入的控制信息。主要包括:(1)如用戶登錄、溫室監控數據顯示、視頻監控等的Activity類。(2)Actitity加載的XML布局文件,按鈕對應的ButtonView和文本對應的TextView等。(3)自定義控件和重寫控件包括列表ListView、彈出窗口Popwindow、自定義適配器Adapter等。endprint
2.1.2邏輯業務層邏輯業務層主要處理輸入和輸出的信息,處在人機交互表層和數據交換層之間,在數據交換和處理中起承上啟下的作用。主要包括:(1)在后臺運行的系統服務Service,主要負責收到網絡通信時的事件處理。(2)負責在Activity和Service之間發送廣播和通知的Broadcast。(3)對人機交互層輸入控件的監聽,如當用戶按下按鈕時,監聽到輸入控制信息并采取相應的邏輯操作。
2.1.3數據訪問層主要負責處理用戶本身操作產生的控制數據和從服務器獲取的遠程數據,這些數據需要在Android設備本地存儲,數據量大,數據類目多。數據訪問層采用關系型數據庫MySQL,支持多線程,優化SQL查詢方法,有效地提高查詢速度。實現用戶查找數據表的選擇、插入、更新和刪除的操作。
2.1.4通信層負責Android客戶端與服務器之間的通信,主要包括:(1)Socket套接字通信方式。(2)傳輸控制協議(transmission control protocol,TCP)與服務器進行長連接指令操作,通過服務器和客戶端之間一問一答的形式實現數據交換。(3)無連接的用戶數據報協議(user datagram protocol,UDP)用于處理視頻、語音等數據包。相較于TCP協議,UDP負載比較小,可以避免流量堵塞。
2.2服務器程序設計
溫室本地服務器根據采集到的環境信息和植物的生長需求對環境進行調控,具有對溫室數據存儲、傳輸和調控管理功能。
服務器軟件采用C/S架構,基于Java和結構化查詢語言(structured query language,SQL)開發,適用于Windows XP、Windows 7等操作系統。監控數據和控制指令等數據通過本地SQL Server數據庫進行存儲,經服務器一同傳送至Android客戶端。當溫室監控系統使用Android作為監測控制端時,Android客戶端實時接收來自服務器的溫室信息數據,刷新客戶端顯示。當接收到用戶的控制操作時,Android客戶端把控制指令和數據通過服務器發送給溫室現場設備層,進行具體的溫室環境控制,以實現Android端對溫室的遠程控制。
2.3服務器通信
Android客戶端需要顯示如溫室內外溫度、濕度等的溫室狀態,另外需要向溫室服務器發送控制指令,這些功能的實現需要客戶端與服務器之間的遠程通信。本研究設計的服務器與Android客戶端采用Socket通信機制。Socket的主要特點是數據丟失率低、使用簡單且易于移植。在雙方建立起連接后可以直接進行數據傳輸,在連接時可實現信息的主動推送,而不需要每次由客戶端向服務器發送請求[9]。網絡由下往上分為物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。IP協議對應于網絡層,TCP協議對應于傳輸層(圖4)。而Socket則是對TCP/IP協議的封裝和應用,本身并不是協議,而是一個調用接口(API)。服務器程序通過調用Socket把數據通過TCP的面向連接與客戶端進行數據交互。
[FK(W8][TPZJW4.tif][FK)]
客戶端進程與服務器進程之間通信的Socket的連接過程可以分為4個步驟(圖5)。
服務監聽:服務器端Socket()并不連接具體的客戶端Socket(),而是處于等待連接、實時監控連接端口的狀態。服務器在創建Socket()后,要指派監聽的端口等待客戶端請求,因此需要綁定端口號的操作Bind()。綁定之后,服務器處于監聽狀態,設置1個監聽程序Listen(),等待客戶機連接綁定的端口。Accept()方法用于接收客戶端的數據。在沒有數據進行接收時處于堵塞狀態,一旦接收到客戶端的連接請求Connect()后,即成功建立通信。
客戶端請求:由客戶端的套接字提出連接請求Connect(),要連接的目標是服務器端的Socket()。為此,客戶端的Socket()必須先描述它要連接服務器的Socket(),指定服務器端Socket()的IP地址和端口地址,然后向服務器端套接字提出連接請求Connect()。
連接確認:當服務器端監聽到或者接收到客戶端的連接請求Connect時,響應客戶端的請求執行Listen(),建立一個新的線程,把服務器端Socket()的描述發給客戶端。一旦客戶端確認描述,連接即建立完成。而服務器端Socket()繼續處于監聽狀態,以接收其他客戶端套接字的連接請求。
在成功建立通信后,可以通過Read()和Write()進行收發數據的讀寫。在服務器Read()后,進行相應的處理,把處理結果Write()給客戶端,客戶端Read()到服務器發送的應答數據,客戶端與服務器之間即完成一次通信。繼續通信則執行Write()和Read()即可,通信結束則執行Close()斷開連接。
[FK(W16][TPZJW5.tif][FK)]
[WTHZ]3Android客戶端開發與調試
在Windows系統下利用Eclipse+SDK(Software development kit)+ADT(Android development tools)進行溫室監控系統Android客戶端的開發,將開發完成生成的APK(Android package)安裝到Android手機或平板電腦中。
打開應用,在登錄界面(圖6-a)輸入用戶賬號、密碼和服務器對應的IP地址和端口后,登錄成功則界面跳轉到圖6-b所示的溫室監控系統主界面。點擊主界面下列的按鈕跳轉到相應的功能界面,主要的功能有溫室環境監控數據的查看、溫室遠程控制、作物生態信息的實時查看、歷史信息回顧和用戶個人信息設置等功能。圖6-c所示的溫室狀態信息為溫室本地設備層各CAN節點傳感器所采集的實時數據,包括室內溫度、濕度、CO2濃度、室外溫度、風速和光照度等。通過選擇勾選節點,客戶端會每隔5 min實時刷新該界面或者用戶點擊刷新按鈕手動刷新數據。選中對應的狀態數據再點擊詳情按鈕,即會彈出各觀測點的詳細數據。程序接收到刷新任務,向服務器發送TCP請求,并設置新的等待進程和監聽任務。當程序接受到服務的TCP應答返回時,將返回數據進行解析并存儲,然后刷新對應的溫室環境信息。[FL)]endprint
[FK(W17][TPZJW6.tif;S+2mm][FK)]
[FL(2K2]圖6-d所示的是用戶實現遠程控制的溫室遠程控制界面,通過選擇各CAN節點的開啟關閉狀態,進行是否遠程控制的選擇。詳細的控制操作通過點擊控制按鈕跳轉到相應的控制子系統,如灌溉系統、通風系統、光照系統、加熱系統、補光系統等。點擊查看以往數據按鈕,則會跳出歷史溫室內環境數據等信息。通過歷史溫室觀察數據,用戶可以更好地制定溫室控制策略,以達到相應的生產指標和經濟效應。
4結論
本研究搭建的基于Android平臺的溫室監控系統,實現了對溫室內環境的本地以及遠程監控,利用Android移動設備的可移動性和實時數據傳輸優勢,避免了人工管理溫室無法實時監控溫室的問題。根據監控數據制定相應的溫室控制策略,可以實現溫室的優質高效調控。
[HS2]參考文獻:
[1][ZK(#]韓華峰,杜克明,孫忠富,等. 基于ZigBee網絡的溫室環境遠程監控系統設計與應用[J]. 農業工程學報,2009,25(7):158-163.
[2]張猛,房俊龍,韓雨. 基于ZigBee和Internet的溫室群環境遠程監控系統設計[J]. 農業工程學報,2013,29(增刊1):171-176.[HJ1.93mm]
[3]秦琳琳,陸林箭,石春,等. 基于物聯網的溫室智能監控系統設計[J]. 農業機械學報,2015,46(3):261-267.
[4]馬增煒,馬錦儒,李亞敏. 基于WIFI的智能溫室監控系統設計[J]. 農機化研究,2011(2):154-157,162.
[5]韓劍,莫德清. 基于Android與GSM的溫室大棚遠程監控系統[J]. 江蘇農業科學,2015,43(4):397-399.
[6]陳美鎮,王紀章,李萍萍,等. 基于Android系統的溫室異構網絡環境監測智能網關開發[J]. 農業工程學報,2015,31(5):218-225.
[7]陳大鵬,毛罕平,左志宇. 基于Android手機的溫室環境遠程監控系統設計[J]. 江蘇農業科學,2013,41(9):375-379.
[8]李娜,周峰. 基于Android平臺軟件開發方法的研究[J]. 信息通信,2015(6):38-39.
[9]倪凱,夏海波,魏建明,等. 一種移動終端遠程數據訪問控制方法[J]. 計算機應用與軟件,2012,29(6):230-232.endprint