毛 敏
(陕西国防工业职业技术学院,陕西 西安710300)
随着社会生产力的提升,我国农业得到较大的发展,对水资源的需求量逐步上升,我国农业用水量约占全国总用水量的70%,但农业灌溉用水的利用率比较低下,用水方式不当造成农业用水紧张,农业灌溉方式直接影响农业发展。因而,在灌溉系统合理地使用智能控制系统可以缓解水资源的紧缺,新型的灌溉技术能够提升水资源的利用率,并且可以降低农产品的生产成本[1-2]。
本文以Web服务器、Arduino Uno微处理器为核心,利用Wi-Fi模块、土壤湿度传感器设计了一种智能灌溉系统,Arduino Uno微处理器实时对土壤湿度传感器采集的数据进行分析,当土壤水分小于设定的阈值时,自动开启灌溉设备,对土壤水分进行智能调节。
系统中,在PC机上搭建Web服务器,采用TOMCAT作为服务器软件,Web服务器的后台程序通过Wi-Fi模块和Arduino Uno微处理器相连接,向Arduino Uno微处理器发送指令来采集土壤湿度数据[3]。
Arduino Uno微处理器把采集到的土壤湿度数据通过Wi-Fi模块传输到Web服务器,在Web服务器上部署的JSP接口程序接收到数据后,进行分析处理,并通过JS图形化接口显示在网页上,用户可以通过电脑或手机随时查看由Web服务器发送的土壤水分数据。当测量数据小于设定的阈值时,Arduino Uno微处理器自动开启浇灌设备,对土壤水分进行调节。系统结构如图1所示。
图1 系统结构Fig.1 System structure
土壤湿度传感器和Arduino Uno微处理器构成硬件平台,Arduino Uno微处理器通过Wi-Fi模块实现与Web服务器(由PC机搭建)的连接。
土壤湿度数据经Arduino Uno微处理器采集后,通过Wi-Fi模块传送到Web服务器,Web服务器上的Java程序对这些数据进行分析处理,通过JSP页面实时显示土壤湿度数值。Arduino Uno微处理器对采集的水分数据进行分析,当测量数据小于设定阈值时,Arduino Uno微处理器自动开启灌溉设备,对土壤湿度进行智能调节。
1.1.1土壤湿度传感器
土壤湿度传感器由不锈钢探针和防水探头构成,土壤的电阻值因土壤中水分含量而不同,通过测量两根探针之间的电阻得到土壤中的水分含量,可长期埋设于土壤内,对土壤墒情进行测量。
土壤湿度传感器获取湿度信息的方式如下。
从传感器的DO引脚:土壤湿度大于某个阈值,则DO输出0,否则输出1。
从传感器的AO引脚:获取到模拟量,更加精确。土壤湿度越大,获取的模拟量值越大。
土壤湿度用质量百分数即土壤中水的质量占其干土质量的百分数(%)来表示。
1.1.2Arduino Uno微处理器
Arduino Uno是基于ATmega328P的Arduino开发板,有14个数字输入/输出引脚、6个模拟输入引脚、1个16 MHz的晶体振荡器、1个USB接口、1个DC接口、1个ICSP接口和1个复位按钮,可简单地与传感器、各式各样的电子元件连接[4-5]。Arduino Uno包括硬件(Arduino开发板)和软件(Arduino IDE)两部分,在Arduino开发板上搭建硬件电路,Arduino IDE中编写程序代码,开发语言和开发环境都非常简单、易理解。
1.1.3Web服务器
Web服务器在PC机上搭建,TOMCAT作为服务器软件,采用Java语言编写后台程序,使用TCP协议和Arduino微处理器连接的Wi-Fi模块进行通信。
Web服务器后台程序对Arduino微处理器发送指令来获取土壤湿度数据,并对这些数据进行分析处理,利用Web服务器上的前台JSP程序来进行土壤湿度数值显示。
1.1.4Wi-Fi模块
Wi-Fi模块ESP8266是一款超低功耗的UART-Wi-Fi透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi无线网络上,进行互联网或局域网通信,实现联网功能[6-7]。
1.1.5硬件连接
Wi-Fi模块通过扩展板与Arduino Uno控制板相连接,给Wi-Fi模块配置一个网络地址(10.10.1.1),通过无线网络与计算机连接,将计算机的网络地址配置成10.10.1.3,Wi-Fi模块与计算机组成独立的网络,进行数据传输。
土壤湿度传感器的DO端接入Arduino Uno板的数字端口7中,AO端接入Arduino Uno板的模拟端口AO中,电源线接入Arduino Uno板上的+5 V电压端口,地线接入Arduino Uno板上的GND端口。
Wi-Fi室内定位算法通常采用基于RSSI(Received Signal Strength Indication,接收信号强度)的指纹定位算法,分为两个阶段[8]。
(1)离线训练阶段。将室内区域划分为网格(间距1~2 m),利用接收设备对网格采样点逐个进行采样,每个网格对应一个独特的指纹,这个指纹可以是单维或多维的,是接收信息或信号的一个特征或多个特征,通常可记录该点位置、所获取的RSSI及AP(Access Point)地址等,并对指纹数据进行处理(滤波、均值等),在大量的已知位置上建立一个细粒度的指纹数据库。
(2)在线定位阶段。用户持移动设备在定位区域移动,实时获取当前RSSI及AP地址,将该信息上传到服务器进行匹配。
(1)
式中d——计算所得距离,m
RSSI——接收信号强度
A——发射端和接收端相隔1 m时的信号强度
n——环境衰减因子
采用Java语言编写后台程序,利用TCP协议和Arduino微处理器连接的Wi-Fi模块进行通信,Web服务器发送指令给Arduino Uno微处理器,来获取土壤湿度数据[9]。
采用Java语言编写JSP程序,在浏览器或手机上显示土壤湿度实时数值[10-11]。
在Arduino Uno微处理器嵌入程序来设置土壤水分的阈值,Arduino Uno微处理器接收Web服务器发送的指令,从传感器的AO引脚获取到土壤湿度数据并进行分析,当测量数据值小于设定阈值时,Arduino Uno微处理器自动开启浇灌设备,对土壤湿度进行调节。系统流程如图2所示。
图2 系统流程Fig.2 System flow
为了验证系统的实时性,将土壤湿度传感器插到比较干的土壤中,启动电路,设定土壤水分阈值65%,Arduino Uno微处理器采集土壤水分数据,在浏览器上显示当前土壤湿度数据。Arduino Uno微控制器对采集的数据进行分析,当水分数据小于设定的阈值时,灌溉系统工作,当土壤水分满足要求后,停止浇水,并在浏览器上显示灌溉后的土壤水分数据。
本文借助Arduino Uno开发平台、Web服务器、土壤湿度传感器和Wi-Fi技术设计了一种基于物联网技术的智能灌溉系统,Arduino Uno微处理器的开发语言和开发环境简单、易理解,Web服务器配置简便,通过JSP程序在计算机屏幕上建立图形化的显示面板来实时显示土壤水分数据,设计的硬件电路简单、成本低,具有推广价值。
经过分析试验数据并解决试验中遇到的问题,系统达到了设计要求,表现良好,具有实用性,并为接下来的研究提供了技术保障。