張子財(cái),張勝田,佟向坤
(廣東東軟學(xué)院 計(jì)算機(jī)學(xué)院,廣東 佛山 528225)
近年來隨著經(jīng)濟(jì)與科技的發(fā)展,農(nóng)業(yè)發(fā)展也趨向機(jī)械化,尤其是大型農(nóng)場(chǎng)在灌溉方面實(shí)現(xiàn)自動(dòng)化、數(shù)據(jù)實(shí)時(shí)化和防漏水是必不可少的趨勢(shì),對(duì)農(nóng)業(yè)機(jī)械化發(fā)展十分重要。目前市面上傳統(tǒng)灌溉系統(tǒng)多數(shù)是統(tǒng)一的灌溉模式,無法對(duì)個(gè)別缺水土壤進(jìn)行針對(duì)性灌溉,且灌溉模塊長時(shí)間使用會(huì)出現(xiàn)滴水甚至漏水的情況,仍有不少改進(jìn)空間。本項(xiàng)目采用ESP32為主控采集多個(gè)土壤濕度計(jì)檢測(cè)模塊的濕度的平均值,若土壤濕度低于閾值則ESP32會(huì)發(fā)送數(shù)據(jù)開啟水閥和執(zhí)行灌溉,同時(shí)可在云端實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)和控制灌溉,有利于減少人力物力的浪費(fèi)。
本系統(tǒng)包含了主控芯片ESP32、一體電磁閥流量計(jì)、電容式土壤濕度計(jì)檢測(cè)傳感器、電機(jī)驅(qū)動(dòng)、水泵和Blinker云平臺(tái)。主要設(shè)計(jì)思路是首先通過ESP32采集多個(gè)土壤濕度計(jì)檢測(cè)模塊的數(shù)據(jù)后取平均值,若濕度低于閾值,則ESP32會(huì)發(fā)送數(shù)據(jù)給控制一體電磁閥流量計(jì)的ESP32使其打開總水閥和打開灌溉模塊進(jìn)行自動(dòng)灌溉,直到濕度大于閾值。用戶可在Blinker云平臺(tái)上實(shí)時(shí)監(jiān)控各項(xiàng)數(shù)據(jù),可以主動(dòng)在Blinker發(fā)送數(shù)據(jù)執(zhí)行主動(dòng)灌溉。此外,在執(zhí)行發(fā)生灌溉的情況下,水流量計(jì)數(shù)值增加則判斷發(fā)生漏水,ESP32會(huì)關(guān)閉總水閥的電磁閥從而斷水,可在云平臺(tái)上打開或者下次執(zhí)行自動(dòng)灌溉時(shí)自動(dòng)打開。整體設(shè)計(jì)圖如圖1所示。
圖1 基于ESP32的農(nóng)業(yè)定點(diǎn)灌溉系統(tǒng)
基于ESP32的農(nóng)業(yè)定點(diǎn)灌溉節(jié)水系統(tǒng)主要由三部分組成:
(1)由ESP32、灌溉模塊、A4950電機(jī)驅(qū)動(dòng)模塊、MK011169電容式土壤溫濕度檢測(cè)模塊組成;對(duì)土壤濕度進(jìn)行檢測(cè)、植物進(jìn)行澆灌、ESP32發(fā)送和接收數(shù)據(jù)包,與云端和水閥端ESP32進(jìn)行交互。
(2)由ESP32、繼電器和一體電磁閥流量計(jì)組成;檢測(cè)水流量,若沒有發(fā)生澆灌的情況下水流量計(jì)數(shù)增加則自動(dòng)關(guān)閉水閥,與云端和檢測(cè)端ESP32進(jìn)行交互。
(3)Blinker云平臺(tái);在APP上實(shí)時(shí)監(jiān)測(cè)相關(guān)數(shù)據(jù),遠(yuǎn)程控制澆灌與水閥總開關(guān)。
使得整個(gè)系統(tǒng)有實(shí)時(shí)監(jiān)控和較為及時(shí)的控制系統(tǒng)等功能。硬件流程圖如圖2所示。
圖2 定點(diǎn)灌溉系統(tǒng)硬件流程圖
上位機(jī)與下位機(jī)和下位機(jī)與下位機(jī)的通訊采用是WI-FI通信。上位機(jī)采用的是Blinker APP實(shí)現(xiàn)快速搭建應(yīng)用層,實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)化;下位機(jī)采用ESP32自帶的無線網(wǎng)絡(luò)模塊,免去傳統(tǒng)MCU需要額外增加通訊模塊的不便,有效降低成本,且控制方便。雖然ESP8266具有價(jià)格優(yōu)勢(shì)但ESP32是雙核80 MHz至240 MHz CPU,而ESP8266是單核CPU,運(yùn)行頻率僅80 MHz,且ESP32有更快的Wi-Fi,可更精準(zhǔn)、快速地進(jìn)行控制和數(shù)據(jù)傳輸。
檢測(cè)土壤濕度的模塊采用的是MK011169電容式土壤濕度計(jì)檢測(cè)模塊,供電范圍為3.3 V ~ 5 V DC,這款電容式土壤濕度傳感器區(qū)別于市面上大部分的電阻式傳感器,采用電容感應(yīng)原理來檢測(cè)土壤濕度。
檢測(cè)模塊的輸出值為0 ~ 300% RH是干土壤,300%~700% RH是濕土壤,300%~950% RH則為水。
其原理為:由于板件周圍濕度條件改變,使得板件聚合物外膜相對(duì)介電常數(shù)與電容量變化。
避免了電阻式傳感器易被腐蝕的問題,延長工作壽命,降低因傳感器腐蝕導(dǎo)致的數(shù)據(jù)偏差而發(fā)生的誤操作概率。
土壤濕度計(jì)檢測(cè)模塊PCB圖如圖3所示。
圖3 土壤濕度計(jì)檢測(cè)模塊電路圖
電機(jī)驅(qū)動(dòng)采用的是A4950,輸出電壓可達(dá)12 V,保證灌溉模塊正常運(yùn)行。相較于L298N模塊體積更小、更便捷、能耗低高性能。灌溉模塊是小型水泵,通過控制ESP32的IO口輸出的PWM調(diào)節(jié)電機(jī)驅(qū)動(dòng)輸出電壓,從而控制水泵水流大小,滿足不同的灌溉需求,若采用繼電器則無法控制水流大小。A4950電路PCB圖如圖4所示。
圖4 A4950模塊PCB圖
電源采用12V大容量鋰電池作為系統(tǒng)電源,電源為直流電,其中ESP32的供電是通過LM2596S DC-DC降壓模塊將12 V電壓降壓到5 V電壓保證ESP32正常工作。防止不同電源的不同功率、電流對(duì)整個(gè)系統(tǒng)的影響,提高系統(tǒng)的穩(wěn)定性。電源模塊的電路原理圖如圖5所示。
圖5 電源模塊原理圖
土壤濕度計(jì)檢測(cè)模塊和一體電磁閥流量計(jì)的數(shù)據(jù)采集用ESP32外設(shè)的DMA模式,該模式可在不中斷主函數(shù)正常運(yùn)行的情況下獲取濕度數(shù)據(jù)和水流量計(jì)數(shù)。不采用中斷模式是防止不斷中斷主函數(shù)導(dǎo)致云平臺(tái)控制延遲等不良影響,優(yōu)化系統(tǒng)效率。一體化電磁閥流量計(jì)PCB圖如圖6所示。
圖6 電源模塊原理圖
主控模組采用的是ESP-WROOM-32,芯片核心是ESP32-D0WDQ6,ESP32具有雙核CPU高性能,是—款通用型Wi-Fi+BT+BLE MCU模組,功能強(qiáng)大,用途廣,用于低功耗傳感器網(wǎng)絡(luò),具有可擴(kuò)展、自適應(yīng)的特點(diǎn)。兩個(gè)CPU核可被單獨(dú)控制或上電。時(shí)鐘頻率調(diào)節(jié)范圍為80至240 MHz。用戶可切斷CPU電源,利用低功耗協(xié)處理器來監(jiān)測(cè)外設(shè)狀態(tài)變化或某些模擬量是否超出閾值。ESP32集成了豐富的外設(shè),包括高速SDIO/SPI、UART、I2C、I2S、DAM、DS卡界面、以太網(wǎng)接口、電容式觸摸傳感器、霍爾傳感器、低噪聲傳感放大傳感器等外設(shè)。該模組有多種復(fù)位保護(hù)措施,較強(qiáng)的移植以及拓展性。綜上,該模組完全滿足本系統(tǒng)的需求,因此選擇了這款模組。
ESP32的Wi-Fi模塊有三種工作模式:
(1)STA(Station)模式:配置函數(shù)為WiFi.mode(WIFI_STA),ESP32連接到接入點(diǎn),通過路由器或熱點(diǎn)鏈接到互聯(lián)網(wǎng),實(shí)現(xiàn)移動(dòng)端或PC端對(duì)模組的遠(yuǎn)程控制與監(jiān)控。
(2)AP(Access Point)模式配置函數(shù)為WiFi.mode(WIFI_AP),ESP32作為模組作為熱點(diǎn),接受設(shè)備連接,組建局域網(wǎng),實(shí)現(xiàn)多個(gè)設(shè)備之間的通訊;
(3)STA+AP(Station+Access Point)式:配置函數(shù)為WiFi.mode(WIFI_STA_AP),模組作為接入點(diǎn)和連接到另一個(gè)接入點(diǎn)的站點(diǎn),STA模式和AP模式共同運(yùn)行,實(shí)現(xiàn)互聯(lián)網(wǎng)和局域網(wǎng)的無縫切換,提高系統(tǒng)工作效率。ESP32的PCB圖如圖7所示。
圖7 ESP32的PCB圖
使用Blinker作為物聯(lián)網(wǎng)接入方案。Blinker在上位機(jī)端提供了APP、網(wǎng)頁端支持,可進(jìn)行云服務(wù)數(shù)據(jù)傳輸;在下位機(jī)端提供相關(guān)函數(shù)庫。ESP32屬于Arduino生態(tài)的一部分,而Blinker提供Arduino庫函數(shù),使用便捷。用戶可在Blinker APP上遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)系統(tǒng)數(shù)據(jù),且可以實(shí)現(xiàn)遠(yuǎn)程操作。監(jiān)控步驟:主ESP32采集土壤濕度與數(shù)據(jù)處理、數(shù)據(jù)包上傳到云端和控制總水閥的次級(jí)ESP32、云端接收到數(shù)據(jù)包和ESP32接收數(shù)據(jù)后進(jìn)行判斷是否開閥、云端和次級(jí)ESP32反饋數(shù)據(jù)包回到主ESP32。Bliker APP軟件端界面如圖8所示。
圖8 Blinker APP端界面
可安置在農(nóng)場(chǎng)、果園、家庭等植物需要澆灌的場(chǎng)所。對(duì)缺水的植物進(jìn)行自動(dòng)澆水,在Blinker APP上實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)、遠(yuǎn)程控制澆水和開啟總水閥,自動(dòng)和主動(dòng)澆水兩個(gè)模式保證了系統(tǒng)穩(wěn)定性,當(dāng)自動(dòng)澆水模式失效時(shí),可使用主動(dòng)模式進(jìn)行輔助,防止植物因系統(tǒng)失效而缺水。系統(tǒng)初步實(shí)物圖如圖9所示。
圖9 初步實(shí)物圖
以ESP32模組為核心實(shí)現(xiàn)對(duì)土壤濕度的監(jiān)測(cè)與定點(diǎn)性灌溉。當(dāng)某部分土壤濕度低于閾值時(shí)則對(duì)該區(qū)域執(zhí)行針對(duì)性、定點(diǎn)性灌溉。若在沒有發(fā)生灌溉的情況下流量計(jì)計(jì)數(shù)值增加則自動(dòng)關(guān)閉總水閥,預(yù)防漏水。當(dāng)自動(dòng)灌溉模式失效時(shí)可使用APP端遠(yuǎn)程控制進(jìn)行主動(dòng)灌溉。
用戶在云端APP上實(shí)時(shí)監(jiān)控相關(guān)數(shù)據(jù),可遠(yuǎn)程對(duì)灌溉模塊與水閥開關(guān)進(jìn)行控制;
在農(nóng)場(chǎng)上經(jīng)常出現(xiàn)不同區(qū)域的植物有著不同的灌溉需求,但目前市面上的農(nóng)業(yè)機(jī)械化系統(tǒng)絕大多數(shù)都是執(zhí)行統(tǒng)一灌溉的模式,無法對(duì)特定的區(qū)域進(jìn)行針對(duì)性灌溉,致使植物無法獲得更優(yōu)良的生長環(huán)境,同時(shí)會(huì)造成人力物力的浪費(fèi)。本項(xiàng)目提出采用多個(gè)灌溉端ESP32和一個(gè)水閥端ESP32組合的系統(tǒng)連接在Blinker APP上,實(shí)現(xiàn)實(shí)時(shí)監(jiān)控各個(gè)區(qū)域的土壤情況、遠(yuǎn)程控制不同區(qū)域的灌溉和系統(tǒng)自動(dòng)灌溉。解決了傳統(tǒng)農(nóng)業(yè)機(jī)械化系統(tǒng)統(tǒng)一灌溉模式痛點(diǎn)。
本項(xiàng)目為針對(duì)農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì),提供了關(guān)于農(nóng)業(yè)數(shù)據(jù)采集相關(guān)傳感器、電機(jī)驅(qū)動(dòng)模塊等模塊選
型和物聯(lián)網(wǎng)感知層的構(gòu)建,以ESP32的無線網(wǎng)絡(luò)模塊為信息傳輸層,使用Blinker云平臺(tái)為核心的物聯(lián)網(wǎng)應(yīng)用層部署的完整解決方案。通過基于Blinker云平臺(tái)的農(nóng)業(yè)物聯(lián)網(wǎng)與農(nóng)業(yè)設(shè)備的交互實(shí)現(xiàn)遠(yuǎn)程控制,實(shí)現(xiàn)從采集到控制的閉環(huán)管理和數(shù)據(jù)可視化。本項(xiàng)目符合科技振興鄉(xiāng)村的發(fā)展目標(biāo),為農(nóng)業(yè)物聯(lián)網(wǎng)的應(yīng)用、機(jī)械化農(nóng)業(yè)、定點(diǎn)化灌溉的研究提供新思路。