趙麗+張信民+張寶芳+田會峰
摘要:針對傳統溫室系統存在的問題,設計1種基于微信平臺的智能溫室監控系統。利用微信公眾平臺進行遠程監控與管理,以新浪云服務器為中介,通過WiFi模塊實現單片機Arduino與微信服務器的數據交互。借助微信實現遠距離監控,這樣可以隨時隨地讀取溫室環境信息參數,然后根據相關參數,發送目標指令,啟動相應的調節設備如噴水機、送風機、加熱器、降溫器等,調節大棚內的環境參數,以達到最適宜條件,實現對溫室內設備的遠程操作。
關鍵詞:微信平臺;智能溫室;WiFi模塊;數據交換;遠距離監控
中圖分類號: YP277.2文獻標志碼: A文章編號:1002-1302(2017)23-0231-04
目前我國智能手機普及率較高,微信簡單、方便操作,利用手機微信平臺可以實時監控溫室系統。微信平臺與傳感器技術、網絡技術相結合,可實現溫室監控系統的無線化、網絡化、智能化。
1溫室監控系統總體方案設計
智能溫室控制系統采用分布式的體系結構,與以往的主機-終端模式相比,具有分布靈活、成本較低的優點。本系統采用計算機作為監控中心,主要負責溫室控制器上傳數據的存儲、顯示,可與多個溫室控制器組網通信,實現一機控制多溫室的集中管理模式。溫室控制器、數據采集模塊、開關量控制模塊都是基于單片機的嵌入式系統,計算機通過無線傳輸與溫室控制器通信,解決了現場布線不方便的問題,溫室控制器通過現場控制器局域網絡(controller area network,簡稱CAN)總線與數據采集模塊和開關量控制模塊通信。在本系統中每個溫室都有1個溫室控制器,可完成對數據的采集和控制,有獨立的液晶顯示器和鍵盤系統,可獨立地完成智能控制,同時把本溫室的各種環境參數和系統的運行狀態傳輸給上位機的計算機系統。溫室監控系統總結構如圖1所示。
2智能溫室系統硬件設計
2.1系統硬件組成與工作原理
智能溫室系統主要由單片機、串口WiFi、溫濕度、光照、CO2濃度、有機發光二極管(organic light-emitting diode,簡稱OLED)顯示、電機驅動等模塊構成[3],系統組成框架如圖2所示。
根據農作物最佳生長環境條件的需求,通過Arduino單片機[4-6]將傳感器感應檢測到的溫室大棚環境信息參數,如空氣、土壤溫濕度、二氧化碳濃度、光照度等參數,傳輸給顯示屏,再通過單片機實時顯示在微信上,同時將編程里設定好的農作物最佳生長環境參數與實際環境參數范圍進行比較,如果存在偏差,則可以通過由單片機控制的外圍設備(水泵、通風扇、遮陽簾、電磁閥、補光燈、暖風機等)工作來改善環境信息參數,當達到農作物最佳生長條件時,設備則會停止工作。
2.2智能溫室系統硬件電路設計
2.2.1串口WiFi模塊硬件設計本設計中的ESP8266WiFi模塊用于連接路由器,然后接收手機端發送的信號,對單片機進行控制。ESP8266是一款超低功耗的模塊,擁有業內極富競爭力的封裝尺寸和超低能耗技術,專為移動設備和互聯網的應用設計,可將用戶的物理設備連接到WiFi無線網絡上,進行互聯網或局域網通信,實現聯網功能。ESP8266可廣泛應用于智能電網、智能交通、智能家具、手持設備、工業控制等領域。溫室系統硬件連接情況如圖3所示。
2.2.2CO2模塊硬件設計CO2模塊選用的是MG811。MG811是常用于家庭環境二氧化碳探測的裝置,二氧化碳氣體敏感元件測試濃度的范圍為0~10 000 μmol/mol。CO2模塊原理如圖4所示。
2.2.3OLED模塊硬件設計與陰極射線管(cathode ray tube,簡稱CRT)相比,OLED具有驅動電壓低、體積小、質量輕等優點,OLED顯示屏的響應時間超過薄膜晶體管液晶顯示器(thin film transistor-liquid crystal display,簡稱TFT-LCD)液晶屏。TFT-LCD的響應時間為幾十毫秒,現在做得最好的TFT-LCD 響應時間也只有12 ms。而 OLED顯示屏的響應時間是幾微秒到幾十微秒。OLED與單片機的連接線如圖5所示。
3智能溫室系統軟件設計
3.1下位機軟件設計
智能溫室系統通過傳感器實時檢測溫室的信息,如溫濕度、CO2濃度、光照度等,當這些參數與系統設定參數有偏差,即不是農作物生長的最有利條件時,可以通過由單片機控制的外圍設備(水泵、通風扇、遮陽簾、電磁閥、補光燈、暖風機等)工作來改善環境信息參數,當達到農作物最佳生長條件時,設備就會停止工作。主程序流程如圖6所示。
3.2微信平臺的設計[7-8]
3.2.1訂閱號的建立(1)在瀏覽器地址欄中輸入https://mp.weixin.qq.com進入頁面后點擊右上角“立即注冊”鏈接,如圖7所示。
(2)輸入郵箱、密碼及驗證碼,勾選“我同意并遵守《微信公眾平臺服務協議》”進行注冊。
(3)登錄注冊時在填寫的郵箱里查找微信激活郵件,點擊其中的鏈接激活微信公眾賬號。
(4)根據需要選擇訂閱號、服務號、企業號。在這里選擇注冊訂閱號,如圖8所示。
(5)提交完成后進入微信公眾賬號信息注冊界面,填寫公眾賬號名稱、上傳賬號頭像、生成訂閱號二維碼等相關信息。
(6)為與新浪應用引擎(sina app engine,簡稱SAE)關聯,即實現通過在SAE中編寫程序來檢測微信接收端接收到的信息并發送相關內容,必須在訂閱號中設置為開發者模式來進行自定義菜單(控制訂閱號接收信息及發送內容)并獲取相關APP ID(應用ID)和APP secret,兩者的作用相當于密碼,只有知道兩者參數,才能在新浪SAE服務器中編寫程序,然后正確的關聯到該賬號。如圖9所示。endprint
3.2.2新浪云的搭建新浪SAE的地址為http://sae.sina.
com.cn/,進入界面選擇“注冊賬號”鏈接,開始進入注冊新浪云賬號流程,該流程與微信公眾賬號注冊流程一致,在此就不再累贅,填寫完賬戶信息之后,進入賬戶信息界面。
在控制臺界面,點擊“創建新應用”按鈕,SAE可以免費申請10個應用。創建后選擇二級域名和應用名稱,開發語言選擇超文本預處理器(hypertext preprocessor,簡稱PHP)編寫。SAE中的應用即為服務器,可以在服務器中編寫程序并建立數據庫,將其他軟件平臺鏈接到該應用對應的域名,即可根據程序反饋相應信息并改變或者記錄信息到數據庫內部。創建完成后生成的應用界面如圖10所示。在微信開發界面中填寫參數如圖11所示。URL為服務器域名,Token填寫為weixin,Token的作用是作為通信密碼在PHP編程中使用。
3.3.3數據庫的設計在SAE中建立數據庫的目的是當用戶發送控制信號到公眾平臺時,使數據庫中的參數發生改變,
然后通過WiFi模塊傳輸到單片機當中作為控制信號。數據庫內包含兩大部分內容,一方面為各種傳感器采集的信息,另一方面為控制量當前的狀態值(0位和1位)建立過程。
3.3.3.1傳感器信息數據庫建立在控制臺,選中左側菜單欄中的“數據庫與緩存服務”,進入界面之后點擊管理MySQL,進入數據庫建立界面如圖12所示。根據傳感器采集的參數信息,定義變量,建立數據如圖13所示。
3.3.3.2控制變量數據庫建立按照與傳感器數據建立一致的方式建立如圖14所示變量數據庫,各個變量代表的含義:TF為通風扇;YL為遮陽簾;NF為暖風機;BG為補光燈;PT為噴頭。變量類型選擇int,當變量值為1時, 表示該變量
控制下的機器為打開狀態;當變量為0時,表示該變量控制下的機器為關閉狀態。
3.3.4PHP語言編寫[9]點擊應用中的代碼管理,然后進入編寫代碼界面(圖15),當然也可以用專門的應用編譯軟件,如dreamweaver、zend studio。
編程步驟如下:(1)首先利用上述獲得的APP ID和APP secret獲取access_token進行代碼和微信公眾賬號的關聯,程序如下:
//curl模擬GET請求,獲取access_token
$appid=“wx1715b63756afcceb”;
$appsecret=“4c4b23176296723f43d0403b7307bac3”;
$access_token_url=“https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}”;
$access_token_arr=json_decode($outopt,true);
$access_token=$access_token_arr[‘access_token];
(2)當用戶發送“查詢參數”文本時,反饋信息內容編程,部分程序如下:
function receiveText($obj){
$content=$obj->Content;
$content1=“溫度”;//溫度查看
if (strstr($content,“查詢參數”))
{$con=mysql_connect(SAE_MYSQL_HOST_M.′:′.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
mysql_select_db(“app_mao18862601272”,$con);//修改數據庫名
$result=mysql_query(“SELECT*FROM sensor”);//“SELECT*FROM humidity”
(3)當用戶發送控制信號時改變數據庫變量如下程序所示:if (strstr($content,“打開通風扇”)){$con=mysql_connect(SAE_MYSQL_HOST_M.′:′.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
$dati=date(“h:i:sa”);
mysql_select_db(“app_mao18862601272”,$con);//修改數據庫名
$sql=“UPDATE switch SET timestamp=‘$dati,TF=‘1
WHERE ID=‘1”;//修改開關狀態值
if(!mysql_query($sql,$con))
{
die(‘Error: . mysql_error());
}
else{
mysql_close($con);
$reply=“好的!!/n已經打開!”;
}
}
(4)其他控制方式與(3)類似,當接收相關信息時,改變數據變量狀態,并且反饋給用戶界面。
4系統運行與改進
對系統進行測試發現,系統運行良好,微信平臺能正常實時顯示數據,同時能利用微信控制相應的調節設備,如水泵、暖風機等。本系統還有許多不足需要下一步的改進:(1)無線通信的傳輸速率在穩定性方面須要進一步加強,傳輸的距離受環境的影響較大,可根據情況采用有線的方式實現上位機和下位機的通信,改進無線傳輸模塊,采用具有自組網和路
由功能的ZigBee模塊進行數據無線傳輸。(2)可以選用更高級的微信公眾賬號,如企業號,讓微信二級菜單更加形象化,而不是使用測試號推廣應用產品。(3)在上位機上建立不同農作物的專家系統,可以根據不同作物的生長階段自動地修改系統控制參數以達到適宜作物生長的最佳環境,這可能與微信有一定的沖突。
5結論
設計1種以Arduino UNO R3單片機為控制核心,基于微信公眾平臺遠程監視和控制,將采集數據實時通過WiFi傳到新浪云服務器數據庫中,用戶實時通過移動終端遠程操作的現代農業智能監控系統。采用物聯網技術,突破傳統方式,方便及時獲得監控數據,便于溫室的管理。
參考文獻:
[1]馬增煒,馬錦儒,李亞敏. 基于WIFI的智能溫室監控系統設計[J]. 農機化研究,2011(2):154-157.
[2]秦琳琳,陸林箭,石春,等. 基于物聯網的溫室智能監控系統設計[J]. 農業機械學報,2015,46(3):261-267.
[3]盛夕清. 數字化溫室智能監控系統的設計與應用[J]. 農業網絡信息,2006(6):21-23.
[4]李永華,高英,陳青云. Arduino軟硬件協同設計實戰指南[M]. 1版. 北京:清華大學出版社,2015.
[5]李明亮. Arduino項目DIY[M]. 1版. 北京:清華大學出版社,2015.
[6]Margolis M. Arduino權威指南[M]. 2版. 北京:人民郵電出版社,2015.
[7]易偉. 微信公眾平臺搭建與開發揭秘[M]. 2版. 北京:機械工業出版社,2015.
[8]方倍工作室. 微信公眾平臺開發最佳實踐[M]. 2版. 北京:機械工業出版社,2015.
[9]劉中華,潘凱華. PHP編程寶典[M]. 北京:人民郵電出版社,2011.江蘇農業科學2017年第45卷第23期高雄,湯巖,陳鐵英,等. 基于圖像處理的甘藍蟲害識別研究[J]. 江蘇農業科學,2017,45(23):235-238.endprint