曹鹏飞,肖志飞,文建博,郭青盛,秦立静,刘欢
(甘肃农业大学信息科学技术学院,甘肃兰州 730070)
当今,水资源稀缺问题越来越严重,尤其是淡水资源。水资源稀缺问题不仅仅是资源方面的问题,更关系到社会可持续发展和国家经济发展,甚至可以说是影响国家稳定繁荣发展的重大战略问题[1]。我国西北地区水资源严重缺乏,即使是南水北调工程也只是杯水车薪,因此需要发展节水灌溉技术。通过毛细管出口,水或者水和肥料的混合物被送到作物根区的土壤中进行吸收[2]。虽然大多数农村在农田灌溉方面仍采用滴灌技术,但是我们国家在农业灌溉方面正做着更全面的改变。
滴灌是用专用的发射器、滴管或滴灌带将水缓慢均匀滴入作物根部进而使土壤变湿润的一种先进的灌溉方式。节水灌溉是一种较为科学且先进的灌溉方式。采用较为先进的科学器件和控制方式将水适量地运送到农作物的根部,使农作物的土壤湿度一直处于适宜的区间,使水资源的利用率得到了大幅提升[3]。我国节水灌溉技术较为落后,是我国现代化农业的不足之一,滴灌技术对灌溉系统管理水平有较高的要求,确保均匀灌溉,才能使其潜力得到最大限度地发掘[4]。文中设计的是一种基于STM32的农田节水灌溉系统。
灌溉技术可以追溯到秦汉以前,李冰主持修建的都江堰是最早的农田灌溉系统,在同一时期节水灌溉开始发展起来。1997 年全国喷灌面积已达19.33 万hm2。从二十世纪七十年代我国自国外引进3 套当时较为先进的灌溉设备开始,至今我国的灌溉技术已经取得了巨大的成就。吸收和借鉴国外先进技术的同时,结合中国地理环境,研制出了我国自己的灌溉设备,现在全国几乎所有的地方都可以看到节水灌溉设备的应用[5]。
国外节水灌溉技术水平远远高于国内,尤其是发达国家。许多发达国家已经用计算机进行控制,通过湿度传感器的检测,反馈给计算机,计算机再控制灌溉系统进行适量的灌溉[6]。在温室、大棚等较小的环境下,计算机控制的灌溉系统使用较为广泛,通常用一个计算机控制几个或十几个温室里的灌溉系统,极大地减少了水资源的浪费,而且节省了人力资源,提高了控制的精准度[7]。美国特别强调微灌溉水利系统的整合、可持续性和敏感性,将新产品、微灌系统过滤器和液压过滤器与计算机模拟技术相结合[8]。
传统的灌溉方法不仅浪费了本就稀缺的水资源,而且不能完美地把控浇水时间。节水是时代的主题,节水灌溉在当今具有很大的发展潜力,节约水资源的同时又发展了农业[9]。
该系统是由电源、STM32 单片机、温湿度传感器、串行接口通信模块、PC 端和各种显示设备等组成。用户通过上位机对现场数据进行检测并且进行实时有效的远程控制,可以实现对土壤信息的采集,将数据传输至STM32 单片机并在PC和手机应用端显示,最后对数据进行处理和存储[10]。
该系统主要是通过及时收集湿度,通过科学的农业知识来判断灌溉时机和灌溉时间。通过湿度检测模块收集湿度并传送给主控制模板,通过主控制模板的主程序来判断是否灌溉和灌溉量。科学灌溉可以做到局部的精准灌溉,具有较高的科学性。这种灌溉方式不仅可以为土壤补充水分,满足植物生长的大部分湿度和温度需求,还可以把植物所需的肥料溶于水中,结合现代农业技术和互联网知识实现一次性智能灌溉[11]。该系统也可以改善土壤的盐碱化,当土壤出现盐碱化,可以利用灌溉冲洗掉土壤中的可溶性盐分。总设计框图如图1 所示。
图1 总设计框图
该系统使用Cortex-M3 内核中的32 位CPU 处理器,为MCU 提供低成本平台,降低能源成本,其具有高质量的计算性能和先进的中断响应系统。ARM Cortex-M3 是一个32 位的RISC 处理器,具有更高的代码效率和ARM 内核性能。改进后的STM32F103系列有一个内置的ARM 核心,可与所有的硬件和软件兼容[12]。
数字温湿度感知模块可用温湿度传感器DHT11,DHT11 调节数字信号输出,并传送给温湿度复合传感器,确保了数据的可靠性和保真性,为长期测量工作提供了保障。DHT11 采用了一个电阻式感湿元件和一个NTC 测温元件,同时还连接着一个8位高性能单片机[13]。每个DHT11 传感器的校准都在极其严格的校准环境下进行。在传感器的存储器中,有探测调整系数的程序,传感器在检查信号的过程中将这些调整系数传送给电脑并显示。利用单线串联接口,使系统集成既快又简练。相比于同类产品,其体积很小,功耗超低,这使得它能胜任更复杂的工作环境,4 针单排引脚封装让其连接更方便。
Usart 是异步收发传输器,能非常快速地与其他设备进行连接,是全双工通信。其是一种设备间非常常用的串行通信方式,因为它简单便捷,因此大部分电子设备都支持该通信方式,其通信协议可分层为协议层和物理层。因为串口通信协议的简单、便捷,所以如今大多数的产品中都支持串口通信,通过串口通信可以实现与单片机的通信。硬件图如图2所示。
图2 硬件图
根据硬件电路设计的思路,系统软件程序采用模块化编程,利用Keil uVision5 开发环境,使用C 语言编写程序。系统主程序模块分为数据采集模块、数据分析模块、数据显示模块和数据存储模块。
首先初始化,实时扫描子程序传感器,通过处理单板数据获得环境信息。调用数据采集程序,将采集的空气温湿度值和土壤温湿度值作为当前的有效数据暂时保存在单片机内部,并调用数据分析子程序,对保存的所有暂存的湿度和温度数据进行平均化处理,保存平均值,将该温湿度平均值作为衡量和控制灌溉与否的主要参数,再与设置的温湿度限值作比较,如果符合灌溉要求,则进行灌溉[14]。
1)主程序首先完成初始化;
2)各模块同时进入启动阶段,完成模块上的初始值标识;
3)使用DHT11 传送土壤湿度感知信号;
4)再一次记录土壤湿度传感器获得的数值,如果湿度小于22%RH,温度高于30 ℃,电磁阀就会启动,喷水并提高湿度。如果湿度提高到50%RH,电磁阀就会关闭,温度也会降低。另外,在湿度下降的过程中,主要程序将通过DMA 方式继续读取土壤湿度感知信号。系统程序流程如图3 所示[15]。
图3 系统程序流程图
5)最后在PC 端和手机APP 上显示温湿度、电磁阀是否打开以及灌溉时长。控制窗口如图4 所示。
图4 控制窗口
由于户外采集环境复杂,影响因素很多,为了避免噪声干扰,采用了连续取值取平均数的方法来保证采集数据的可靠性。工作原理是连续采样N次数据,在这些数据中忽略最大值和最小值,计算剩余的N-2 个数据的平均值,把该平均值作为最后判断的参数。具体子程序思想是在C 语言中创将一个大小为N的一维数组,N通常是10~13,抽样数据按顺序排列成数组,当N个数据被收集时,会将显示的最大值和最小值去掉,其余的求平均值[16]。
是否需要灌溉农作物,由多个环境因素来决定。该系统将空气温湿度和土壤温湿度的综合因素作为是否需要灌溉的条件,将传感器反馈回来的土壤和空气温湿度作为灌溉的条件,再将反馈回来的温湿度值求取平均值,将最后取得的平均值作为影响灌溉的关键参数[17-18]。不同季节权重取值也不同,可对权重进行灵活设置。
文中提出了一种基于STM32的节水灌溉系统。为了更精准地控制灌溉系统,用算法的方式对空气和土壤温湿度进行控制。该灌溉系统具有非常快捷的控制方式,可以通过计算机操作,快捷简单,指示清楚。并且由于使用的是STM32 单片机,该单片机强大的性能使该系统可以通过计算机模块进行远程操控。在农业生产过程中可以科学、准确、便捷地为农作物提供灌溉,还可以通过系统设置来满足不同农作物对土壤湿度和用水量的需求。