郭 伏,溫宗周
(西安工程大學電子信息學院,西安710048)
長期以來,我國農業一直采用大水漫灌的澆灌方式,此種方式效率低,而且對水資源造成了浪費。近些年來,因工廠數量迅猛劇增,人口增多[1],發展節水灌溉技術就顯得尤為重要。
我國很多灌溉區域都裝有微噴或滴灌設備,但是在節水方面仍然處于較低水平。國內成套的自動灌溉系統還是較少,較為簡陋,大多數采用人工調控。大部分自國外引進的產品價格高且不適于我國現實國情。傳統的灌溉系統傳輸數據多采用有線連接的方式,由上位機和下位機組成。但此類系統布線復雜,且不易移動。隨著自動化技術不斷發展,灌溉規模也越來越大,在檢測范圍增大、傳感器節點增多的情況下,安裝布線和移動的問題也會增加;大范圍布線也導致了投資成本的增加。無線通信傳輸方式有著簡單靈活的特點,用來傳輸采集的數據,可以省去復雜的布線,節點布置也變得簡單靈活,提高了便利性。
綜合以上現實背景,開發出一款以ESP8266 作為傳輸中轉站,STM32 作為主控制器的智灌溉遠程監測系統。該系統主要包括感知層、網絡層和應用層三個部分,三者之間通過無線路由器互相連接。利用物聯網技術和上位機建立環境監測系統,能夠實時地獲取監測地點的溫濕度,實現遠程采集數據的功能[2]。
基于ESP8266 組建智能灌溉監測系統,可解決監測實時性及自適應性的問題。方案綜合利用了計算機技術、智能控制技術和農業節水技術[3]。系統對農田信息,包括土壤水分、空氣溫濕度、光照和二氧化碳含量等數據進行精確采集,并借助于自動化控制技術智能地決定灌溉用水量。它只需要通過控制繼電器的輸出狀態即可對作物進行灌溉。
系統主要包括以下幾個模塊:STM32 控制模塊、傳感器采集模塊、繼電器執行模塊、ESP8266 Wi-Fi 傳輸模塊、LCD 顯示模塊[4]。各模塊之間的關系如圖1 所示。

圖1 智能灌溉監測系統框圖
此系統的工作原理如下:
對被控對象(灌溉區)的溫濕度、土壤水分等進行實時采集,通過傳感器將模擬量轉為數字量,再經過無線傳輸模塊ESP8266 中轉站[5]將采集到的數據傳送到STM32 控制器中。控制器將所采集的數據經過模糊控制算法進行處理,再傳遞給各執行器,即控制器驅動電磁閥或繼電器。以此實現為作物補水或補光、二氧化碳等。微控制器模糊控制算法根據當前采集到的數據做出處理,例如當溫度或濕度度超過或小于預先設定的作物最適生長溫濕度時,系統會根據當前的數據計算出偏差量,繼而為作物做出相應的調整。通過使用無線傳輸模塊ESP8266,實現精確采集和實時調整,避免了作物因人力不能及時調整導致作物生長受限的局限性,這對于農作物的生長有很大的幫助,在解決勞力問題的同時也提高了作物的產量。
處理器采用的是ARM 芯片STM32F103。其主要作用是將傳感器采集來的數據顯示在LCD 屏并通過ESP8266 Wi-Fi 模塊上傳給上位機,以及對被控量做出處理并輸出一個控制信號給執行機構。
TH-FDR2000 土壤水分傳感器是一款基于時域反射原理,利用高頻電子技術制造的高精度、高靈敏度的測量土壤水分的傳感器[6]。可用來測量田間土壤的介電常數,從而反映出土壤的水分含量[7]。測量時,傳感器產生的高頻電磁波沿傳輸線進行傳播,傳輸線的終端和周邊物質的不連續會使傳輸中的部分能量通過傳輸線反射回來,就如同一束光沿著一個管道傳播,在管的終端被鏡子反射回來。通過測量電磁脈沖沿傳輸線傳送所需要的時間差即可測出土壤的介電常數,從而測出土壤的含水量。THFDR2000 土壤水分傳感器可測量土壤水分的體積百分比,是目前國際上最流行的土壤水分測量方法,適用于農業節水灌溉、花卉、牧場、土壤速測、溫室大棚、植物培養等領域。TH-FDR2000 的供電電壓為7~24V DC,可以輸出電壓,電流,數字信號。在此選擇5V 供電,0~2.5V 電壓信號輸出。
DATA 接到STM32 的PA0 接口,用于微處理器與DHT11 之間的通訊和同步,采用單總線數據格式。TH-FDR2000 具體接線方法如圖2 所示。
選用ESP8266 芯片作為Wi-Fi 無線傳輸模塊。ESP8266 是一款超低功耗的UART Wi-Fi 透傳模塊,可將智能設備連接到無線網絡上,進行網絡通信,實現聯網功能。該模塊支持串口轉Wi-Fi STA、串口轉AP 和Wi-Fi STA+Wi-Fi AP 的模式,可通過AT 指令對系統參數進行更改設置,從而建立串口-Wi-Fi 數據傳輸方案,做到設備通過互聯網傳輸數據。例如以“AT+CWMODE=3 ”設置模塊Wi-Fi 模式為AP+STA 模式。
相關的兩個重要函數包括:
一、atk_8266_send_cmd 函數。該函數用于向ATK_ESP8266 模塊發送AT 指令。它帶有3 個參數,cmd 表示要發送的指令字符串,ack 表示發送指令后期待得到的應答字符串,waittime 表示等待應答的時間(單位:10ms)。
如:atk_8288_send_cmd ("AT+RST","OK",20);表示發送指令:AT+RST 到Wi-Fi 模塊,重啟模塊;期待的應答為:OK;等待時間為200ms。
二、atk_rm04_quit_trans 函數。其作用是退出透傳模式,進入AT 指令模式。
另有三個查詢函數:
atk_8266_consta_check 函數,用于檢查當前連接(TCP/UDP)是否建立(或存在);
atk_8266_get_wanip 函數,用于獲取模塊STA模式或者AP 模式下的IP 地址及MAC 地址;
atk_8266_get_ip 函數,用于獲取模塊AP+STA模式下的IP 地址及MAC 地址。
ESP8266 Wi-Fi 傳輸模塊原理圖如圖3。

圖3 ESP8266 Wi-Fi 傳輸模塊原理圖
PID 算法包括比例、積分、微分三個部分[8]。
比例算法表達式為:

其中,Ep為當前誤差值,Kp為比例系數,Outp為常數,POUT即為比例作用下的輸出。算法實施的條件是當前狀態下系統有偏差。它的優點是在系統有偏差的條件下能立即做出調整;缺點是不能使被控對象穩定在某個狀態。
積分算法表達式為:

其中,Ei為積分偏差,Ti為積分時間常數,Kp為比例系數,Outi為常數,IOUT即為積分作用下的輸出。此算法主要是利用從系統開機以來所有時間段內的偏差情況來輸出一個控制信號。它的優點是:若從系統開機以來沒有偏差,則會輸出一個控制信號用以維持當前值;缺點是:若從開機以來存有偏差,而當前值快接近設定值,則會輸出一個控制信號來阻礙當前值趨近于設定值。
微分算法表達式為:

其中,Ed為微分偏差,Td為微分時間常數,Kp為比例系數,Outd為常數,DOUT即為微分作用下的輸出。此算法利用最近幾次偏差的變化率,計算出最近對控制對象的變化趨勢。它的優點是能盡早抑制控制對象的變化;缺點是不能單獨作為一則控制算法使用,它只考慮偏差變化的速度,不關心系統是否有偏差。
將這三種控制算法綜合起來用于同一個控制系統中,令三者優勢互補,形成一個最佳PID 控制算法,即:

將各項的Out 常數歸并為一,整理后得:

PID 算法應用于單片機時,對積分和微分項可以作近似變換。
積分項可改寫成:

即用過去一段時間的采樣點的偏差值的代數和來代替積分。式中,T 是采樣周期,即控制周期,每隔T 時間進行一次PID 計算。
微分項可改寫成:

其中Ek是本次偏差,Ek-1是上一次的偏差值。如此改寫后,即得出單片機中PID 算法表達式:

系統以土壤濕度作為被控對象,將傳感器采集來的數據作為輸入,經PID 算法處理后,輸出一個相應的PWM 波從而使繼電器驅動水泵相應的工作狀態(0 功率、半功率等),從而實現快速精準灌溉,使作物處于最佳生長條件,同時有利于減少資源浪費。本系統PID 實現部分程序如下:

首先進行采集模塊調試,上電以后顯示屏需要手動進行校準,校準完成后要把程序下載到控制器中運行,觀察顯示屏是否能顯示采集到的相應數據。屏顯效果如圖4 所示。

圖4 TFT-LCD 效果圖
由圖可見,顯示屏上面顯示有空氣濕度、溫度以及土壤濕度(水分含量)的相關數據,可見此時數據采集模塊與顯示模塊是可以正常工作的。
再進行ESP8266 Wi-Fi 模塊測試。在測試中使用手機網絡調試助手與模塊之間進行數據傳輸。串口無線接入點網絡連接方式選為ATK-ESP8266 模塊(Wi-Fi AP)和智能手機(Wi-Fi STA)[9]。即模塊通過Wi-Fi 連接智能手機。在Wi-Fi 測試主界面下,按KEY_UP,即可進入串口無線AP(COM-AP)工作模式選擇界面,共有三個工作模式可供選擇:TCP服務器、TCP 客戶端、UDP。選擇TCP 服務器,按KEY_UP 按鍵,進入TCP 服務器測試,此時,程序會配置模塊為Wi-Fi AP 模式。例如:SSID 為ATKESP8266;加密方式選擇wpawpa2_aes[10];密碼設為12345678。模塊IP 地址(TCP 服務器IP 地址)設為192.168.4.1[11];端口設為8086。按如上配置好后,進入TCP 服務器測試界面,如圖5 所示。

圖5 TCP 服務器測試界面
此時,模塊的TCP 服務器已經開啟,IP 地址為192.168.4.1[12];端口號為8086。由于沒有TCP Client來連接,當前狀態顯示:連接失敗。此時只需打開手機的Wi-Fi 功能,找到名為ATK-ESP8266 的網絡SSID,選取該網絡,輸入密碼:12345678,再點擊連接,即可連接到模塊,如圖6 所示。

圖6 手機連接ESP8266-WIFI 網絡
幾秒后,手機連接到ATK-ESP8266 模塊。由圖所示,模塊給手機分配的IP 地址為:192.168.4.2。此時可在手機上運行網絡調試助手,依次設置[13-15]:
1.進入TCP Client;2.點擊增加圖標;3.輸入服務器IP 和端口號;4.按增加按鈕;5.連接建立。
經過如上設置以后,手機和模塊就建立了TCP連接,此時開發板屏顯狀態將會變為:連接成功。此時如果輸入了錯誤的IP 端口號,右側圖片將不會顯示端口號,而會顯示“ disconnect”。在連接成功建立后,通過按鍵KEY-Y0 即可向手機發送采集數據以及繼電器的狀態以實現監測的目的,如圖7 所示。

圖7 手機端接收采集數據
從圖中可見,此時手機接收到兩次數據:第一次為溫度23℃、空氣濕度30%、土壤濕度40%,繼電器關;第二次為溫度25℃、空氣濕度30%、土壤濕度10%,繼電器開。可見,通過Wi-Fi 模塊與手機連接,實現了土壤環境信息即時地發送到智能終端。
經多次測試驗證,設計的基于ESP8266 的智能灌溉監測系統可正常運行,完成當前環境下土壤濕度的采集,并經微處理器處理,驅動執行機構相應動作,通過上位機遠程實時監測當前植被所處環境下各項參數。系統方便用戶及時了解環境情況,在某種突發情況下可人工操作介入。系統操作簡單、高效,易于推廣。由于Wi-Fi 無線網絡傳送數據時會有延遲,個別情況下在上位機端讀取到的數據信息可能與LCD 顯示屏的信息不同步,在下一步的研究工作中將會針對這一問題加以改進。