基于STM32的土壤湿度监控装置设计与试验
2021-08-25魏楚伟黄健荣朱寒豹程俊峰
魏楚伟,侯 露,黄健荣,朱寒豹,程俊峰
(1.广东省现代农业装备研究所,广东 广州 510630;2.广东弘科农业机械研究开发有限公司,广东 广州 510555)
0 引言
中国的人均淡水资源占有量很少,仅占世界平均量的四分之一,水资源匮乏[1]。目前农业用水占我国总用水量的80%,且农业用水仍以人工和经验为主[2]。因而,解决农业灌溉用水问题对缓解水资源紧缺具有重要意义[3]。土壤湿度是衡量作物生长环境的重要指标[4],根据土壤湿度实现自动灌溉可以提升农业生产效率,提高农业生产自动化程度,减少人工成本,降低劳动强度[5]。康姝怡等[6]利用YL-69 湿度传感器测量土壤湿度,基于AT89C51 单片机设计了植物生长调节系统实现自动灌溉。邹声平等[7]设计了基于STC89C52 的智能灌溉系统,该系统误差小于5%,且操作简单,运行稳定。孙小春等[8]选用YL-69 湿度传感器,设计了一个基于单片机的智能灌溉系统,实现了智能灌溉。李烨桐等[9]采用土壤湿度传感器采集花卉土壤湿度信息,实现个性化实时灌溉。目前土壤湿度的采集大多局限在实验室研究,开发出成本低、便携、操作简单、采集精度高的土壤湿度采集装置是今后研究的关键方向[10]。
本文综合考虑成本、使用环境和便携性的要求,设计开发一种基于STM32 控制器,且具备人机交互界面的便携式自动控制灌溉装置。
1 系统总体方案
本装置主要由单片机控制器模块、土壤湿度传感器模块、液晶显示屏模块、按键模块、串口模块、水肥机继电器模块和电源模块等部分组成。单片机为核心的控制系统采集土壤湿度信息后,发出相关指令控制水肥机的启停,使土壤湿度值保持在一定范围,保证植物生长所需的最优土壤湿度环境;配备了显示屏和按键,可实时显示土壤湿度以及水肥机启停状态,设定、调整土壤湿度在最优范围。具体工作原理如下。
土壤湿度传感器模块将所采集的土壤湿度信号经放大后传送至单片机内部的A/D 转换电路,经A/D 转换后,通过数据处理得出土壤的湿度值。单片机微控制器模块根据采集到的湿度数据,将最后处理的结果发送到LCD 显示器进行显示。同时单片机微控制器根据设定的湿度范围来判断水肥机是否需要开启,若土壤湿度低于下限值,就启动水肥机进行灌溉;若湿度高于上限值,则关闭水肥机,停止灌溉。系统通过电源模块为STM32 单片机、土壤湿度传感器等模块供电。系统总体结构如图1 所示。
图1 系统总体结构框图Fig.1 Overall block diagram of the system
2 硬件选型与电路设计
2.1 土壤湿度传感器模块
本装置选用的土壤湿度传感器是TDR-3 土壤湿度传感器,实物如图2 所示,该湿度传感器测量的土壤湿度为体积百分比(%),是一款高精度、高灵敏度测量土壤水分的传感器。
图2 TDR-3 土壤湿度传感器Fig.2 TDR-3 soil humidity sensor
土壤湿度传感器的信号端输出的为电压信号,电压范围是0~2.5 V。在预试验过程中发现采集的模拟电压值与实际湿度值并不完全是线性关系,在空气中存在一定的漂移电压,因此在粘土的环境中进行了数据的标定,得到电压与土壤湿度的关系如表1 所示。
表1 电压与土壤湿度的关系Tab.1 Relationship between voltage and humidity value
2.2 控制器模块
选用STM32F103CRT6 单片机作为本装置的控制系统,该单片机有功能强、功耗低、成本低等优点。STM32 内部的A/D 转换器可将土壤湿度传感器采集到的模拟电压信号转换为数字信号,以便通过程序处理。当有模拟量输入时,单片机内部模拟数字转换器(Analog-to-digital converter,ADC)通过多次比较,使得数字量逐次逼近输入模拟量的对应值,通过式(1)计算出电压值。土壤湿度传感器需要一路模拟量的输入,选择STM32 的PA1 引脚作为数据输入口,为了加快数据的处理能力,同时开通了DMA 数据通道。
式中soil为ADC采集处理得到的模拟电压值,V;ADC_ConveredValue为寄存的值;4096为12位寄存器满偏的值;3.3为单片机参考电压VDD的值。
2.3 键盘模块
该模块用于输入湿度值的上下限值,将按键开关直接跟单片机的IO 口连接,公共端均接地。如图3 所示,按键K1,K2,K3,K4,K5 分别与单片机的PB3,PB4,PB5,PB6,PB7 引脚相连。K1 和K2可分别增加和减小湿度上限值,K3 和K4 可增加和减小湿度下限值,K5 为屏幕开关键。当系统上电时,系统会设定一个默认的上下限值,通过按键可修改湿度值的上下限,修改后可自动保存湿度上下限值。
图3 按键电路图Fig.3 Key circuit diagram
2.4 液晶显示屏模块、继电器模块与电源模块
液晶显示器模块选用LCD12864 液晶显示器,它是一种专门用来显示字母、数字、符号和中文等的点阵型液晶模块,取决于自身的取模数组的定义。
水肥机继电器模块选用型号为HK4100FDC5V-SHG 的固态继电器,图4 所示为继电器接线图,RELAY 表示继电器。当单片机的PIC1 引脚输出高电平时,三极管Q2 饱和导通,继电器吸合,同时点亮状态指示的发光二极管,继电器的常开触点闭合,相当于开关闭合。当PIC1 引脚输出低电平时,三极管Q2 截止,继电器线圈两端没有电位差,继电器衔铁释放,同时状态指示的发光二极管熄灭,继电器的常开触点释放,相当于开关断开。在三极管截止的瞬间,由于线圈中的电流不能突变为零,继电器线圈两端会产生一个较高电压的感应电动势,此时线圈产生的感应电动势可以通过二极管释放,起到保护三极管免被击穿的作用,也消除了感应电动势对其他电路的干扰。
图4 继电器模块接线图Fig.4 Drive circuit diagram
选用5 V 蓄电池为整个设备供电,土壤湿度传感器的工作电压为5 V,蓄电池可直接为土壤湿度传感器供电;由于单片机工作电压为3.3 V,故通过AMS1117 电压转换器将蓄电池的5 V 电压转换为3.3 V 电压为单片机供电,电源模块电路如图5所示。其中电容C13,C14 为稳定电容,具有抑制脉冲干扰,高频以及减少纹波的作用,保持供电系统稳定。
图5 电源电路图Fig.5 Power supply circuit diagram
3 软件设计
3.1 主程序
系统上电后,系统对串口模块程序,液晶显示屏模块程序和ADC 采集程序等进行初始化。系统初始化配置后,默认设置湿度上限值为40%,下限值为30%,通过土壤湿度传感器采集土壤湿度,与设定的上下限值进行对比,来决定施肥机是否开启。当有按键输入时,系统会触发外部中断处理程序,对按键扫描,通过按键来调整所需湿度的上下限值,并且传感器一直处于采集的状态,主函数流程如图6所示。
图6 主函数流程图Fig.6 The main function process
3.2 按键处理程序
该模块主要通过4 个按键K1,K2,K3,K4 设置系统湿度的上下限值,K1 和K2 可分别增加和减小湿度上限值,K3 和K4 可增加和减小湿度下限值,K5 为屏幕开关键。系统对按键的响应设置为外部中断模式,响应效果快,并实时可对湿度值进行修改,软件流程图如图7 所示。
图7 按键响应流程图Fig.7 Keys response flow chart
3.3 按键处理程序
该模块的主要功能是采集土壤湿度并进行数据处理,通过STM32 内部自带的ADC 转换器进行转换,本装置只用到了一个土壤湿度传感器,通过ADC1 的PB1 通道进行测量读取。并在此引用了式(1)进行计算,代码如下所示
ADC_ConvertedValue=ADC_Get(); // 该ADC 是读取ADC 寄存中的值。
soil=(float) ADC_ConvertedValue/4096*3.3;
土壤湿度数据采集处理软件流程如图8 所示。
图8 土壤湿度传感器软件流程Fig.8 Software flow of soil moisture sensor
4 验证试验
根据以上描述搭建基于STM32 的土壤湿度监控装置的样机并调试,样机如图9 所示。为验证本文设计的基于STM32 的土壤湿度监控装置是否能够实现监控土壤湿度并根据湿度控制水肥机启停的功能,进行了验证试验。
图9 土壤湿度监控装置样机Fig.9 Soil humidity monitoring device prototype
4.1 试验材料与方法
准备21 盆干燥的土壤,并向其中加入不同体积的清水静置30 min,其中试验组1 不加入清水,作为对照组。将本装置的土壤湿度上下限值分别设置为40%和20%,如图10 所示。用本装置依次测量每个盆内土壤湿度并记录单片机获取的传感器电压值,观察施肥机电磁阀是否启动,将万用表(型号:胜禄高SK-890C,分辨率:0.001 V,准确度:±0.8%)调至20 V 档测量传感器输出电压。
图10 实物测试环境Fig.10 Physical test environment
4.2 试验结果与分析
当本装置插入盆中土壤时,显示屏能实时显示土壤湿度。当土壤湿度小于20%时,水肥机启动,增加土壤湿度;当土壤湿度达到上限,施肥机停止灌溉。试验结果如表2 所示,由表2 可知传感器输出电压与单片机读取电压差值在-0.08~0.07 V 范围内,试验证明该装置能实现监控土壤湿度并根据湿度控制水肥机启停的功能,单片机读取的土壤湿度信息精确真实,具有实际意义。
表2 验证试验结果Tab.2 Verification of the test results
5 结论
1)通过TDR-3 土壤湿度传感器,结合STM32 单片机技术,设计出基于单片机的土壤湿度采集及控制装置,可实时监测土壤湿度,并结合灌溉设施技术进行水分补偿,具有显示土壤湿度并控制灌溉的功能。
2)通过试验证明了该装置能够快速监测土壤湿度,并控制水肥机根据土壤湿度及时响应;可广泛应用于各类水肥一体化智能灌溉等场景,减少了人工成本和劳动强度。