APP下载

基于ZigBee和WiFi的土壤监测系统设计与实现

2023-11-22王鲁淮胡必玲陈一鸣

物联网技术 2023年11期
关键词:服务器端串口水泵

王鲁淮,胡必玲,王 添,陈一鸣

(合肥师范学院 计算机学院,安徽 合肥 611731)

0 引 言

我国农业发展目前呈现劳动生产率低、资源约束大、资源利用率低、劳动力成本大幅提升、农业就业人口急剧下降、农业劳动力老龄化严重等特点。为了促进农业和农村经济发展,必须实现从传统农业、机械农业到智慧化和智能化农业的转型升级。物联网技术及传感网技术的发展,为农业的智慧化发展带来了新的机遇。基于信息化技术实现种植环境土壤信息的及时获取和智能化控制,能显著减少农业灌溉用水和肥料的浪费,节省种植成本,提高生产效率[1-2]。目前已有不少信息化解决方案能够满足不同领域的发展需要[3-11]。陈天华等[3]以ARM9系列S3C2410处理器、GPRS模块和CS8900a网卡设计了基于GPRS的无线土壤墒情监测预报系统,实现了对土壤墒情信息的自动采集、存储和无线网络传输,并可以根据墒情信息实施定时、定量的灌溉控制。赵丹[4]采用微处理器STM32F103RBT6、树莓派以及CC2530模块设计了草原生态环境状态监测系统,以实现对草原环境中土壤温湿度等信息以及草原图像信息的远程监测,并将环境数据在云端数据库中进行存储;方圆[5]基于ZigBee和CC2530设计了棉田土壤温湿度监控系统;曾猛[6]设计了无线网络蔬菜大棚测控系统,只实现了数据采集;黄桑[7]实现了基于物联网的温室大棚种植监控系统;文献[8-11]分别基于物联网技术实现了蔬菜科技园、农田、果园和菜田土壤信息采集和数据化管理。但上述系统有的采用的硬件成本太高,部署费用大,有的无法实现远程无线数据采集,且普遍无报警提醒和反向智能控制功能,无法及时地对农业生态环境进行控制。本文基于低成本的CC2530和ESP8266模块,实现对土壤温湿度、盐度值的实时采集和远程监测,同时在土壤湿度较低时在手机通知栏进行报警提醒,支持用户远程开启水泵实现自动浇水。系统能够为种植人员提供便捷可靠的信息化解决方案。

1 系统总体设计

系统由数据采集端、远程控制端、服务器端和数据查询端构成。数据采集端基于CC2530节点进行了传感网的设计,实现土壤温湿度和盐度信息采集,并通过ESP8266将数据上传到支持MQTT协议的EMQ X Cloud云服务器上。远程控制端通过对ESP8266 MCU开发板进行路由配置以接收EMQ X Cloud云服务器下发的控制指令,调控高低电平来控制继电器开关以控制水泵的启动和关闭。服务器端主要以云服务器为核心,EMQ X Cloud将接收ESP8266上传的数据并通过规则引擎将数据保存到MySQL数据库,同时将实时数据发送给订阅该主题的用户。数据查询端主要实现用户认证、登录注册、历史记录、统计分析等功能。移动端通过连接EMQ X Cloud进行主题订阅,并将订阅的实时数据以折线图的形式展现给用户。系统总体架构如图1所示。

图1 系统总体结构

2 硬件设计

系统土壤数据采集端主要由CC2530单片机、ESP8266 WiFi模块以及土壤温湿度、电导率三合一传感器、RS 485转UART串口转换模块组成。由于土壤三合一传感器采用ModBus-RTU通信规约,提供RS 485通信串口,而CC2530开发板仅支持UART和TTL通信串口,于是采用RS 485转UART串口模块进行通信转换。单个数据采集终端节点硬件连接示意图如图2所示,而ESP8266 WiFi模块则连接在ZigBee网关节点上以实现将各终端节点数据汇总后发往服务器。

图2 数据采集终端节点连接示意图

系统水泵控制端采用ESP8266 MCU开发板与继电器、水泵连接,示意图如图3所示。

图3 远程控制设备连接示意图

3 软件设计

3.1 数据采集功能

数据采集功能的实现由ZigBee无线传感网完成[12-13]。基于Z-Stack协议栈首先进行各采集节点和汇聚节点的ZigBee组网。各数据采集节点的CC2530模块每3 s向传感器发送符合ModBus-RTU通信规约的问询帧,传感器接收到正确的问询帧后会响应给CC2530所需的应答帧;CC2530进一步通过串口回调的方法获取温度、湿度、盐度对应的应答帧,并通过进制转换将应答帧中的数据区提取出来,最后将数据通过ZigBee技术无线发送给网关协调器。ZigBee网关汇聚其他终端节点采集的数据以及16位短地址和RSSI信号强度;并将这些数据格式化为JSON数据包,通过串口发送给ESP8266 WiFi模块[14]。ESP8266模块在进行路由配置后会自动通过MQTT协议连接到EMQ X Cloud,推送串口接收到的数据到EMQ X Cloud[15]。

3.2 远程控制功能

ESP8266 MCU开发板、继电器、水泵进行硬件连接后,通过MQTT协议与EMQ X Cloud云服务器进行连接,并使用回调函数,循环监听控制指令。其中具体指令定义如下:

3.3 服务器端功能

在腾讯云提供的云服务器(操作系统为CentOS 7)中,搭建远程MySQL、Redis数据库,为后端部署项目搭建好符合的环境。具体步骤如下:

(1)云服务器搭建:安装MySQL 5.7、Redis 5、Open JDK 1.8、Maven 3、Alibaba Nacos 1.4.1、EMQ X,配置相关环境。

(2)将Spring Cloud微服务项目打包成jar,分别是auth.jar、gateway.jar、service.jar。将它们上传至云服务器中,采用systemctl命令将多个jar包以及其他应用注册到服务器中,实现多应用后台运行。

(3)开放相关端口,以便用户可以访问。

同时采用EMQ X提供的规则引擎实现数据持久化,当ESP8266 WiFi模块上传上来的数据符合设定的规则,则把数据保存到MySQL数据库中。

规则SQL设定如下:

SELECT clientid as id,username as name,

payload.addr16 as addr16,payload.rssi as rssi,

payload.humidity as humidity,payload.temp as temp,

payload.ec as ec,timestamp as up_timestamp

FROM "esp8266/soil"

WHERE name = 'esp8266'

响应动作定义如下:

insert into soil_info(addr16,rssi,humidity,temp,ec,time)

values

(${addr16},${rssi},${humidity},${temp},${ec},

FROM_UNIXTIME(${up_timestamp}/1000))

3.4 移动端功能

移动端主要实现用户注册和登录、历史数据查询、统计分析和实时数据功能。移动端的登录界面和菜单栏界面设计分别如图4、图5所示。

图4 登录界面

图5 菜单栏界面

用户注册功能是通过向“/auth/logUp”接口发送post请求实现的。同时在MySQL数据库中会对请求中的用户名进行检索,并判断是否已存在其他同名用户,如果有则注册失败,没有则注册成功并把用户信息保存到用户表中。

用户登录功能同样是通过发送post请求提交用户名和密码,并在MySQL数据库查询并比对账号和密码,如果比对成功,则登录成功。使用JWT生成一个JSON格式的token值并放入响应结果中,与此同时还需要把token保存到Redis数据库中。

数据查询功能是通过发送get请求实现的,并提供4个参数便于用户筛选设备、日期以及分页,参数分别是addr16、datetime、current、size,代表着设备号、日期范围、当前页、每页条数。服务器端将根据请求参数向MySQL进行分页查询,并将结果包装成JSON数据返回给移动端。

统计分析功能同样基于请求发送实现。服务器端会根据请求参数进行每个时间段分隔。再向MySQL中使用AVG、MAX、MIN函数查询获得每个时间段的平均值、最大值、最小值,通过计算得出该天的方差值,然后将这些值包装成JSON数据返回给移动端。

当用户登录成功后,APP里的MQTT客户端服务会自动通过MQTT协议连接到EMQ X Cloud,订阅主题ESP8266/soil并通过回调获取刚刚发布的土壤数据,实现实时查看数据的功能。接收到数据后,APP会以折线图的形式展示给用户观看,让用户能够更加清晰地了解土壤的实时状态。如果土壤当前的数据超过了系统所设定的阈值,那么APP会自动发送带有声音和振动的消息来提醒用户当前土壤出现了问题,并且在实时数据界面上还可以通过开关浇水按钮来远程控制水泵,实现远程控制浇水的能力。最后可以通过选项卡选择要显示的设备实时数据界面。

4 系统测试

本部分对系统各功能模块进行测试,以验证系统功能的完成度。系统设备实物连接如图6所示。

图6 设备连接图

经测试,系统能正常进行土壤各项数据采集,服务器端能正常对数据进行接收,控制端能正常进行水泵开启与关闭。同时手机端能正常接收报警信息,APP能正常进行实时数据监测、历史记录、统计分析的查询,各功能均运行良好。具体情况如图7~图10所示。

图7 手机通知栏警告图

图8 历史记录

图9 实时数据

图10 统计分析

5 结 语

本文设计实现的土壤监测系统,能够实现对土壤信息的分布式无线采集和云存储;同时支持注册用户登录移动端对土壤实时数据、历史数据进行查看和统计分析;并在土壤湿度低于设定值时给用户手机发送警告通知,以支持用户远程控制水泵进行浇水。本系统功耗低、成本低,为精准农业的实现提供了一种技术方案。今后一段时间的工作将优化系统设计,在校园蓝莓基地进行实际部署应用。

猜你喜欢

服务器端串口水泵
凝结水泵全系列优化改进
水泵节能改造在昆钢的应用实践
浅谈AB PLC串口跟RFID传感器的通讯应用
Linux环境下基于Socket的数据传输软件设计
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
低压除氧水泵变频改造
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
基于并行控制的FPGA多串口拓展实现