基于ZigBee的农业信息采集系统的设计与实现
2020-04-16田丰,何杰
田 丰,何 杰
(重庆科创职业学院 人工智能学院,重庆 永川 402160)
我国农业发展正处于由传统农业向现代农业发展的转型阶段[1]。在大规模种植业领域已开始使用物联网、人工智能和大数据技术,各种农业信息采集系统和设备开始涌现,在检测农产品生长环境和提高农产品质量上发挥了巨大作用[2-3]。但这些信息采集系统则主要局限于对农产品生长环境的温度和湿度的测量,对影响农产品生长质量的光照强度、环境pH值及土壤电导率等指标的检测却常被忽略。当前较成熟的采集系统如结合GPS技术实现对土壤水分、养分、电导率等参数的定位测量,其产品成本价格都相对较高,且不适用于中小规模种植业[4]。为此,开发和设计一套成本较低且能较全面采集农产品生长环境及形态信息的系统,对于进一步实现农业智能化和提高农产品质量有着重要的现实意义。
1 系统硬件设计
农业信息采集系统利用相关传感器网络及图像采集模块,实现影响农产品生长质量的温度、湿度、光照强度、环境pH值、土壤电导率等环境物理量及产品形态图像的采集,同时将采集信息通过基于ZigBee的无线局域网进行无线传输并显示,达到实时观测产品生长状况的目的。
1.1 图像采集
图像采集使用基于全志H3四核ARM处理器开发的图像采集模块,该模块通过控制FA CAM202型USB摄像头,按照一定时间拍照。考虑到农产品的生长形态不会在短时间内发生明显变化,因此,图像采集的频率不宜过于频繁[5],本系统最终选定每六小时拍照一次。每次拍照完成后,图像的二进制数据信息通过串口发送到基于ZigBee终端设备的发送模块,该终端设备将图像的二进制数据分成若干数据包,并通过ZigBee无线传感器网络协议将它们发送到区域网关的ZigBee协调器。图像采集系统结构如图1所示。
1.2 温湿度采集
该部分主要负责农产品生长环境中温度及湿度的数据采集。系统以2.4 GHz IEEE 802.15.4、ZigBee 和RF4CE 应用的片上系统(SoC)CC2530为主控芯片,主控芯片与16个瑞士盛思锐(Sensirion)公司推出的具有极高可靠性和长期稳定性的SHT10温湿度传感器相连,收集各传感器采集的温度与湿度信息,并将收集到的温湿度信息通过单总线协议发送给ZigBee终端设备。温湿度采集系统结构如图2所示。
图2 温湿度采集系统结构
1.3 区域网关
区域网关是农业信息采集系统的核心,主要由ZigBee协调器、基于ARM处理器的嵌入式Linux&Qt开发板、基于485总线的传感器集群三部分组成,区域网关结构如图3所示。
图3 区域网关结构
在图3中,ZigBee协调器作为网络组织的管理者,主要负责建立和维护整个无线传感器网络,并从其他采集系统的ZigBee终端设备中收集无线传输数据。该部分协调器同样使用以CC2530芯片为主控制器的ZigBee开发平台。基于485总线的传感器集群用来收集影响农产品生长的pH值、土壤电导率和光照强度等环境参数。由ARM开发板构成的嵌入式Linux系统和Qt平台负责存储并显示农产品形态图像和温度、湿度及上述数据参数。
2 系统软件设计
由于本系统主要为信息采集区域在40 m2左右的温室空间使用而设计,在满足网络运行更稳定,网络管理更简单,在节省硬件成本的前提下,最终选择不使用路由器的星形网络结构传输和接收无线数据。
系统图像采集程序在基于Linux下的V4L2核心框架内完成,并使用arm-linux-gcc交叉编译工具链进行编译。而区域网关则使用通用性较强的C++语言进行编写,区域网关在基于Qt的平台上完成协调器数据的解析和处理,并接收来自485总线传感器集群的数据,最终实现农产品相关信息的存储与显示。系统各功能部分的软件实现对比如表1所示。
表1 功能软件实现对比
2.1 图像采集
图像采集子系统的ARM开发平台根据一定的周期从相机获取数据后,使用JPEG压缩算法将其压缩为JPEG格式文件,并将完整的JPEG格式图片存储在本地硬盘上。然后通过串口发送到ZigBee终端设备,由于图片的数据信息量通常较大,为能够快速有效进行数据传输,ZigBee终端设备会将一张完整的图片数据信息分成若干个数据包,最后使用ZigBee协议将图像数据包发送给协调器[6]。基于ZigBee平台的图像采集子系统的软件流程如图4所示。
在图4中的“接收设定时间”是根据Linux系统设备驱动中的IO阻塞模型来确定。考虑到一般ZigBee传输的最短距离约为25 m,最长距离约为200 m,故接收设定时间在此处设为3 s。
由于整个系统区域中只有一个协调器,但协调器必须接收来自16个温湿度节点数据以及来自同一区域节点的图像,所以这些数据将异步发送到协调器。当图片尚未完全接收时,协调器可以从温湿度节点接收数据,故系统在接收数据时需要准确区分温湿度数据和图像数据。另外,由于存在16个不同的节点,因此还需准确区分不同节点的温湿度数据。
基于以上原因,当系统向协调器发送数据时,各个子系统需要定义一套基于Qt和ZigBee平台的通信协议,在ZigBee数据包的每个有效载荷前面打包一个8字节的协议头,以区分数据类型和节点号。每个ZigBee数据包的具体格式如表2所示。ZigBee数据包中每个域的具体含义如表3所示。
图4 图像采集子系统流程图
表2 ZigBee数据包格式
表3 ZigBee数据包中每个域的具体含义
2.2 温度和湿度采集
温度采集子系统和图像采集子系统的软件实现大致相同。因为温度和湿度数据只能用一个数据包发送,这与需要分割成多个数据的图像数据不同,相对简单。温度和湿度采集子系统发送的ZigBee数据包格式与图像采集子系统的ZigBee数据包格式完全相同,但最后一个可用数据域中只有四个字节是固定的,前两个字节代表湿度,后两个字节代表温度。CC2530芯片按一定时间收集温湿度传感器数据,同时按照商定的协议格式打包并发送给协调员。然后等待协调器反馈信号,如果没有收到反馈信号,说明有数据丢包事件,需要重新返回到温度和湿度数据,打包并重新发送,直到收到反馈信号。如果成功接收到反馈信号,则将在下一个周期中执行采集活动。具体的软件流程图如图5所示。
2.3 其他参数采集
该系统除了从图像和温湿度采集子系统中采集数据外,还收集pH值、光照强度和电导率等环境参数。后者则通过区域网关的485总线所集成的对应传感器集群来实现,包括pH传感器、光照强度传感器和电导率传感器。他们在485总线上具有不同的设备地址,网关只需要根据485协议指定相应的设备地址,执行相应的命令便可以从指定的传感器获取所需的数据。这三类传感器在485总线上的地址如表4所示。
工作过程中,区域网关按一定时间一定顺序(pH值,光照强度,电导率)依次读取总线传感器集群的对应值。读取pH值、光照强度及电导率的命令格式,见表5。
图5 温湿度采集子系统流程图
表4 485总线上传感设备地址列表
表5 pH值、光照强度、电导率读数命令格式
3 显示平台的开发
本系统在完成相关图像和数据的采集后,为了直观反映各个物理量的数值,设计者还开发了对应的UI显示平台。考虑到UI显示和数据处理共享一个线程会产生网络阻塞现象,为了提高系统的实时性能和响应速度,所以区域网关采用多线程软件架构,主要包含一个UI线程和两个协调器子线程。其中UI线程显示图片和参数,如温度和湿度,它充当主线程,负责界面渲染。另外两个子线程,负责数据的相关处理。
显示平台的开发主要采用基于Qt 5.7版本的开源跨平台图形库来实现。Qt 5.7提供了QSerialPort模块,可以通过Qt库直接读取UART串口或USB到串口[7],所以 ZigBee协调器可通过串口与网关通信,为数据显示提供了良好的平台保证。而协调器子线程则通过使用QSerialPort模块来完成网关和协调器之间的通信。
具体而言,对于农产品形态图像的显示,开发者以Qt平台的模型视图作为框架,以QString List Model和QSort Filter Proxy Model为模型,使用QList View作为视图,从而实现显示功能[8],具体效果如图6所示。对于温湿度显示,开发者在总体显示框架的基础上,通过自定义小部件,实现温度计和湿度仪面板绘图,并通过重写鼠标事件功能,实现对应节点的数据显示,具体效果如图7所示。对于485总线传感器集群数据的显示,开发者使用Qt 5.7提供的QCharts模块机及模型视图功能,通过构建坐标视图显示其各自数据,具体效果如图8所示。
图6 产品形态显示
图7 温湿度显示
图8 传感器集群数据显示
4 结论
在“互联网+”驱动智慧农业大发展的时代背景下,以采集和显示与影响农产品生长环境相关参数为目标,设计了基于ZigBee和Qt跨平台开发框架的农业信息采集系统。该系统具有无线传感器网络尺寸小、功耗低、性能稳定、功能完善、界面友好等特点。系统能够采集并显示农产品形态图像,农产品生长环境温度、湿度、pH值、光照强度及土壤电导率等物理参数,通过对农产品生长质量的监控,达到有效实施调整,进而达到提高农产品质量的目的。