黃 淼,周安妮,何鎮(zhèn)琦,宋金城,劉靜波
(南京工程學(xué)院 信息與通信工程學(xué)院,江蘇 南京 211167)
我國(guó)雖是農(nóng)業(yè)大國(guó),但水資源并不豐富。有資料表明,我國(guó)農(nóng)業(yè)用水約占社會(huì)用水總量的60%,但其利用率只有45%,與其他先進(jìn)國(guó)家70%~80%的利用率相比,差距明顯。在現(xiàn)有18.26億畝耕地上,大多數(shù)仍未采用節(jié)水灌溉系統(tǒng)[1],以致于水資源缺口逐年增加。預(yù)計(jì)到2030年,人口增加到16億,水資源缺口達(dá)400億~600億立方米[2]。
改進(jìn)相對(duì)落后的灌溉技術(shù),提高水資源利用率,采用智能化、精準(zhǔn)化灌溉技術(shù)是值得推行的方法。模糊控制在農(nóng)業(yè)領(lǐng)域得到了較大發(fā)展[3-4],在當(dāng)前網(wǎng)絡(luò)建設(shè)較完善,網(wǎng)絡(luò)技術(shù)較成熟的情況下,方便、快捷地獲取天氣預(yù)報(bào)數(shù)據(jù)成為可能。
控制器中的ESP8266作為WiFi模塊,可訪問天氣網(wǎng)站API接口,獲取降水量數(shù)據(jù)與土壤濕度數(shù)據(jù),將這兩個(gè)數(shù)據(jù)作為輸入,通過模糊控制策略設(shè)計(jì),控制灌溉電磁閥根據(jù)用戶需求有選擇的輸出灌溉用水[5]。
模糊控制器中,一般以降水量RQ和土壤濕度E作為輸入數(shù)據(jù),灌溉時(shí)長(zhǎng)或灌溉水量為輸出數(shù)據(jù)[6-7]。本設(shè)計(jì)以灌溉時(shí)長(zhǎng)為輸出,結(jié)合土壤濕度傳感器的數(shù)據(jù)標(biāo)定數(shù)值,制定土壤濕度模糊集劃分標(biāo)準(zhǔn),見表1所列。降雨量RQ模糊集劃分標(biāo)準(zhǔn)見表2所列。灌溉時(shí)長(zhǎng)以0~15 min為標(biāo)準(zhǔn),制定模糊集劃分見表3所列。在此基礎(chǔ)上,制定模糊控制表。模糊控制表的制定需結(jié)合實(shí)際情況,還需訪問天氣數(shù)據(jù)API返回?cái)?shù)據(jù)中的降雨量等級(jí)標(biāo)準(zhǔn),表4為經(jīng)過調(diào)整的模糊控制表。
表1 土壤濕度E模糊集
表2 降雨量RQ模糊集
表3 灌溉時(shí)長(zhǎng)T模糊集
表4 模糊控制表
本系統(tǒng)運(yùn)用MATLAB軟件對(duì)模糊控制進(jìn)行仿真分析,構(gòu)建以土壤濕度和降雨量作為雙輸入,灌溉時(shí)長(zhǎng)為單輸出的系統(tǒng)模型,如圖1所示。根據(jù)土壤濕度和降雨量的劃分等級(jí),模糊規(guī)則推理系統(tǒng)共有35條規(guī)則,模糊控制規(guī)則在MATLAB的制定如圖2所示。輸入、輸出變量采用三角形隸屬函數(shù),借助Mamdani推理算法進(jìn)行仿真分析,通過centroid(面積中心法)[8]解模糊得到輸出變量(確定的值)。圖3所示為模糊推理的輸出曲面。
圖1 模糊控制MATLAB仿真系統(tǒng)
圖2 模糊控制規(guī)則制定
圖3 輸出曲面
系統(tǒng)框架如圖4所示??刂破饕許TM32F1032RCT6單片機(jī)為核心,通過串口2與ESP8266模塊進(jìn)行數(shù)據(jù)交互。ESP8266訪問的天氣數(shù)據(jù)API接口是一個(gè)標(biāo)準(zhǔn)的Restful API接口,提供標(biāo)準(zhǔn)化的數(shù)據(jù)訪問,適用于智能硬件、APP等系統(tǒng)。ESP8266訪問天氣API接口后,經(jīng)授權(quán)可獲取包括降水量在內(nèi)的多項(xiàng)數(shù)據(jù)。STM32單片機(jī)讀取天氣預(yù)報(bào)數(shù)據(jù),土壤濕度傳感器檢測(cè)土壤濕度,經(jīng)MATLAB仿真、解模糊后,得到控制時(shí)長(zhǎng),輸出端通過驅(qū)動(dòng)電路驅(qū)動(dòng)電磁閥,實(shí)現(xiàn)按需灌溉。控制器配備了2.8寸TFT顯示屏,用于顯示天氣預(yù)報(bào)數(shù)據(jù)、土壤濕度測(cè)量數(shù)據(jù)和當(dāng)前輸出狀態(tài)等。控制器在STM32的SPI1接口掛載字庫(kù)芯片,用以顯示中文;在I2C接口掛載E2PROM芯片,用來存儲(chǔ)接收的降水量等數(shù)據(jù),同時(shí)掛載時(shí)鐘芯片DS3231,提供系統(tǒng)運(yùn)行時(shí)間,設(shè)定灌溉時(shí)間段以及控制灌溉時(shí)長(zhǎng)。
圖4 系統(tǒng)框架
ESP8266是獨(dú)立的32位MCU應(yīng)用系統(tǒng),同時(shí)集成了WiFi等功能模塊,具有完整且自成體系的WiFi環(huán)境[9]。ESP8266具備獨(dú)立運(yùn)行模式,但也可以作為通信模塊搭載于其他主控芯片,幫助主控芯片接入互聯(lián)網(wǎng)[10]。本設(shè)計(jì)把ESP8266模塊作為一個(gè)相對(duì)獨(dú)立運(yùn)行的系統(tǒng),在Arduino編譯環(huán)境下,對(duì)ESP8266編程并運(yùn)行,用以訪問天氣網(wǎng)站,獲取天氣預(yù)報(bào)數(shù)據(jù),并解析封裝,以固定編碼形式發(fā)送給STM32單片機(jī)。此外,還需要在Arduino編譯環(huán)境下對(duì)“開發(fā)板管理”進(jìn)行安裝配置。
圖5中,ESP8266與STM32單片機(jī)通過串口2進(jìn)行數(shù)據(jù)讀取。STM32單片機(jī)接收到降水量數(shù)據(jù)后,將其作為模擬控制器的輸入之一。圖5中,PA12端口控制ESP8266的復(fù)位端(低電平復(fù)位)。
圖5 ESP8266應(yīng)用原理與接口設(shè)計(jì)
系統(tǒng)選擇型號(hào)為HKSHC03S的土壤濕度傳感器,其供電電壓為5 V,輸出電壓為0~3.3 V,線性度良好。土壤濕度傳感器的輸出信號(hào)接STM32的PA1(ADC1通道)口,經(jīng)STM32單片機(jī)讀取后,轉(zhuǎn)換為土壤濕度等級(jí)。圖6所示為土壤濕度傳感器接口,圖7所示為傳感器輸出電壓與濕度間的關(guān)系。
圖6 土壤濕度傳感器接口設(shè)計(jì)
圖7 傳感器輸出電壓與濕度之間的關(guān)系
ESP8266訪問天氣API接口,并發(fā)送請(qǐng)求,返回的天氣數(shù)據(jù)為JSON格式,這是一種輕量級(jí)數(shù)據(jù)交換格式。在Arduino編譯環(huán)境下加載Arduino JSON庫(kù)(V5.13.5),可調(diào)用函數(shù)對(duì)返回的JSON數(shù)據(jù)進(jìn)行解析。ESP8266程序流程如圖8所示。ESP8266以定時(shí)方式訪問天氣數(shù)據(jù),每發(fā)送一次請(qǐng)求,就讀取一次數(shù)據(jù),然后解析、封裝數(shù)據(jù)并將其發(fā)送到STM32主控芯片。本設(shè)計(jì)中,解析后的數(shù)據(jù)以符號(hào)“$”開始,以符號(hào)“*”結(jié)尾,中間以“,”分隔字符串,如“$DAILY,11,9,30,24,11.3,NW,5,87,9,4,30,23,0.0,W,4,85*”,其中,“$DAILY”為引導(dǎo),用“,”將16組數(shù)據(jù)分隔開?!?1,9,30,24,11.3,NW,5,87,”表示預(yù)報(bào)數(shù)據(jù),各數(shù)字分別代表白天天氣代碼、晚間天氣代碼、最高溫、最低溫、降水量(數(shù)據(jù)是11.3,單位為mm)、風(fēng)向、風(fēng)力等級(jí)、濕度。后面的8組數(shù)據(jù)是后天的預(yù)報(bào)數(shù)據(jù),含義同上。降水量以數(shù)值表示,對(duì)應(yīng)不同的降水級(jí)別。ESP8266程序中返回?cái)?shù)據(jù)的具體含義可查看官方API接口文檔。獲取的多項(xiàng)數(shù)據(jù)可作為后續(xù)的其他應(yīng)用。
圖8 ESP8266程序流程
此外,ESP8266還可定時(shí)獲取網(wǎng)絡(luò)時(shí)間,一方面,可對(duì)控制器進(jìn)行自動(dòng)校時(shí),另一方面,STM32檢測(cè)ESP8266獲取網(wǎng)絡(luò)時(shí)間的間隔超過一定時(shí)段范圍后,STM32將發(fā)送重啟ESP8266指令,并自動(dòng)連接WiFi。
土壤濕度傳感器的輸出電壓信號(hào)經(jīng)STM32的ADC1輸入端PA1采樣、讀取后,得到數(shù)字量addat。表5所列為土壤濕度傳感器傳感數(shù)據(jù)標(biāo)定與對(duì)應(yīng)ADC轉(zhuǎn)換結(jié)果數(shù)字量之間的關(guān)系。STM32的ADC轉(zhuǎn)換為12位,其滿量程為4096(3.3 V)。
表5 土壤濕度傳感器數(shù)據(jù)標(biāo)定與對(duì)應(yīng)的ADC轉(zhuǎn)換值
土壤濕度程序設(shè)計(jì)采用拆線法,獲取轉(zhuǎn)換結(jié)果addat,范圍設(shè)為h1~h2(h1>h2),對(duì)應(yīng)的數(shù)字量為d1~d2(d1 STM32主程序主要包括串口數(shù)據(jù)接收、土壤濕度讀取、模糊控制判斷、時(shí)間顯示與控制、TFT液晶顯示以及E2PROM存儲(chǔ)與讀取等。綜合STM32內(nèi)部資源,程序設(shè)計(jì)時(shí)把A/D轉(zhuǎn)換結(jié)果以及串口接收以DMA方式傳輸,以提高程序效率。主程序流程如圖9所示。 圖9 主程序流程 本設(shè)計(jì)通過STM32和ESP8266設(shè)計(jì)了智能硬件系統(tǒng),合理規(guī)劃了各模塊的軟硬件應(yīng)用,充分利用STM32的片上資源,系統(tǒng)檢測(cè)WiFi模塊的網(wǎng)絡(luò)連接狀態(tài),以有效保證獲取數(shù)據(jù)的可靠性。WiFi模塊基于Arduino編譯環(huán)境,實(shí)現(xiàn)ESP8266獨(dú)立訪問天氣數(shù)據(jù)API接口的功能,可獲取網(wǎng)絡(luò)時(shí)鐘和降水量等天氣預(yù)報(bào)數(shù)據(jù),結(jié)合土壤濕度,作為系統(tǒng)輸入,在MATLAB仿真分析的基礎(chǔ)上,通過模糊推理得到灌溉時(shí)長(zhǎng),實(shí)現(xiàn)智能灌溉,達(dá)到節(jié)水目的。4.3 主程序設(shè)計(jì)
5 結(jié) 語
物聯(lián)網(wǎng)技術(shù)2021年12期