郭 伏,溫宗周
(西安工程大學(xué)電子信息學(xué)院,西安710048)
長(zhǎng)期以來,我國農(nóng)業(yè)一直采用大水漫灌的澆灌方式,此種方式效率低,而且對(duì)水資源造成了浪費(fèi)。近些年來,因工廠數(shù)量迅猛劇增,人口增多[1],發(fā)展節(jié)水灌溉技術(shù)就顯得尤為重要。
我國很多灌溉區(qū)域都裝有微噴或滴灌設(shè)備,但是在節(jié)水方面仍然處于較低水平。國內(nèi)成套的自動(dòng)灌溉系統(tǒng)還是較少,較為簡(jiǎn)陋,大多數(shù)采用人工調(diào)控。大部分自國外引進(jìn)的產(chǎn)品價(jià)格高且不適于我國現(xiàn)實(shí)國情。傳統(tǒng)的灌溉系統(tǒng)傳輸數(shù)據(jù)多采用有線連接的方式,由上位機(jī)和下位機(jī)組成。但此類系統(tǒng)布線復(fù)雜,且不易移動(dòng)。隨著自動(dòng)化技術(shù)不斷發(fā)展,灌溉規(guī)模也越來越大,在檢測(cè)范圍增大、傳感器節(jié)點(diǎn)增多的情況下,安裝布線和移動(dòng)的問題也會(huì)增加;大范圍布線也導(dǎo)致了投資成本的增加。無線通信傳輸方式有著簡(jiǎn)單靈活的特點(diǎn),用來傳輸采集的數(shù)據(jù),可以省去復(fù)雜的布線,節(jié)點(diǎn)布置也變得簡(jiǎn)單靈活,提高了便利性。
綜合以上現(xiàn)實(shí)背景,開發(fā)出一款以ESP8266 作為傳輸中轉(zhuǎn)站,STM32 作為主控制器的智灌溉遠(yuǎn)程監(jiān)測(cè)系統(tǒng)。該系統(tǒng)主要包括感知層、網(wǎng)絡(luò)層和應(yīng)用層三個(gè)部分,三者之間通過無線路由器互相連接。利用物聯(lián)網(wǎng)技術(shù)和上位機(jī)建立環(huán)境監(jiān)測(cè)系統(tǒng),能夠?qū)崟r(shí)地獲取監(jiān)測(cè)地點(diǎn)的溫濕度,實(shí)現(xiàn)遠(yuǎn)程采集數(shù)據(jù)的功能[2]。
基于ESP8266 組建智能灌溉監(jiān)測(cè)系統(tǒng),可解決監(jiān)測(cè)實(shí)時(shí)性及自適應(yīng)性的問題。方案綜合利用了計(jì)算機(jī)技術(shù)、智能控制技術(shù)和農(nóng)業(yè)節(jié)水技術(shù)[3]。系統(tǒng)對(duì)農(nóng)田信息,包括土壤水分、空氣溫濕度、光照和二氧化碳含量等數(shù)據(jù)進(jìn)行精確采集,并借助于自動(dòng)化控制技術(shù)智能地決定灌溉用水量。它只需要通過控制繼電器的輸出狀態(tài)即可對(duì)作物進(jìn)行灌溉。
系統(tǒng)主要包括以下幾個(gè)模塊:STM32 控制模塊、傳感器采集模塊、繼電器執(zhí)行模塊、ESP8266 Wi-Fi 傳輸模塊、LCD 顯示模塊[4]。各模塊之間的關(guān)系如圖1 所示。
圖1 智能灌溉監(jiān)測(cè)系統(tǒng)框圖
此系統(tǒng)的工作原理如下:
對(duì)被控對(duì)象(灌溉區(qū))的溫濕度、土壤水分等進(jìn)行實(shí)時(shí)采集,通過傳感器將模擬量轉(zhuǎn)為數(shù)字量,再經(jīng)過無線傳輸模塊ESP8266 中轉(zhuǎn)站[5]將采集到的數(shù)據(jù)傳送到STM32 控制器中。控制器將所采集的數(shù)據(jù)經(jīng)過模糊控制算法進(jìn)行處理,再傳遞給各執(zhí)行器,即控制器驅(qū)動(dòng)電磁閥或繼電器。以此實(shí)現(xiàn)為作物補(bǔ)水或補(bǔ)光、二氧化碳等。微控制器模糊控制算法根據(jù)當(dāng)前采集到的數(shù)據(jù)做出處理,例如當(dāng)溫度或濕度度超過或小于預(yù)先設(shè)定的作物最適生長(zhǎng)溫濕度時(shí),系統(tǒng)會(huì)根據(jù)當(dāng)前的數(shù)據(jù)計(jì)算出偏差量,繼而為作物做出相應(yīng)的調(diào)整。通過使用無線傳輸模塊ESP8266,實(shí)現(xiàn)精確采集和實(shí)時(shí)調(diào)整,避免了作物因人力不能及時(shí)調(diào)整導(dǎo)致作物生長(zhǎng)受限的局限性,這對(duì)于農(nóng)作物的生長(zhǎng)有很大的幫助,在解決勞力問題的同時(shí)也提高了作物的產(chǎn)量。
處理器采用的是ARM 芯片STM32F103。其主要作用是將傳感器采集來的數(shù)據(jù)顯示在LCD 屏并通過ESP8266 Wi-Fi 模塊上傳給上位機(jī),以及對(duì)被控量做出處理并輸出一個(gè)控制信號(hào)給執(zhí)行機(jī)構(gòu)。
TH-FDR2000 土壤水分傳感器是一款基于時(shí)域反射原理,利用高頻電子技術(shù)制造的高精度、高靈敏度的測(cè)量土壤水分的傳感器[6]??捎脕頊y(cè)量田間土壤的介電常數(shù),從而反映出土壤的水分含量[7]。測(cè)量時(shí),傳感器產(chǎn)生的高頻電磁波沿傳輸線進(jìn)行傳播,傳輸線的終端和周邊物質(zhì)的不連續(xù)會(huì)使傳輸中的部分能量通過傳輸線反射回來,就如同一束光沿著一個(gè)管道傳播,在管的終端被鏡子反射回來。通過測(cè)量電磁脈沖沿傳輸線傳送所需要的時(shí)間差即可測(cè)出土壤的介電常數(shù),從而測(cè)出土壤的含水量。THFDR2000 土壤水分傳感器可測(cè)量土壤水分的體積百分比,是目前國際上最流行的土壤水分測(cè)量方法,適用于農(nóng)業(yè)節(jié)水灌溉、花卉、牧場(chǎng)、土壤速測(cè)、溫室大棚、植物培養(yǎng)等領(lǐng)域。TH-FDR2000 的供電電壓為7~24V DC,可以輸出電壓,電流,數(shù)字信號(hào)。在此選擇5V 供電,0~2.5V 電壓信號(hào)輸出。
DATA 接到STM32 的PA0 接口,用于微處理器與DHT11 之間的通訊和同步,采用單總線數(shù)據(jù)格式。TH-FDR2000 具體接線方法如圖2 所示。
選用ESP8266 芯片作為Wi-Fi 無線傳輸模塊。ESP8266 是一款超低功耗的UART Wi-Fi 透?jìng)髂K,可將智能設(shè)備連接到無線網(wǎng)絡(luò)上,進(jìn)行網(wǎng)絡(luò)通信,實(shí)現(xiàn)聯(lián)網(wǎng)功能。該模塊支持串口轉(zhuǎn)Wi-Fi STA、串口轉(zhuǎn)AP 和Wi-Fi STA+Wi-Fi AP 的模式,可通過AT 指令對(duì)系統(tǒng)參數(shù)進(jìn)行更改設(shè)置,從而建立串口-Wi-Fi 數(shù)據(jù)傳輸方案,做到設(shè)備通過互聯(lián)網(wǎng)傳輸數(shù)據(jù)。例如以“AT+CWMODE=3 ”設(shè)置模塊Wi-Fi 模式為AP+STA 模式。
相關(guān)的兩個(gè)重要函數(shù)包括:
一、atk_8266_send_cmd 函數(shù)。該函數(shù)用于向ATK_ESP8266 模塊發(fā)送AT 指令。它帶有3 個(gè)參數(shù),cmd 表示要發(fā)送的指令字符串,ack 表示發(fā)送指令后期待得到的應(yīng)答字符串,waittime 表示等待應(yīng)答的時(shí)間(單位:10ms)。
如:atk_8288_send_cmd ("AT+RST","OK",20);表示發(fā)送指令:AT+RST 到Wi-Fi 模塊,重啟模塊;期待的應(yīng)答為:OK;等待時(shí)間為200ms。
二、atk_rm04_quit_trans 函數(shù)。其作用是退出透?jìng)髂J?,進(jìn)入AT 指令模式。
另有三個(gè)查詢函數(shù):
atk_8266_consta_check 函數(shù),用于檢查當(dāng)前連接(TCP/UDP)是否建立(或存在);
atk_8266_get_wanip 函數(shù),用于獲取模塊STA模式或者AP 模式下的IP 地址及MAC 地址;
atk_8266_get_ip 函數(shù),用于獲取模塊AP+STA模式下的IP 地址及MAC 地址。
ESP8266 Wi-Fi 傳輸模塊原理圖如圖3。
圖3 ESP8266 Wi-Fi 傳輸模塊原理圖
PID 算法包括比例、積分、微分三個(gè)部分[8]。
比例算法表達(dá)式為:
其中,Ep為當(dāng)前誤差值,Kp為比例系數(shù),Outp為常數(shù),POUT即為比例作用下的輸出。算法實(shí)施的條件是當(dāng)前狀態(tài)下系統(tǒng)有偏差。它的優(yōu)點(diǎn)是在系統(tǒng)有偏差的條件下能立即做出調(diào)整;缺點(diǎn)是不能使被控對(duì)象穩(wěn)定在某個(gè)狀態(tài)。
積分算法表達(dá)式為:
其中,Ei為積分偏差,Ti為積分時(shí)間常數(shù),Kp為比例系數(shù),Outi為常數(shù),IOUT即為積分作用下的輸出。此算法主要是利用從系統(tǒng)開機(jī)以來所有時(shí)間段內(nèi)的偏差情況來輸出一個(gè)控制信號(hào)。它的優(yōu)點(diǎn)是:若從系統(tǒng)開機(jī)以來沒有偏差,則會(huì)輸出一個(gè)控制信號(hào)用以維持當(dāng)前值;缺點(diǎn)是:若從開機(jī)以來存有偏差,而當(dāng)前值快接近設(shè)定值,則會(huì)輸出一個(gè)控制信號(hào)來阻礙當(dāng)前值趨近于設(shè)定值。
微分算法表達(dá)式為:
其中,Ed為微分偏差,Td為微分時(shí)間常數(shù),Kp為比例系數(shù),Outd為常數(shù),DOUT即為微分作用下的輸出。此算法利用最近幾次偏差的變化率,計(jì)算出最近對(duì)控制對(duì)象的變化趨勢(shì)。它的優(yōu)點(diǎn)是能盡早抑制控制對(duì)象的變化;缺點(diǎn)是不能單獨(dú)作為一則控制算法使用,它只考慮偏差變化的速度,不關(guān)心系統(tǒng)是否有偏差。
將這三種控制算法綜合起來用于同一個(gè)控制系統(tǒng)中,令三者優(yōu)勢(shì)互補(bǔ),形成一個(gè)最佳PID 控制算法,即:
將各項(xiàng)的Out 常數(shù)歸并為一,整理后得:
PID 算法應(yīng)用于單片機(jī)時(shí),對(duì)積分和微分項(xiàng)可以作近似變換。
積分項(xiàng)可改寫成:
即用過去一段時(shí)間的采樣點(diǎn)的偏差值的代數(shù)和來代替積分。式中,T 是采樣周期,即控制周期,每隔T 時(shí)間進(jìn)行一次PID 計(jì)算。
微分項(xiàng)可改寫成:
其中Ek是本次偏差,Ek-1是上一次的偏差值。如此改寫后,即得出單片機(jī)中PID 算法表達(dá)式:
系統(tǒng)以土壤濕度作為被控對(duì)象,將傳感器采集來的數(shù)據(jù)作為輸入,經(jīng)PID 算法處理后,輸出一個(gè)相應(yīng)的PWM 波從而使繼電器驅(qū)動(dòng)水泵相應(yīng)的工作狀態(tài)(0 功率、半功率等),從而實(shí)現(xiàn)快速精準(zhǔn)灌溉,使作物處于最佳生長(zhǎng)條件,同時(shí)有利于減少資源浪費(fèi)。本系統(tǒng)PID 實(shí)現(xiàn)部分程序如下:
首先進(jìn)行采集模塊調(diào)試,上電以后顯示屏需要手動(dòng)進(jìn)行校準(zhǔn),校準(zhǔn)完成后要把程序下載到控制器中運(yùn)行,觀察顯示屏是否能顯示采集到的相應(yīng)數(shù)據(jù)。屏顯效果如圖4 所示。
圖4 TFT-LCD 效果圖
由圖可見,顯示屏上面顯示有空氣濕度、溫度以及土壤濕度(水分含量)的相關(guān)數(shù)據(jù),可見此時(shí)數(shù)據(jù)采集模塊與顯示模塊是可以正常工作的。
再進(jìn)行ESP8266 Wi-Fi 模塊測(cè)試。在測(cè)試中使用手機(jī)網(wǎng)絡(luò)調(diào)試助手與模塊之間進(jìn)行數(shù)據(jù)傳輸。串口無線接入點(diǎn)網(wǎng)絡(luò)連接方式選為ATK-ESP8266 模塊(Wi-Fi AP)和智能手機(jī)(Wi-Fi STA)[9]。即模塊通過Wi-Fi 連接智能手機(jī)。在Wi-Fi 測(cè)試主界面下,按KEY_UP,即可進(jìn)入串口無線AP(COM-AP)工作模式選擇界面,共有三個(gè)工作模式可供選擇:TCP服務(wù)器、TCP 客戶端、UDP。選擇TCP 服務(wù)器,按KEY_UP 按鍵,進(jìn)入TCP 服務(wù)器測(cè)試,此時(shí),程序會(huì)配置模塊為Wi-Fi AP 模式。例如:SSID 為ATKESP8266;加密方式選擇wpawpa2_aes[10];密碼設(shè)為12345678。模塊IP 地址(TCP 服務(wù)器IP 地址)設(shè)為192.168.4.1[11];端口設(shè)為8086。按如上配置好后,進(jìn)入TCP 服務(wù)器測(cè)試界面,如圖5 所示。
圖5 TCP 服務(wù)器測(cè)試界面
此時(shí),模塊的TCP 服務(wù)器已經(jīng)開啟,IP 地址為192.168.4.1[12];端口號(hào)為8086。由于沒有TCP Client來連接,當(dāng)前狀態(tài)顯示:連接失敗。此時(shí)只需打開手機(jī)的Wi-Fi 功能,找到名為ATK-ESP8266 的網(wǎng)絡(luò)SSID,選取該網(wǎng)絡(luò),輸入密碼:12345678,再點(diǎn)擊連接,即可連接到模塊,如圖6 所示。
圖6 手機(jī)連接ESP8266-WIFI 網(wǎng)絡(luò)
幾秒后,手機(jī)連接到ATK-ESP8266 模塊。由圖所示,模塊給手機(jī)分配的IP 地址為:192.168.4.2。此時(shí)可在手機(jī)上運(yùn)行網(wǎng)絡(luò)調(diào)試助手,依次設(shè)置[13-15]:
1.進(jìn)入TCP Client;2.點(diǎn)擊增加圖標(biāo);3.輸入服務(wù)器IP 和端口號(hào);4.按增加按鈕;5.連接建立。
經(jīng)過如上設(shè)置以后,手機(jī)和模塊就建立了TCP連接,此時(shí)開發(fā)板屏顯狀態(tài)將會(huì)變?yōu)椋哼B接成功。此時(shí)如果輸入了錯(cuò)誤的IP 端口號(hào),右側(cè)圖片將不會(huì)顯示端口號(hào),而會(huì)顯示“ disconnect”。在連接成功建立后,通過按鍵KEY-Y0 即可向手機(jī)發(fā)送采集數(shù)據(jù)以及繼電器的狀態(tài)以實(shí)現(xiàn)監(jiān)測(cè)的目的,如圖7 所示。
圖7 手機(jī)端接收采集數(shù)據(jù)
從圖中可見,此時(shí)手機(jī)接收到兩次數(shù)據(jù):第一次為溫度23℃、空氣濕度30%、土壤濕度40%,繼電器關(guān);第二次為溫度25℃、空氣濕度30%、土壤濕度10%,繼電器開??梢?,通過Wi-Fi 模塊與手機(jī)連接,實(shí)現(xiàn)了土壤環(huán)境信息即時(shí)地發(fā)送到智能終端。
經(jīng)多次測(cè)試驗(yàn)證,設(shè)計(jì)的基于ESP8266 的智能灌溉監(jiān)測(cè)系統(tǒng)可正常運(yùn)行,完成當(dāng)前環(huán)境下土壤濕度的采集,并經(jīng)微處理器處理,驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)相應(yīng)動(dòng)作,通過上位機(jī)遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)當(dāng)前植被所處環(huán)境下各項(xiàng)參數(shù)。系統(tǒng)方便用戶及時(shí)了解環(huán)境情況,在某種突發(fā)情況下可人工操作介入。系統(tǒng)操作簡(jiǎn)單、高效,易于推廣。由于Wi-Fi 無線網(wǎng)絡(luò)傳送數(shù)據(jù)時(shí)會(huì)有延遲,個(gè)別情況下在上位機(jī)端讀取到的數(shù)據(jù)信息可能與LCD 顯示屏的信息不同步,在下一步的研究工作中將會(huì)針對(duì)這一問題加以改進(jìn)。