曹旨昊 张辛欣 牟少敏 屈洪春*
1(枣庄学院信息科学与工程学院 山东 枣庄 277160) 2(枣庄市山亭区农业农村局 山东 枣庄 277200) 3(山东农业大学信息科学与工程学院 山东 泰安 271018)
农业是国民经济的基础,在国民经济发展中处于举足轻重的地位。传统的农田依靠农民积累的种植经验进行粗放式管理,科技含量低,缺乏科学、有效、精准的监管。农业农村部在印发的《2020年乡村产业工作要点》中明确提出:要促进互联网、物联网、人工智能等新一代信息技术与农业融合。将物联网技术应用于农业领域中,设计高效的农田环境监测系统,对于促进农产品增产增收,发展“智慧农业”有着重要的意义[1-3]。
近些年,许多学者针对农业环境监测做了相关研究。例如张天恒等[4]研究并开发了一种温室大棚环境监控系统,潘晓贝等[5]开发了一套农田智能灌溉系统,王旭东等[6]研究并设计了一种基于WSN的农田信息监测系统,程平等[7]设计了一种基于STM32单片机的大棚环境监测系统,王茂励等[8]使用物联网技术开发了一种数字农田信息监测系统,刘映江等[9]使用LoRaWAN物联网技术研制了一套农田环境监测系统。这些系统大部分部署在温室大棚或者简单的室外农田中,农作物生长环境较为单一。然而实际中一些农田分布在山区中,区域环境复杂,地貌高低起伏连绵不断,被称为梯田。这种地貌由于其特殊性难以铺设电缆,且直接暴露自然环境下,易受到风沙、雨水的侵蚀,给农田环境监测系统的设计带来了一定的挑战[10]。
山亭区隶属于山东省枣庄市,总面积1 018平方公里。山亭区是生态大区,四面环山,全区有5 000多座山头,山区面积占到全区总面积的87%。同时山亭区也是农业大区、林果大区,特色林果、优质小杂粮等农产品资源丰富[11-12]。区中很多农田都属于梯田,图1展示了山亭区徐庄镇山区农田地貌。
本文根据山亭区徐庄镇山区农田实际地貌,基于ZigBee无线传感器网络技术设计并实现了一种山区农田环境监测系统。系统可以全天候监测农田环境实时数据,并在手机端App进行可视化展示,为农田智能管理提供了参考信息,同时实现了远程控制农田浇水灌溉功能,降低了务农人员的工作量,促进了该乡镇农业向着数字化、智能化和自动化的方向发展。
山区农田地貌高低起伏,传统有线通信方式难以在这种环境下铺设电缆,且土地中铺设的电缆易受到风沙雨水的侵蚀,后期不便维护,因此在本系统中信息传输采用无线传感器网络(Wireless Sensor Network)技术。常见的无线传输技术包括Wi-Fi、蓝牙、LoRa和ZigBee等。其中Wi-Fi虽然传送速率高,但是功耗大,供电不便,且传送距离相对较近,不合适山区农田环境;蓝牙组网节点数量上限少,仅适合节点数量少的场景,不符合山区农田大面积组网要求;LoRa芯片价格昂贵,且需要搭设基站,成本较高[13]。
ZigBee技术是一种低功耗、低复杂度、网络容量大、组网灵活、低成本、近距离、低速率的双向无线通信技术,主要用于距离短、功耗低且传输速率不高的各种电子设备之间的数据传输,非常适合山区农田环境[14-15]。低功耗是ZigBee最重要的特点之一,ZigBee芯片具有多种电源管理模式,当节点不工作时可进入休眠状态[16],极大地降低了系统功耗,延长了节点电池使用寿命。系统各终端节点一旦部署在农田中,在使用三节5号碱性电池供电情况下,可以在8个月内无须更换电池,极大方便了后期维护。ZigBee网络可容纳节点数量大,最多可以容纳6万多网络节点,组网方式灵活多样,既可以单跳,又可以通过路由实现多跳的数据传输,满足了山区农田复杂环境下大量部署监测节点的要求。同时ZigBee技术中常用的由TI公司研发的CC2530芯片基于8051单片机内核,成本较低,价格易于接受,有利于无线传感器网络节点在农田进行大量布置。虽然ZigBee与其他无线通信技术相比,其数据传输速率较低,大约为250 KB/s,但是对于传送温度、湿度这种简单的数据已经足够。基于以上各种原因,本系统采用ZigBee技术组建无线传感器网络。
为了方便优化系统,系统采用模块化设计。本文设计的环境监测系统由终端节点、协调器、网关模块、手机端App、传感器模块、继电器模块六部分组成,其整体结构如图2所示。
图2 山区农田环境监测系统结构图
系统各终端节点分散部署在山区农田中,是监测系统的主要组成部分。传感器模块和各终端节点直接相连用于采集各类环境数据,包括空气温湿度、土壤湿度和光照强度等,各终端节点采集到的数据会通过ZigBee无线传感网络传递至系统协调器中。协调器在系统中是唯一的,负责组建和维护整个ZigBee网络,是系统的“大脑”。由于ZigBee网络属于一种个人局域网(Personal Area Network, PAN),因此无法直接与属于广域网(Wide Area Network,WAN)的因特网连接,网关模块负责将协调器通过GPRS(General Packet Radio Service)技术连接至因特网。在本系统中,网关承担着远程监控中心和信息交换的任务,数据的预处理、汇总和远程传输由网关模块负责监控。系统采集到的各类数据再通过网关传递至云服务器端,并在云服务器端进行存储。系统中协调器、终端节点和网关都是基于CC2530芯片,并使用三节5号碱性电池进行供电,这三者内部之间通过ZigBee进行通信,而网关和云服务器之间利用内置的4G物联卡通过GPRS技术进行通信。智能手机端App主要用于接收云服务器存储的信息,然后在App上进行可视化展示,通信的协议选择WebSocket。系统中部分终端节点会连接继电器模块,手机端App可以通过云服务器向继电器模块发送命令,从而实现农田远程浇水与灌溉。
系统程序编写分成两部分:CC2530芯片编程和智能手机App编程。CC2530芯片程序使用IAR Embedded Workbench(简称IAR)开发软件进行编写,程序开发语言为C语言,基于TI公司所推出的 Z-Stack协议栈编程实现。IAR软件中的编译器和调试器是完整且容易使用的嵌入式应有开发工具,提供了直观的界面供用户使用。Z-Stack是一种半开源的ZigBee协议栈,同时是一款免费的ZigBee协议栈,其中内嵌了OSAL操作系统,使用标准的C语言格式,非常适合于工业级应用[17]。智能手机App使用Android Studio开发工具基于Java语言开发实现,程序可以运行在装有Android系统的智能手机上。Android Studio是谷歌公司推出的一个Android集成开发工具,是目前使用最为广泛的Android开发工具[18]。
针对农田环境监测实际需要,系统选择空气温湿度传感器、土壤湿度传感器、光敏传感器和气体传感器4类传感器对环境数据进行实时采集,系统使用到的各类传感器如图3所示。
图3 系统中各类传感器
其中空气温湿度传感器型号为DHT11,主要用于采集农田空气温湿度数据,温度量程为0~50℃,湿度量程为19%~89%。光敏传感器用于采集农田太阳光照强度数据,型号为B-LUX-V30B,具有体积小、安装方便、抗干扰能力强等特点。采集到的这两类数据为农技人员分析农作物长势提供了可靠的信息来源。土壤湿度传感器用于监测农田土壤含水量,为农作物浇水灌溉提供参考意见。气体传感器型号为MQ-135,用于监测农田空气中烟雾等特殊气体成分,当农田发生火灾时会及时发生警报。在春秋季节,北方山区降水量少,空气湿度低,农作物含水量少,地被物干燥,以及由于焚烧秸秆等不良行为,农田极易发生火灾,因此在山区农田及时发现火灾隐患是非常重要的。
为了降低功耗,延长电池使用寿命,各传感器每五分钟采集一次数据,在春秋山火易发季节可以适当降低数据采集时间间隔。各终端节点每次采集数据后,会自动进入PM2休眠模式,在这种模式下,CC2530稳压器数字部分关闭,高频振荡器不运行。节点再次工作时,CC2530芯片会通过睡眠定时器进行唤醒。利用ZigBee的这个特点,延长了设备更换电池的周期,方便了后期的维护。
为了实现远程控制农作物浇水功能,降低务农人员的工作量,在农田中某些终端节点安装继电器模块。继电器模块与水泵相连,当务农人员在手机App发现农田土壤含水量较低时,可以在App上发出浇水指令,该指令会通过因特网、网关、协调器依次传递至特定终端节点,最后该终端节点控制水泵实现农田远程浇水灌溉,其继电器模块结构如图4所示。
图4 继电器模块结构
ZigBee组网拓扑结构灵活多样,支持星型、树形和网状型拓扑结构,既可以单跳,又可以通过路由实现多跳数据传输。网络拓扑结构设计需要综合考虑当地区域地貌、ZigBee技术特点等多种因素。本文所设计的系统在山亭区徐庄镇一处梯田进行实地测试,实际农田地貌和各ZigBee节点安装位置如图5所示。这片区域地势左高右低,共计40亩左右,分散布置了10个节点,包括9个终端节点和1个协调器节点,以点对点的方式对信息进行无线收发和控制。常规ZigBee通信最远传输距离大约在250米左右,属于一种短距离通信技术,且传输距离越远,信号质量越差。因此在系统部署时需要保证每两个节点之间距离不超过100米。综合考虑,本系统网络拓扑结构选择树形,树形网络由一个协调器和多个星形结构连接而成,设备除了能与自己的父节点或者子节点通信外,其他只能通过网络中的树形路由完成通信。各节点之间的拓扑连接如图5中虚线所示,选择最左侧中间节点作为协调器节点,其他节点为终端节点。树形网络的优点是可以进行中继路由,通过这种方式,数据传输距离可以大幅度提高。然后选择协调器节点和一处位于山区较高处的终端节点作为水泵控制节点,如图5中标记所示。在这两处节点中CC2530芯片连接继电器模块,通过控制水泵实现这片区域农作物的浇水及灌溉。
本系统App负责在智能手机端接收系统采集到的各类环境数据,并进行可视化展示,同时App具有远程发送浇水灌溉指令的功能。App基于Java语言在Android Studio软件上编写实现,可以运行在Android系统智能手机上。App通过与云服务器建立WebSocket通信[19]从而连接到因特网,再通过GPRS技术与ZigBee网络中网关模块进行数据通信,其App数据通信流程如图6所示。该App具有三个功能模块:数据展示、远程控制和报警提示。
图6 APP数据通信流程
App最主要的功能就是数据展示,图7为土壤湿度和空气温度数据展示界面,展示了7月20日至7月27日一个星期内这两类数据的变化情况。由于各个节点采集到的环境数据已经通过网关上传并保存在云服务器中,因此农技人员可以选择特定时间段自由地浏览和查看历史数据。
(a) 土壤湿度数据展示
(b) 空气温度数据展示
为了使这些数据更好地为农技人员服务,系统各个终端节点采集到的环境历史数据可以通过点击App下载按钮自动保存至手机中或者从服务器端发送到指定邮箱中,数据保存的格式可以为XLS或CSV。这些环境数据可以为后续农田环境分析或农作物长势分析等提供可靠的数据来源。
除了展示采集到的环境数据以外,App还具有远程控制农田灌溉功能,App控制界面如图8所示。农技人员可以参考土壤湿度以及空气温度等数据,决定是否打开图5所示的两个水泵对农作物进行浇水灌溉,农技人员只需要点击图8中所示开关就可以轻松完成这个功能。同时App提供了灌溉定时功能,农技人员可以根据农作物实际需求控制浇水时长,避免由于忘记关闭水泵而造成经济损失。
图8 APP远程灌溉功能
App最后一个功能为报警提示, App打开后会一直运行在Android系统后台。当系统检测到农田发生火灾隐患时,会在智能手机上通过闹铃和震动进行强制提示,以便农技人员及时发现和处理。
为了验证本文所设计的系统的可靠性和稳定性,将该系统封装好之后布置在山亭区徐庄镇梯田进行实地测试,测试节点如图9所示。整个终端节点封装在防水盒中,防水盒中包括CC2530芯片、各类传感器和电池组,图中左侧为2.4G全向天线,下方为插入农田土壤中的土壤湿度传感器,防水盒各个出口处使用防水胶水加固。通过这种封装,使得系统能够更好地适应户外农田这种复杂环境。
图9 系统终端节点实地安装图
在系统测试中,主要检测系统对空气温度、土壤湿度、空气湿度和光照强度等数据采集的精确度。选择图4中最右端节点作为实验测试节点,因为此节点在网络树形结构末端,距离协调器距离最远,有较强的代表性,更能够检测系统的鲁棒性。通过比较在智能手机App端展示的环境数据值和通过专用仪器在实地采集的数据值,来判断该系统的精确性。
本文选择了7月25日9:00-15:00时间段通过两种方式采集的环境数据值进行对比,数据采集间隔为1小时,最终空气温度、土壤湿度、空气湿度和光照强度对比结果如图10所示。可以看出,系统采集空气温度值与实际值浮动在0.2 ℃范围内,空气湿度值浮动在0.3%范围内,土壤湿度浮动在2.0%范围内,光照强度浮动在1%误差范围内。其中空气温度、空气湿度和光照强度误差较小;土壤湿度误差相对较高,这是因为农田中每块土壤含水量不可能完全相同,而进行采集时只能选择两块距离相近的土壤进行对比,难以避免出现误差,这属于一种偶然误差,但是误差量仍在系统可接受范围内。为了测试该系统监测农田火灾的性能,我们在保障安全的情况下,在测试节点周围燃烧碎纸屑模拟农田发生火灾,同时测试节点需要设置为工作模式而非休眠模式。测试结果表明当碎纸屑开始燃烧后,系统会在10秒内检测到烟雾并在智能手机App端发出警报,具有较高的预警效率。最终实地测试结果表明所设计的系统监测结果较为精确,能够实现对山区农田环境数据有效监测,实用性较强。
(a) 空气温度
(b) 土壤湿度
(c) 空气湿度
(d) 光照强度图10 系统采集数据与实地采集数据对比图
本文针对山区农田特殊地貌和环境,设计并实现了一种基于ZigBee的农田环境监测系统。系统按照模块化进行设计,包括终端节点、协调器、网关模块、手机端App、传感器模块和继电器模块六部分。该系统通过空气温湿度传感器、土壤湿度传感器、光敏传感器和气体传感器对山区农田环境数据进行实时采集,采集到的数据可以在手机端App进行可视化展示,为农田智能化管理提供了参考信息。同时实现了远程控制农田浇水功能,实现了农作物灌溉的自动化,降低了务农人员的工作量。
本系统在山亭区徐庄镇梯田进行了实地测试,测试结果表明所设计的系统能够对山区农田环境数据有效监测,且成本低、精度高、便于维护,有较强的可用性,为山区农田环境监测提供了一种解决方案。