文献标识码:A
DOI:10.16157/j.issn.0258-7998.183033
中文引用格式:崔丽珍,徐锦涛,丁福星,等. 基于物联网的农业大棚气象数据监测系统设计[J].电子技术应用,2018,44(12):73-76,80.
英文引用格式:Cui Lizhen,Xu Jintao,Ding Fuxing,et al. Design of meteorological data monitoring system for agricultural greenhouse based on Internet of Things[J]. Application of Electronic Technique,2018,44(12):73-76,80.
0 引言
近年来,内蒙古自治区农业和农村经济取得了快速的发展。然而,水资源匮乏、土地盐碱重、气候条件恶劣易变等自然条件下,对自治区大棚农业及反季节产品的种植提出了更高的要求。大棚内空气温湿度、土壤湿度及光照强度都会对农作物生长和生产产生很大影响,需要在适宜的综合环境因素下,才能实现最大化的农作物产值。因此,大棚内环境数据变化的实时采集监视尤为重要,以便及时地做出相应的应变措施,让农作物在适宜的环境中生长和生产。传统农业气象环境监测方式主要是人工依据生产经验使用测量工具实地获取数据,或使用传统的有线通信传输方式进行相关测量。人工经验性监测方式存在时效性低、工作量大、生产成本高、随机取点误差大等问题;而有线传输方式有很多的不足之处,如功耗较高、布线成本大、适应性差、可扩展性不强,且增加新的种植面积需要再次布线施工。因此,为满足温室大棚气象环境数据采集要求,设计了基于物联网的温室大棚环境实时监测系统,主要监测大棚内空气温湿度、土壤湿度及光照强度等气象环境信息。本系统气象数据的传输是利用开发成本低、组网性能优良的ZigBee通信协议,其通信技术特点主要是:高可靠性、低成本、时延短、高安全性、低传输速率等。然后通过MQTT协议将网关上接收到的数据与手机客户端、PC端链接起来,实现数据到上位机的传输。将ZigBee技术、MQTT技术及传感技术相结合,构成了系统的整体技术框架,能够低成本、高可靠性地实现对大棚气象环境数据的采集和传输。
1 系统体系结构设计
系统的实现主要由CC2530采集终端、网关(ZigBee协调器)、NodeMCU平台开发等部分组成[1]。其中,基于CC2530的环境采集终端通过空气温湿度、土壤湿度、数字光照等采集模块获取大棚的温度、湿度、光照等数据,通过ZigBee网络发送给物联网(Internet of Things,IoT)网关,网关将接收到的数据根据地址封包,通过串口发送给网关的NodeMCU模块。气象环境数据通过MQTT进行数据帧的发送(发布)和接收(订阅),保存在数据库中并基于Web开发在PC、智能手机等设备中进行显示。系统体系结构设计如图1所示。
1.1 基于CC2530的环境采集终端设计
终端采集部分主要实现对大棚气象环境数据采集,以及通过ZigBee协议将数据上传到IoT网关。在本设计中采用CC2530射频模块做采集终端硬件的核心芯片,该芯片是TI公司推出的支持ZigBee协议的单片机;在软件方面相对应的协议栈为Z-Stack。CC2530微控制器内部使用业界标准的增强型8051内核,采用QFN40封装,有40个引脚。其中,有21个数字I/O端口,均可通过编程进行配置,同时集成了UART和A/D等外设。采用内置增强型PCB天线,通信距离可以满足大棚环境采集终端节点布置坐标[2]。
采集设备核心芯片CC2530的外围电路设计主要分为射频板模块、电源模块、外设I/O口模块以及程序下载模块等。射频板模块采用支持IEEE802.15.4 2.4 GHz物理层协议,可搭载ZigBee协议栈(Z-Stack),支持用户二次开发;发送功率在可编程范围内输出功率最高达4.5 dBm;射频工作频率在2.4 GHz~2.405 GHz。电源模块设计了两种供电方式,一种采用两节五号电池进行供电2.7~3.3 V,另一种采用USB供电即外接电源供电,可根据大棚内不同的电力设施选择合适的供电方式。外接I/O口模块为保证硬件安全性及使用寿命,在确定各个传感器功能引脚配置端口后,对外设I/O口进行封装处理。程序下载模块采用专用仿真器用于下载程序和在线仿真调试,硬件部分设计有CC Debugger仿真器接口。
设计中光照强度测量采用BH1750FVI传感器,是一种用于两线式串行总线接口的16位数字输出型环境光强度传感器集成电路,利用它的高分辨率可以在1 lx~65 535 lx范围内测量光强度变化,并且能够满足直接输出精度较高的数字信号。空气温湿度值测量采用DHT11,是一种具有已校准数字信号输出的温湿度复合传感器,专用的数字模块技术和温湿度传感技术保证了其具备很好的可靠性与长期稳定性;其内部包含一个电阻时式感湿元件和一个NTC测温元件,并和一个高性能8位单片机相连接,使得DHT11具备成本低、长期稳定、相对湿度和温度测量及响应迅速、抗干扰能力强、较长的信号传输距离、数字信号输出、校准精确等显著特点。土壤湿度值测量采用4线制土壤湿度传感器模块,其表面采用镀镍处理,具有加宽的感应面积,可以提高导电性能,防止发生接触土壤容易生锈的问题,进而延长使用寿命;并且可以主动调整测量土壤湿度的范围,通过电位器调节控制相应阈值,即湿度低于预设值时D0输出高电平,高于预设值时D0输出低电平,比较器采用LM393芯片,工作稳定[3]。
1.2 网关硬件设计
网关(ZigBee协调器)属于接入设备,桥接了无线传感器网络和公共通信网络,并提供了多种通信途径,确保终端节点采集的数据传输到用户平台上。它主要功能是通过构建的ZigBee网络接收来自终端设备采集的气象环境数据,并根据设备类型分配地址进行封包处理,然后通过串口通信发送给IoT网关的NodeMCU模块。
网关设备的设计是基于CC2530和NodeMCU之间的串口通信以及WiFi传输数据功能。硬件部分主要包括CC2530射频板模块、电源模块、程序下载模块、NodeMCU模块。CC2530芯片与NodeMCU芯片在电路设计中通过排针连接,如图2所示。利用UART与CC2530通信引脚连接,接收终端环境数据采集设备上传的数据。然后通过对基于ESP8266芯片的NodeMCU的开发,利用MQTT将数据发布到服务器上。网关设计是ZigBee技术与NodeMCU技术的结合,在保证数据传输效率和安全的情况下,降低了开发成本,非常适合在农业大棚等经济产业中使用。
2 系统软件设计
系统软件设计主要包括终端环境数据采集设备驱动程序、网关驱动程序、Arduino开发、MQTT应用开发和大棚环境监测物联网平台等部分。
2.1 终端环境数据采集设备软件设计
终端环境数据采集设备主要任务是加入网关建立ZigBee网络实现组网通信,并周期性轮询访问传感器读取函数,对空气温湿度、土壤湿度、光照强度的数据进行采集和上传。基于Z-Stack协议栈的软件设计流程如下:
(1)根据系统设计需求设定传感器采集特定的初始化设备ID号、消息发送ID号、任务ID号和串口分配等;
(2)协议栈中选择数据发送模式为afAdder 16 bit,即16位短地址的点对点发送模式;
(3)在协议栈应用层目录树下添加传感器驱动程序的C文件;
(4)在协议栈消息发送函数中写入传感器数据采集读取函数。
终端设备通电后首先对协议栈配置进行初始化处理,包括初始化设备ID号、消息发送ID号、任务ID号和串口分配等,然后选择通信区域内的网关节点完成组网。终端节点会向网关发送“心跳包”检验是否通信成功以及传感器是否处于在线状态,定时发送结束后终端节点会进入休眠状态采用“TIMER sleep”模式(即系统需要一个预定的延时后被唤醒执行下一个任务)。然后就可以驱动传感器读取数据函数采集环境实时数据,并且对不同气象环境数据采集时间也有所区别,其中空气温湿度、土壤湿度、光照强度采集节点分别每隔5 min、20 min、10 min时间结束休眠完成数据采集,封装后上传到网关。每当数据上传后,传感器会继续维持休眠的状态等待下一次的采集工作,这种方式能够很大地降低功耗,提高电池的使用寿命。终端环境采集设备功能实现基本流程如图3所示[4]。
2.2 网关软件设计
网关在系统的整体实现中属于中枢的位置,主要是允许终端采集设备入网、接收气象环境数据以及通过串口通信将数据传输给NodeMCU模块。本系统网关采用CC2530射频模块和NodeMCU模块串口通信的设计方案,利用UART和CC2530通信以及NodeMCU的WiFi功能实现数据上传到以太网中。因此,在软件设计部分主要有如下几点:
(1)设置终端节点入网白名单;
(2)接收到终端节点上传的心跳包,用心跳次数判断终端设备处于在线或离线状态;
(3)在终端节点的数据增加帧头帧尾。
在网关建立白名单,将系统安全需求放在设备上,终端设备请求入网前需要在白名单中先注册设备MAC地址,目的是出于系统安全性考虑,防止未知设备与网关建立通信。通过上传的心跳次数,在网关部分判定终端设备是否处于在线状态,离线则建立重连机制,确保所有终端设备都已正常工作。网关收到终端设备上传的数据后首先对数据增加帧头(0xFA 0xFA)、帧尾(0xAF 0xAF),以便判断网关接收的数据是否为真,确保数据的准确性。网关和终端设备间的数据格式见表1,网关功能实现流程图如图4所示[5]。
2.3 NodeMCU与MQTT应用开发
NodeMCU在Arduino开发环境下实现连接WiFi功能,与ZigBee技术相结合构建IoT网关,接收到来自串口上传的数据,通过MQTT进行数据的发送(发布)和接收(订阅)等操作[6-7]。NodeMCU功能实现:
(1)NodeMCU与CC2530串口通信接收并缓存终端数据;
(2)NodeMCU模块中的WiFi功能加入无线网络中,并利用MQTT协议与数据库传输数据;
(3)MQTT发布主题,将数据发布到所有已订阅该主题的智能手机、电脑的平台,数据传输系统结构如图5所示。
3 实验测试及结果
本研究在包头市天佑生态科技园区(其地域面积广,大棚数量多,对通信信号影响小)进行数据采集接以及组网试验,采集到土壤湿度、空气温湿度、光照强度等信息。目前选择了7个独立的农业大棚进行节点布置,为保证测量数据传输效率,终端采集节点的距离按照要求进行放置,并进行了两个重要方面的测试:
(1)节点功耗测试
对于节点功耗的测量采用较为精确的电阻电压方法[3]。为保证测量到CC2530射频模块和电源模块接通电源后的功耗,在射频模块的电源输出接口处串接1个10 Ω的电阻,用万用变测量实际电压值U,计算得实际电流I=U/10[2]。将节点分为休眠(休眠时工作电流在微安级,所以可以忽略不记)、接收和发射等3种状态,分别测得接收和发射状态下所需的瞬时电流加上传感器所需的工作电流为112 mA和126 mA,为了减少误差,总电流取为130 mA。依据本系统终端节点对气象环境数据的采集是定时采集(测试电源功耗期间,设定3种传感器同时采集数据),设定系统每小时执行接收命令和发送数据的动作时间为50 s,节点功耗为1.80 mA·h/d,则使用总电量为3 000 mA·h,两节五号3.7 V电池可以满足该系统的节点连续工作达1 667 h,满足了系统低功耗要求。
(2)网络的丢包率测试
依据3种传感器节点采集的环境特性以及监测需求,设定了土壤湿度采集周期为20 min、空气温湿度采集周期为5 min、光照强度采集周期为10 min。在协议栈中采用终端采集节点休眠唤醒机制,连续采集环境数据。并由终端采集节点上传数据到协调器节点(网关),利用仿真下载器USB Debug Adapter和TI Packet Sniffer捕获数据包[3],结果如表2所示。由表2分析并结合系统部署环境可知,丢包率呈增长趋势的主要原因是,终端采集节点与协调器距离以及存在的障碍物干扰,尤其是在距离超过100 m后丢包率明显增加[5]。但在农业大棚实际应用中终端采集节点向网关传送数据的距离在100 m以下范围,整个网络平均丢包率降低在2.6%以下,已经可以满足对大棚内空气温湿度、土壤湿度、光照强度数据监测要求。
4 结论
基于物联网的温室大棚环境监测系统的研究,通过ZigBee以及与NodeMCU平台的技术融合,搭建了气象环境监测系统,实现了用户远程对农业大棚气象环境信息的实时采集,用户可以十分便捷地了解信息,做出相应的解决措施,来减少外界环境对农作物的不利影响。系统具有良好通信效率,运行安全稳定,经济实惠(成本平均50元每套),非常适用于发展迅速的农业大棚行业。本系统应用诠释了物联网技术的优越性,在一定程度上解放了生产力,提高了农业大棚农产品生产质量,对其他农业生产系统的气象监测具有良好的借鉴意义。
参考文献
[1] 方中纯,李海荣.基于Arduino和ZigBee的物联网智能网关设计与实现[J].山东工业技术,2018(2):101-102.
[2] 谢振伟,马蓉,赵天图,等.基于ZigBee无线传感器网络的棉田节水灌溉系统设计[J].江苏农业科学,2017,45(16):225-228.
[3] 朱凯.基于ZigBee无线技术的农田数据采集系统设计[D].昆明:昆明理工大学,2017.
[4] 刘媛媛,朱路,黄德昌.基于GPRS与无线传感器网络的农田环境监测系统设计[J].农机化研究,2013,35(7):229-232.
[5] 向乾.基于WSN的温室大棚信息采集智能化监测系统研究[J].农业科技与装备,2017(8):27-31,34.
[6] 徐振华.基于ZigBee与Wi-Fi融合的智能家居系统研究与设计[D].太原:中北大学,2018.
[7] 崔阳,张维华,白云峰.一种基于Arduino的智能家居控制系统[J].电子技术应用,2014,40(4):123-125.
作者信息:
崔丽珍,徐锦涛,丁福星,史明泉,胡海东
(内蒙古科技大学 信息工程学院,内蒙古 包头014010)