APP下载

基于天气预报的智能灌溉模糊控制系统设计

2021-12-14周安妮何镇琦宋金城刘静波

物联网技术 2021年12期
关键词:模糊集土壤湿度模糊控制

黄 淼,周安妮,何镇琦,宋金城,刘静波

(南京工程学院 信息与通信工程学院,江苏 南京 211167)

0 引 言

我国虽是农业大国,但水资源并不丰富。有资料表明,我国农业用水约占社会用水总量的60%,但其利用率只有45%,与其他先进国家70%~80%的利用率相比,差距明显。在现有18.26亿亩耕地上,大多数仍未采用节水灌溉系统[1],以致于水资源缺口逐年增加。预计到2030年,人口增加到16亿,水资源缺口达400亿~600亿立方米[2]。

改进相对落后的灌溉技术,提高水资源利用率,采用智能化、精准化灌溉技术是值得推行的方法。模糊控制在农业领域得到了较大发展[3-4],在当前网络建设较完善,网络技术较成熟的情况下,方便、快捷地获取天气预报数据成为可能。

1 智能灌溉模糊控制

1.1 模糊控制器设计

控制器中的ESP8266作为WiFi模块,可访问天气网站API接口,获取降水量数据与土壤湿度数据,将这两个数据作为输入,通过模糊控制策略设计,控制灌溉电磁阀根据用户需求有选择的输出灌溉用水[5]。

模糊控制器中,一般以降水量RQ和土壤湿度E作为输入数据,灌溉时长或灌溉水量为输出数据[6-7]。本设计以灌溉时长为输出,结合土壤湿度传感器的数据标定数值,制定土壤湿度模糊集划分标准,见表1所列。降雨量RQ模糊集划分标准见表2所列。灌溉时长以0~15 min为标准,制定模糊集划分见表3所列。在此基础上,制定模糊控制表。模糊控制表的制定需结合实际情况,还需访问天气数据API返回数据中的降雨量等级标准,表4为经过调整的模糊控制表。

表1 土壤湿度E模糊集

表2 降雨量RQ模糊集

表3 灌溉时长T模糊集

表4 模糊控制表

1.2 仿真分析设计

本系统运用MATLAB软件对模糊控制进行仿真分析,构建以土壤湿度和降雨量作为双输入,灌溉时长为单输出的系统模型,如图1所示。根据土壤湿度和降雨量的划分等级,模糊规则推理系统共有35条规则,模糊控制规则在MATLAB的制定如图2所示。输入、输出变量采用三角形隶属函数,借助Mamdani推理算法进行仿真分析,通过centroid(面积中心法)[8]解模糊得到输出变量(确定的值)。图3所示为模糊推理的输出曲面。

图1 模糊控制MATLAB仿真系统

图2 模糊控制规则制定

图3 输出曲面

2 系统结构

系统框架如图4所示。控制器以STM32F1032RCT6单片机为核心,通过串口2与ESP8266模块进行数据交互。ESP8266访问的天气数据API接口是一个标准的Restful API接口,提供标准化的数据访问,适用于智能硬件、APP等系统。ESP8266访问天气API接口后,经授权可获取包括降水量在内的多项数据。STM32单片机读取天气预报数据,土壤湿度传感器检测土壤湿度,经MATLAB仿真、解模糊后,得到控制时长,输出端通过驱动电路驱动电磁阀,实现按需灌溉。控制器配备了2.8寸TFT显示屏,用于显示天气预报数据、土壤湿度测量数据和当前输出状态等。控制器在STM32的SPI1接口挂载字库芯片,用以显示中文;在I2C接口挂载E2PROM芯片,用来存储接收的降水量等数据,同时挂载时钟芯片DS3231,提供系统运行时间,设定灌溉时间段以及控制灌溉时长。

图4 系统框架

3 硬件模块与接口设计

3.1 ESP8266模块与接口设计

ESP8266是独立的32位MCU应用系统,同时集成了WiFi等功能模块,具有完整且自成体系的WiFi环境[9]。ESP8266具备独立运行模式,但也可以作为通信模块搭载于其他主控芯片,帮助主控芯片接入互联网[10]。本设计把ESP8266模块作为一个相对独立运行的系统,在Arduino编译环境下,对ESP8266编程并运行,用以访问天气网站,获取天气预报数据,并解析封装,以固定编码形式发送给STM32单片机。此外,还需要在Arduino编译环境下对“开发板管理”进行安装配置。

图5中,ESP8266与STM32单片机通过串口2进行数据读取。STM32单片机接收到降水量数据后,将其作为模拟控制器的输入之一。图5中,PA12端口控制ESP8266的复位端(低电平复位)。

图5 ESP8266应用原理与接口设计

3.2 土壤湿度传感器与接口设计

系统选择型号为HKSHC03S的土壤湿度传感器,其供电电压为5 V,输出电压为0~3.3 V,线性度良好。土壤湿度传感器的输出信号接STM32的PA1(ADC1通道)口,经STM32单片机读取后,转换为土壤湿度等级。图6所示为土壤湿度传感器接口,图7所示为传感器输出电压与湿度间的关系。

图6 土壤湿度传感器接口设计

图7 传感器输出电压与湿度之间的关系

4 软件设计

4.1 ESP8266程序设计

ESP8266访问天气API接口,并发送请求,返回的天气数据为JSON格式,这是一种轻量级数据交换格式。在Arduino编译环境下加载Arduino JSON库(V5.13.5),可调用函数对返回的JSON数据进行解析。ESP8266程序流程如图8所示。ESP8266以定时方式访问天气数据,每发送一次请求,就读取一次数据,然后解析、封装数据并将其发送到STM32主控芯片。本设计中,解析后的数据以符号“$”开始,以符号“*”结尾,中间以“,”分隔字符串,如“$DAILY,11,9,30,24,11.3,NW,5,87,9,4,30,23,0.0,W,4,85*”,其中,“$DAILY”为引导,用“,”将16组数据分隔开。“11,9,30,24,11.3,NW,5,87,”表示预报数据,各数字分别代表白天天气代码、晚间天气代码、最高温、最低温、降水量(数据是11.3,单位为mm)、风向、风力等级、湿度。后面的8组数据是后天的预报数据,含义同上。降水量以数值表示,对应不同的降水级别。ESP8266程序中返回数据的具体含义可查看官方API接口文档。获取的多项数据可作为后续的其他应用。

图8 ESP8266程序流程

此外,ESP8266还可定时获取网络时间,一方面,可对控制器进行自动校时,另一方面,STM32检测ESP8266获取网络时间的间隔超过一定时段范围后,STM32将发送重启ESP8266指令,并自动连接WiFi。

4.2 土壤湿度测量程序

土壤湿度传感器的输出电压信号经STM32的ADC1输入端PA1采样、读取后,得到数字量addat。表5所列为土壤湿度传感器传感数据标定与对应ADC转换结果数字量之间的关系。STM32的ADC转换为12位,其满量程为4096(3.3 V)。

表5 土壤湿度传感器数据标定与对应的ADC转换值

土壤湿度程序设计采用拆线法,获取转换结果addat,范围设为h1~h2(h1>h2),对应的数字量为d1~d2(d1

4.3 主程序设计

STM32主程序主要包括串口数据接收、土壤湿度读取、模糊控制判断、时间显示与控制、TFT液晶显示以及E2PROM存储与读取等。综合STM32内部资源,程序设计时把A/D转换结果以及串口接收以DMA方式传输,以提高程序效率。主程序流程如图9所示。

图9 主程序流程

5 结 语

本设计通过STM32和ESP8266设计了智能硬件系统,合理规划了各模块的软硬件应用,充分利用STM32的片上资源,系统检测WiFi模块的网络连接状态,以有效保证获取数据的可靠性。WiFi模块基于Arduino编译环境,实现ESP8266独立访问天气数据API接口的功能,可获取网络时钟和降水量等天气预报数据,结合土壤湿度,作为系统输入,在MATLAB仿真分析的基础上,通过模糊推理得到灌溉时长,实现智能灌溉,达到节水目的。

猜你喜欢

模糊集土壤湿度模糊控制
基于上下截集的粗糙模糊集的运算性质
土壤湿度传感器在园林绿化灌溉上的应用初探
基于51单片机控制花盆土壤湿度
T-S模糊控制综述与展望
基于模糊控制的PLC在温度控制中的应用
基于粗糙模糊集的输电杆塔塔材实际强度精确计算
基于模糊控制的恒压供水系统的研究
四川盆地土壤湿度时空分布及影响因子分析
中国不同气候区土壤湿度特征及其气候响应
用于光伏MPPT中的模糊控制占空比扰动法