郭 伏,温宗周
(西安工程大学电子信息学院,西安710048)
长期以来,我国农业一直采用大水漫灌的浇灌方式,此种方式效率低,而且对水资源造成了浪费。近些年来,因工厂数量迅猛剧增,人口增多[1],发展节水灌溉技术就显得尤为重要。
我国很多灌溉区域都装有微喷或滴灌设备,但是在节水方面仍然处于较低水平。国内成套的自动灌溉系统还是较少,较为简陋,大多数采用人工调控。大部分自国外引进的产品价格高且不适于我国现实国情。传统的灌溉系统传输数据多采用有线连接的方式,由上位机和下位机组成。但此类系统布线复杂,且不易移动。随着自动化技术不断发展,灌溉规模也越来越大,在检测范围增大、传感器节点增多的情况下,安装布线和移动的问题也会增加;大范围布线也导致了投资成本的增加。无线通信传输方式有着简单灵活的特点,用来传输采集的数据,可以省去复杂的布线,节点布置也变得简单灵活,提高了便利性。
综合以上现实背景,开发出一款以ESP8266 作为传输中转站,STM32 作为主控制器的智灌溉远程监测系统。该系统主要包括感知层、网络层和应用层三个部分,三者之间通过无线路由器互相连接。利用物联网技术和上位机建立环境监测系统,能够实时地获取监测地点的温湿度,实现远程采集数据的功能[2]。
基于ESP8266 组建智能灌溉监测系统,可解决监测实时性及自适应性的问题。方案综合利用了计算机技术、智能控制技术和农业节水技术[3]。系统对农田信息,包括土壤水分、空气温湿度、光照和二氧化碳含量等数据进行精确采集,并借助于自动化控制技术智能地决定灌溉用水量。它只需要通过控制继电器的输出状态即可对作物进行灌溉。
系统主要包括以下几个模块:STM32 控制模块、传感器采集模块、继电器执行模块、ESP8266 Wi-Fi 传输模块、LCD 显示模块[4]。各模块之间的关系如图1 所示。
图1 智能灌溉监测系统框图
此系统的工作原理如下:
对被控对象(灌溉区)的温湿度、土壤水分等进行实时采集,通过传感器将模拟量转为数字量,再经过无线传输模块ESP8266 中转站[5]将采集到的数据传送到STM32 控制器中。控制器将所采集的数据经过模糊控制算法进行处理,再传递给各执行器,即控制器驱动电磁阀或继电器。以此实现为作物补水或补光、二氧化碳等。微控制器模糊控制算法根据当前采集到的数据做出处理,例如当温度或湿度度超过或小于预先设定的作物最适生长温湿度时,系统会根据当前的数据计算出偏差量,继而为作物做出相应的调整。通过使用无线传输模块ESP8266,实现精确采集和实时调整,避免了作物因人力不能及时调整导致作物生长受限的局限性,这对于农作物的生长有很大的帮助,在解决劳力问题的同时也提高了作物的产量。
处理器采用的是ARM 芯片STM32F103。其主要作用是将传感器采集来的数据显示在LCD 屏并通过ESP8266 Wi-Fi 模块上传给上位机,以及对被控量做出处理并输出一个控制信号给执行机构。
TH-FDR2000 土壤水分传感器是一款基于时域反射原理,利用高频电子技术制造的高精度、高灵敏度的测量土壤水分的传感器[6]。可用来测量田间土壤的介电常数,从而反映出土壤的水分含量[7]。测量时,传感器产生的高频电磁波沿传输线进行传播,传输线的终端和周边物质的不连续会使传输中的部分能量通过传输线反射回来,就如同一束光沿着一个管道传播,在管的终端被镜子反射回来。通过测量电磁脉冲沿传输线传送所需要的时间差即可测出土壤的介电常数,从而测出土壤的含水量。THFDR2000 土壤水分传感器可测量土壤水分的体积百分比,是目前国际上最流行的土壤水分测量方法,适用于农业节水灌溉、花卉、牧场、土壤速测、温室大棚、植物培养等领域。TH-FDR2000 的供电电压为7~24V DC,可以输出电压,电流,数字信号。在此选择5V 供电,0~2.5V 电压信号输出。
DATA 接到STM32 的PA0 接口,用于微处理器与DHT11 之间的通讯和同步,采用单总线数据格式。TH-FDR2000 具体接线方法如图2 所示。
选用ESP8266 芯片作为Wi-Fi 无线传输模块。ESP8266 是一款超低功耗的UART Wi-Fi 透传模块,可将智能设备连接到无线网络上,进行网络通信,实现联网功能。该模块支持串口转Wi-Fi STA、串口转AP 和Wi-Fi STA+Wi-Fi AP 的模式,可通过AT 指令对系统参数进行更改设置,从而建立串口-Wi-Fi 数据传输方案,做到设备通过互联网传输数据。例如以“AT+CWMODE=3 ”设置模块Wi-Fi 模式为AP+STA 模式。
相关的两个重要函数包括:
一、atk_8266_send_cmd 函数。该函数用于向ATK_ESP8266 模块发送AT 指令。它带有3 个参数,cmd 表示要发送的指令字符串,ack 表示发送指令后期待得到的应答字符串,waittime 表示等待应答的时间(单位:10ms)。
如:atk_8288_send_cmd ("AT+RST","OK",20);表示发送指令:AT+RST 到Wi-Fi 模块,重启模块;期待的应答为:OK;等待时间为200ms。
二、atk_rm04_quit_trans 函数。其作用是退出透传模式,进入AT 指令模式。
另有三个查询函数:
atk_8266_consta_check 函数,用于检查当前连接(TCP/UDP)是否建立(或存在);
atk_8266_get_wanip 函数,用于获取模块STA模式或者AP 模式下的IP 地址及MAC 地址;
atk_8266_get_ip 函数,用于获取模块AP+STA模式下的IP 地址及MAC 地址。
ESP8266 Wi-Fi 传输模块原理图如图3。
图3 ESP8266 Wi-Fi 传输模块原理图
PID 算法包括比例、积分、微分三个部分[8]。
比例算法表达式为:
其中,Ep为当前误差值,Kp为比例系数,Outp为常数,POUT即为比例作用下的输出。算法实施的条件是当前状态下系统有偏差。它的优点是在系统有偏差的条件下能立即做出调整;缺点是不能使被控对象稳定在某个状态。
积分算法表达式为:
其中,Ei为积分偏差,Ti为积分时间常数,Kp为比例系数,Outi为常数,IOUT即为积分作用下的输出。此算法主要是利用从系统开机以来所有时间段内的偏差情况来输出一个控制信号。它的优点是:若从系统开机以来没有偏差,则会输出一个控制信号用以维持当前值;缺点是:若从开机以来存有偏差,而当前值快接近设定值,则会输出一个控制信号来阻碍当前值趋近于设定值。
微分算法表达式为:
其中,Ed为微分偏差,Td为微分时间常数,Kp为比例系数,Outd为常数,DOUT即为微分作用下的输出。此算法利用最近几次偏差的变化率,计算出最近对控制对象的变化趋势。它的优点是能尽早抑制控制对象的变化;缺点是不能单独作为一则控制算法使用,它只考虑偏差变化的速度,不关心系统是否有偏差。
将这三种控制算法综合起来用于同一个控制系统中,令三者优势互补,形成一个最佳PID 控制算法,即:
将各项的Out 常数归并为一,整理后得:
PID 算法应用于单片机时,对积分和微分项可以作近似变换。
积分项可改写成:
即用过去一段时间的采样点的偏差值的代数和来代替积分。式中,T 是采样周期,即控制周期,每隔T 时间进行一次PID 计算。
微分项可改写成:
其中Ek是本次偏差,Ek-1是上一次的偏差值。如此改写后,即得出单片机中PID 算法表达式:
系统以土壤湿度作为被控对象,将传感器采集来的数据作为输入,经PID 算法处理后,输出一个相应的PWM 波从而使继电器驱动水泵相应的工作状态(0 功率、半功率等),从而实现快速精准灌溉,使作物处于最佳生长条件,同时有利于减少资源浪费。本系统PID 实现部分程序如下:
首先进行采集模块调试,上电以后显示屏需要手动进行校准,校准完成后要把程序下载到控制器中运行,观察显示屏是否能显示采集到的相应数据。屏显效果如图4 所示。
图4 TFT-LCD 效果图
由图可见,显示屏上面显示有空气湿度、温度以及土壤湿度(水分含量)的相关数据,可见此时数据采集模块与显示模块是可以正常工作的。
再进行ESP8266 Wi-Fi 模块测试。在测试中使用手机网络调试助手与模块之间进行数据传输。串口无线接入点网络连接方式选为ATK-ESP8266 模块(Wi-Fi AP)和智能手机(Wi-Fi STA)[9]。即模块通过Wi-Fi 连接智能手机。在Wi-Fi 测试主界面下,按KEY_UP,即可进入串口无线AP(COM-AP)工作模式选择界面,共有三个工作模式可供选择:TCP服务器、TCP 客户端、UDP。选择TCP 服务器,按KEY_UP 按键,进入TCP 服务器测试,此时,程序会配置模块为Wi-Fi AP 模式。例如:SSID 为ATKESP8266;加密方式选择wpawpa2_aes[10];密码设为12345678。模块IP 地址(TCP 服务器IP 地址)设为192.168.4.1[11];端口设为8086。按如上配置好后,进入TCP 服务器测试界面,如图5 所示。
图5 TCP 服务器测试界面
此时,模块的TCP 服务器已经开启,IP 地址为192.168.4.1[12];端口号为8086。由于没有TCP Client来连接,当前状态显示:连接失败。此时只需打开手机的Wi-Fi 功能,找到名为ATK-ESP8266 的网络SSID,选取该网络,输入密码:12345678,再点击连接,即可连接到模块,如图6 所示。
图6 手机连接ESP8266-WIFI 网络
几秒后,手机连接到ATK-ESP8266 模块。由图所示,模块给手机分配的IP 地址为:192.168.4.2。此时可在手机上运行网络调试助手,依次设置[13-15]:
1.进入TCP Client;2.点击增加图标;3.输入服务器IP 和端口号;4.按增加按钮;5.连接建立。
经过如上设置以后,手机和模块就建立了TCP连接,此时开发板屏显状态将会变为:连接成功。此时如果输入了错误的IP 端口号,右侧图片将不会显示端口号,而会显示“ disconnect”。在连接成功建立后,通过按键KEY-Y0 即可向手机发送采集数据以及继电器的状态以实现监测的目的,如图7 所示。
图7 手机端接收采集数据
从图中可见,此时手机接收到两次数据:第一次为温度23℃、空气湿度30%、土壤湿度40%,继电器关;第二次为温度25℃、空气湿度30%、土壤湿度10%,继电器开。可见,通过Wi-Fi 模块与手机连接,实现了土壤环境信息即时地发送到智能终端。
经多次测试验证,设计的基于ESP8266 的智能灌溉监测系统可正常运行,完成当前环境下土壤湿度的采集,并经微处理器处理,驱动执行机构相应动作,通过上位机远程实时监测当前植被所处环境下各项参数。系统方便用户及时了解环境情况,在某种突发情况下可人工操作介入。系统操作简单、高效,易于推广。由于Wi-Fi 无线网络传送数据时会有延迟,个别情况下在上位机端读取到的数据信息可能与LCD 显示屏的信息不同步,在下一步的研究工作中将会针对这一问题加以改进。