摘? 要:針對傳統(tǒng)農(nóng)業(yè)灌溉無法精確計算供水量與遠程監(jiān)測問題,提出并實現(xiàn)了一種基于Android手機平臺,以STM32F103C8T6為控制終端,對土壤的濕度和空氣的溫濕度進行采集,并能對灌溉水泵進行遠程控制,以智能手機APP作為移動控制終端查看實時環(huán)境數(shù)據(jù),并通過阿里云下發(fā)相應(yīng)的控制指令給控制終端模塊,控制終端通過繼電器控制灌溉設(shè)備供水。經(jīng)實驗表明,本系統(tǒng)穩(wěn)定可靠,實時監(jiān)控農(nóng)田環(huán)境數(shù)據(jù),達到節(jié)約人力、精準灌溉的目的。
關(guān)鍵詞:ESP8266;STM32;Android;精確灌溉
中圖分類號:TP273? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)17-0167-05
Abstract:The problem of traditional agricultural irrigation that cant accurately calculate water quantity and remote monitoring,this paper proposes and implements a mobile phone platform based on Android,with STM32F103C8T6 as the control terminal,the soil moisture and air temperature and humidity are collected,and the irrigation pump can be remotely controlled. The APP is used as the mobile control terminal to view the real-time environmental data,and send corresponding control instructions to the control terminal module through Alicloud,the water supply of irrigation equipment controlled by relay. Experiments show that the system is stable and reliable,real-time monitoring of farmland environmental data,to achieve the purpose of energy-saving manpower,precision irrigation.
Keywords:ESP8266;STM32;Android;precision irrigation
0? 引? 言
農(nóng)作物灌溉是農(nóng)業(yè)生產(chǎn)的重要組成部分,根據(jù)水利部全國總體灌溉發(fā)展規(guī)劃,到2020年底,我國灌溉面積達到7 330萬公頃,灌溉用水量在3 720億m3,農(nóng)業(yè)缺水量每年可達300億m3,因此為保證糧食安全,必須實現(xiàn)農(nóng)業(yè)節(jié)水灌溉。傳統(tǒng)的農(nóng)田灌溉方式容易導(dǎo)致水資源浪費,無法精確控制灌溉水量,如何解決傳統(tǒng)農(nóng)田灌溉利用率低,實現(xiàn)科學精準灌溉,是當前現(xiàn)代化農(nóng)業(yè)亟須解決的問題。隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展和應(yīng)用,湖北省某科技有限公司委托我校科技團隊進行節(jié)水灌溉研究,解決農(nóng)業(yè)生產(chǎn)技術(shù)難題,促進科技成果轉(zhuǎn)化為實際生產(chǎn)力。本文提出并設(shè)計了一種基于Android手機平臺的現(xiàn)代化農(nóng)田智能灌溉系統(tǒng),利用單片機技術(shù)和阿里云平臺相結(jié)合,為農(nóng)業(yè)生產(chǎn)人員提供農(nóng)田環(huán)境數(shù)據(jù)的實時數(shù)據(jù),可遠程控制水泵和施肥器,實現(xiàn)對農(nóng)田的遠程監(jiān)控和精準灌溉的智能控制系統(tǒng)。
本系統(tǒng)以Wi-Fi通信模塊(ESP8266-12f)作為通信設(shè)備,以STM32F103C8T6為控制終端,基于阿里云平臺,系統(tǒng)主要包括感知層、網(wǎng)絡(luò)層和應(yīng)用層三部分,利用物聯(lián)網(wǎng)技術(shù)建立土壤環(huán)境監(jiān)控系統(tǒng),通過土壤濕度傳感器、溫濕度傳感器、繼電器、水泵組成整個硬件系統(tǒng),農(nóng)戶通過手機APP能夠隨時查看土壤環(huán)境數(shù)據(jù),實現(xiàn)自動或者手動灌溉的功能。
1? 系統(tǒng)框圖
整個系統(tǒng)分成三個組成部分,分別為控制終端、阿里云平臺上的虛擬設(shè)備、手機APP程序。系統(tǒng)功能如圖1所示。
本系統(tǒng)分為三層結(jié)構(gòu),即感知層、網(wǎng)絡(luò)層、應(yīng)用層。感知層主要是利用傳感器對農(nóng)田的土壤環(huán)境等數(shù)據(jù)進行采集,從而作為整個智能灌溉系統(tǒng)的數(shù)據(jù)來源,網(wǎng)絡(luò)層主要將感知層采集到的數(shù)據(jù)通過網(wǎng)絡(luò)傳送到應(yīng)用層,主要以Wi-Fi通信模塊接入Internet與阿里云平臺通信,應(yīng)用層主要對接收的數(shù)據(jù)進行處理,并將數(shù)據(jù)下發(fā)到農(nóng)業(yè)生產(chǎn)人員,通過手機APP遠程控制水泵進行灌溉。
2? 硬件系統(tǒng)設(shè)計
本系統(tǒng)通過光照強度、溫濕度、土壤濕度等采集農(nóng)田土壤環(huán)境數(shù)據(jù),把采集到的數(shù)據(jù)經(jīng)過STM32F103C8T6處理后,通過無線網(wǎng)絡(luò)將數(shù)據(jù)上傳到阿里云平臺,云平臺實時將數(shù)據(jù)推送到用戶手機端APP,用戶可以實時監(jiān)控環(huán)境數(shù)據(jù)并可以控制水泵等機械設(shè)備進行工作進行灌溉施肥,同時用戶可以設(shè)置自動工作模式,在此模式下單片機可以根據(jù)環(huán)境數(shù)據(jù)自動控制各種機械設(shè)備工作。本系統(tǒng)硬件劃分為四個模塊:傳感器采集模塊、MCU單片機控制模塊、Wi-Fi通信模塊和機械設(shè)備控制模塊。系統(tǒng)結(jié)構(gòu)如圖2所示。
2.1? 單片機控制模塊
本系統(tǒng)使用的是STM32F103C8T6 32位Cortex-M3 CPU,最高工作頻率72 MHz,1.25 DMIPS/MHz,片上集成512 KB的Flash存儲器,3個高速12位的A/D轉(zhuǎn)換器,多達37個IO口,3組獨立的異步串行通信接口,本設(shè)計需要使用一組串口連接Wi-Fi通信模塊ESP8266,通過串口發(fā)送AT指令給Wi-Fi通信模塊進行網(wǎng)絡(luò)配置和通信。
2.2? Wi-Fi通信模塊
本設(shè)計的Wi-Fi通信模塊采用的是安信可ESP8266-12f該模塊在較小尺寸封裝了超低功耗32位微型MCU,帶有16位精簡模式,集成Wi-Fi MAC/BB/RF/PA/LNA板載天線,支持標準的IEEE802.11b/g/n協(xié)議,完整的TCP/IP協(xié)議棧,以最低成本提供最大實用性。ESP8266-12f支持三種組網(wǎng)模式:SoftAP模式、Station模式、SoftAP+Station模式。
(1)Station模式:ESP8266-12f通過路由器連接互聯(lián)網(wǎng),手機或電腦通過互聯(lián)網(wǎng)實現(xiàn)對設(shè)備的遠程控制;
(2)SoftAP模式:ESP8266-12f作為熱點,實現(xiàn)手機或電腦直接與模塊通信,實現(xiàn)局域網(wǎng)無線控制;
(3)Station+SoftAP模式:兩種模式的共存模式,即可以通過互聯(lián)網(wǎng)控制可實現(xiàn)無縫切換,方便操作。
Wi-Fi通信模塊的作用是讓整個控制系統(tǒng)與網(wǎng)絡(luò)連接,完成無線信號與串口信號之間的轉(zhuǎn)換。模塊可通過AT指對系統(tǒng)參數(shù)進行更改配置,例如以“AT+CWMODE=3\r\n”指令設(shè)置模塊工作模式為Station+SoftAP模式。這里我們的組網(wǎng)可以是SoftAP+Station模式,系統(tǒng)既可以通過手機直連也可以通過無線路由器連接達到遠程控制。
2.3? 傳感器模塊
傳感器模塊包括光照強度、溫濕度、土壤濕度等指標的實時監(jiān)測。各個傳感器模塊和STM32F103C8T6通過GPIO端口連接實時采集土壤環(huán)境數(shù)據(jù),傳感器介紹如下:
(1)土壤濕度傳感器是一種用于測量土壤水分的儀器,它的工作原理是由LM393 IC組成一個電壓比較器,根據(jù)土壤中的水量,探頭中的電導(dǎo)率會發(fā)生變化,當土壤中含水量較少,則探頭的電導(dǎo)率較小,比較器輸出高電平,反之,比較器輸出低電平。傳感器內(nèi)置穩(wěn)壓芯片,支持3.3 V~5.5 V寬電壓工作環(huán)境,可以輸出電壓,數(shù)字信號。將傳感器連接到STM32F103C8T6的PA0接口,采用單總線數(shù)據(jù)方式。
(2)光照強度傳感器采用GY-302模塊,采用原裝BH1750FVI芯片,內(nèi)置16 bit AD轉(zhuǎn)換器,數(shù)據(jù)輸出范圍0~ 65 535的數(shù)字量,支持3.3 V~5 V電壓工作環(huán)境,廣泛應(yīng)用于室內(nèi)光照檢測、蔬菜、溫室大棚等場所。模塊通過I2C接口與STM32F103C8T6連接,采用同步串行總線訪問方式。
(3)溫濕度傳感器采用DHT11模塊,濕度測量范圍20%~95%,溫度測量范圍0 ℃~50 ℃,工作電壓3.3 V~ 5 V,將DATA輸出口連接STM32F103C8T6的PA1口。
2.4? 水泵控制模塊
此控制模塊是調(diào)節(jié)土壤灌溉的硬件設(shè)備,包括電源、5 V繼電器和水泵等組成。當傳感器模塊采集到的土壤數(shù)據(jù)經(jīng)過模型系統(tǒng)的預(yù)判需要調(diào)節(jié)后,由應(yīng)用層將處理結(jié)果以報警的方式推送到手機APP上,提醒用戶需要及時進行處理。當傳感器模塊采集到的數(shù)據(jù)達到正常值范圍,服務(wù)器將發(fā)送信息到手機APP上,撤銷報警狀態(tài),并關(guān)閉水泵的電源。
2.5? 精確灌溉水量算法
為了獲得較為精確的計算灌溉水量,灌溉有兩個基本過程,一個是水流推進過程,二是水流消退過程。在推進和消退之間的時間間隔就是入滲時間T如圖3所示。
具體成數(shù)需根據(jù)坡度、土壤透水性、灌水定額等參數(shù)確定,公式為:
其中,α為土壤指數(shù),輕質(zhì)土壤值小,重質(zhì)土壤值大,取值范圍0.3~0.8;K0為土壤的平均入滲速度(cm/h),指在土壤表面在大氣壓下的水層單位時間內(nèi)通過單位面積土壤的水量。輕質(zhì)土壤平均入滲速度為7 cm/h~10 cm/h,重質(zhì)土壤平均入滲速度為3 cm/h~7 cm/h;M為灌溉用水定額,它是灌溉制度的主要內(nèi)容之一,也是工程設(shè)計、水資源合理利用的主要依據(jù),如表1所示,此表是《湖北省地方標準DB 42/T 1528.1-2019》,本系統(tǒng)可以根據(jù)農(nóng)作物類別選擇相應(yīng)的M值。
在自動灌溉模式下,系統(tǒng)會根據(jù)農(nóng)田種植作物設(shè)定灌溉用水額定值M,平均入滲速度K0,以及土壤指數(shù)α的值,根據(jù)公式計算灌溉時間T(小時),單片機通過定時器來控制水泵的繼電器吸合時間,實現(xiàn)農(nóng)田的精確灌溉,節(jié)水灌溉。
3? 軟件設(shè)計
3.1? 單片機程序開發(fā)
硬件電路如圖4所示。
系統(tǒng)上電后首先進行初始化,之后通過AT指令配置Wi-Fi通信模塊的網(wǎng)絡(luò)連接,如果網(wǎng)絡(luò)連接成功,再讀取溫濕度、光照強度、土壤濕度傳感器的數(shù)據(jù),通過Wi-Fi通信模塊將數(shù)據(jù)上傳到阿里云端,Android手機APP端通過無線網(wǎng)絡(luò)連接到阿里云服務(wù)器接收數(shù)據(jù),如果系統(tǒng)設(shè)置為手動模式,用戶通過按鈕控制繼電器的開關(guān)狀態(tài)控制水泵工作,進行灌溉,如果系統(tǒng)為自動模式,STM32F103C8T6將更加程序設(shè)定的土壤精確灌溉算法進行判斷,如果測量的土壤濕度低于設(shè)定閾值,系統(tǒng)自動控制繼電器閉合開啟水泵開始灌溉,并發(fā)送報警信息到云服務(wù)器,直到測量的土壤濕度值高于設(shè)定閾值為止,控制繼電器停止水泵工作,關(guān)閉報警信息。
3.2? 手機APP開發(fā)
手機端APP程序采用Android Studio開發(fā),手機界面如圖5所示,通過MQTT協(xié)議來和阿里云服務(wù)器進行通信,MQTT具有開發(fā)簡單,低開銷、低帶寬占用率的優(yōu)點,廣泛應(yīng)用于物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、智能硬件等方面。
MQTT(消息隊列遙測傳輸協(xié)議)是一種基于消息發(fā)布/訂閱模式的輕量級傳輸協(xié)議,該協(xié)議基于TCP/IP協(xié)議之上,MQTT協(xié)議最大優(yōu)點在于,以極少的代碼和有限的帶寬,為連接遠程設(shè)備提供實時可靠的通信服務(wù)。在通信過程中,MQTT協(xié)議中有三種身份:發(fā)布者、代理服務(wù)器、訂閱者。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時是訂閱者。
在本系統(tǒng)Android手機端APP程序使用MQTT協(xié)議與阿里云MQTT服務(wù)器進行通信。MQTT傳輸?shù)南⒎譃椋褐黝}(Topic)和負載(payload)兩部分:
(1)Topic,可以理解為消息的類型,消息發(fā)布者通過某個Topic發(fā)布消息,訂閱者訂閱后,就會收到該主題的消息內(nèi)容(payload);
(2)payload,可以理解為消息的內(nèi)容,即訂閱者具體要使用的內(nèi)容。在本項目中,采用ICA標準數(shù)據(jù)格式Alink JSON數(shù)據(jù)格式。
首先登錄阿里云平臺獲取阿里云MQTT服務(wù)器的地址、端口號、Client ID和用戶驗證信息,通過這些數(shù)據(jù)進行MQTT的初始化和連接。下文為部分代碼:
public class MainActivity extends AppCompatActivity {
private final String TAG = "AiotMqtt";
final private String PRODUCTKEY = " a1G7oNbkfh6";
final private String DEVICENAME = "Irrigation";
final private String DEVICESECRET = "";
final private String PUB_TOPIC = "/" + PRODUCTKEY + "/" + DEVICENAME + "/user/update";
final private String SUB_TOPIC = "/" + PRODUCTKEY + "/" + DEVICENAME + "/user/get";
/ * 阿里云Mqtt服務(wù)器域名 */
final String host = "tcp://" +PRODUCTKEY + ".iot-as-mqtt.cn-shanghai.aliyuncs.com:443";
private String clientId;
private String userName;
private String passWord;
MqttAndroidClient mqttAndroidClient;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* 獲取Mqtt建連信息clientId,username,password */
AiotMqttOption aiotMqttOption = new AiotMqttOption().getMqttOption(PRODUCTKEY,DEVICENAME,DEVICESECRET);
}
發(fā)布訂閱消息:如果想通過手動方式控制水泵的工作狀態(tài),通過按鈕的方式來實現(xiàn),當按下按鈕時將發(fā)送Topic消息,指令必須按照ALink規(guī)范,云端收到上報的消息后,通過透傳下發(fā)到單片機,單片機收到指令后控制繼電器的閉合狀態(tài),達到控制水泵的工作。下文為部分代碼:
public void subscribeTopic(String topic){
mqttAndroidClient.subscribe(topic,0,null,new IMqttActionListener(){
@Override
public void onSuccess(IMqttToken asyncActionToken){
Log.i(TAG,"subscribed succeed");
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception){
Log.i(TAG,"subscribed failed");
}
});? ? ? }
public void publishMessage(String payload){
if (mqttAndroidClient.isConnected()== false){
mqttAndroidClient.connect();
}
MqttMessage message = new MqttMessage();
message.setPayload(payload.getBytes());
message.setQos(0);
mqttAndroidClient.publish(PUB_TOPIC, message,null,new IMqttActionListener(){
@Override
public void onSuccess(IMqttToken asyncActionToken){
Log.i(TAG,"publish succeed!");
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception){
Log.i(TAG,"publish failed!");
}
});? ? ?}
根據(jù)實驗,以江漢平原區(qū)三類農(nóng)作物灌溉為例,如表2所示,采用智能灌溉方式可比人工灌溉節(jié)約用水20%以上,顯然有明顯的水資源節(jié)約效果,節(jié)省人力、降低成本,體現(xiàn)了科技成果轉(zhuǎn)化為實際生產(chǎn)力。
4? 結(jié)? 論
本文提出一種基于Android手機平臺的智能灌溉控制系統(tǒng)的設(shè)計方案,方案中的控制終端能夠?qū)崟r監(jiān)測作物土壤濕度和環(huán)境溫度、光照強度,將傳感器信號通過Wi-Fi通信模塊上傳到阿里云平臺,農(nóng)業(yè)人員能夠準確實時地了解到當前系統(tǒng)中各個區(qū)域節(jié)點的工作狀態(tài),并根據(jù)水流灌溉控制算法及時啟動水泵自動灌溉,非常有利于農(nóng)作物的生產(chǎn)。一旦出現(xiàn)通信中斷、水壓異常等,能夠及時地反映到控制中心,通過語音報警或者手機APP通知消息等方式立即通知相關(guān)人員進行維修,提高了整個系統(tǒng)的可靠性。另外系統(tǒng)采用Wi-Fi技術(shù),網(wǎng)絡(luò)結(jié)構(gòu)簡單,田間布設(shè)靈活,提高了自動灌溉的實用性及對灌溉水量的精確控制,減小了勞動量、導(dǎo)線和管路敷設(shè)費用,且無須人為操作,方便大面積安裝、維護和系統(tǒng)回收,對水稻、大豆和蔬菜三類農(nóng)作物的實驗表明,本系統(tǒng)能獲得明顯的節(jié)水效果,有助于對農(nóng)田灌溉的高效、節(jié)能管理。
參考文獻:
[1] 李志博,田軍倉.農(nóng)田智能灌溉系統(tǒng)的研究進展 [J].寧夏工程技術(shù),2019,18(3):275-279.
[2] 韓洪坤.基于無線終端的遠程農(nóng)業(yè)灌溉系統(tǒng)設(shè)計與實現(xiàn) [D].鄭州:華北水利水電大學,2016.
[3] 王寧.基于無線傳感器網(wǎng)絡(luò)的智能灌溉系統(tǒng)研究 [D].大連:大連理工大學,2014.
[4] 高麗彬,金焱.基于移動互聯(lián)網(wǎng)的智能灌溉系統(tǒng)設(shè)計與開發(fā) [J].信息與電腦(理論版),2018(15):107-108.
[5] 頓文濤,趙玉成,朱偉,等.物聯(lián)網(wǎng)在現(xiàn)代化農(nóng)業(yè)中的應(yīng)用 [J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2013(12):5-8.
[6] 李瑞芳,徐曉輝,溫陽,等.短消息在節(jié)水灌溉系統(tǒng)中的應(yīng)用 [J].農(nóng)機化研究,2013,35(8):196-199.
[7] 黃瑋.基于機智云的智能漁業(yè)養(yǎng)殖系統(tǒng)的設(shè)計 [J].電腦與電信,2019(8):39-42.
[8] 趙磊.基于云平臺的溫室智能灌溉系統(tǒng)的研究與開發(fā) [D].蘭州:蘭州理工大學,2020.
[9] 黃瑋.基于Android的手勢識別系統(tǒng)的設(shè)計 [J].電腦與電信,2019(11):49-51+57.
[10] 何江.一種智能云灌溉系統(tǒng) [J].節(jié)水灌溉,2017(3):97-99.
作者簡介:黃瑋(1979—),男,漢族,湖北武漢人,講師,碩士,研究方向:移動開發(fā)、物聯(lián)網(wǎng)。