农业环境科学学报

期刊导读

基于的远程分布式农业环境监测系统的设计

来源:农业环境科学学报 【在线投稿】 栏目:期刊导读 时间:2021-03-13

我国是一个农业大国,农业在国家经济建设中具有十分重要的战略地位,我国农业环境在空间和地域分布上极其不同,如何科学有效地管理和监测农业环境信息成为农业信息化研究的重点。物联网技术的发展给农业环境信息采集和最优化控制提供了可靠的技术基础,已经成为农业科学种植的主要信息化手段。现在已有的农业无线数据监测系统组网和协议比较复杂,系统存在着传输距离短、功耗高和抗干扰性差等缺点[1-5]。

本研究提出了一种基于LoRa技术的农业数据监测系统,利用LoRa无线通信模块组建数据传输网络。数据传输网络中的汇总节点接收所有监测节点的数据,然后将数据打包处理后通过通用分组无线服务(GPRS)通信网络上传至服务器,利用C#语言开发的上位机实现对监测数据的实时显示以及保存。整个系统设计和组网简单,能够实时准确显示农业环境检测数据,运行稳定可靠,可以满足农业环境监测和有效管理的要求。

1系统结构设计

整个系统利用LoRa无线通信模块组建数据传输网络,包含监测节点和汇总节点2种节点。监测节点由STM32控制器、传感器和LoRa模块组成,STM32驱动各传感器采集数据并通过LoRa模块将数据发送给汇总节点。数据传输网络中的汇总节点接收所有从监测节点传来的数据,然后将数据打包处理后通过GPRS通信网络上传至服务器,利用C#语言开发的上位机实现对监测数据的实时显示以及保存。整个农业环境系统的结构如图1所示。

2系统硬件设计

整个系统分为监测节点、汇总节点2个部分。监测节点包括STM32控制器模块、LoRa无线通信模块、土壤温度和水分传感器模块、土壤酸碱度传感器模块、光照传感器模块以及电源模块,监测节点负责采集数据并通过LoRa模块将数据发送给汇总节点。汇总节点包括STM32控制器模块、LoRa无线通信模块、GPRS模块以及电源模块,负责将数据打包后上传至服务器端。整个系统的硬件框图如图2所示。

2.1 电源模块电路设计

电源供电需要+5.0 V、+3.3 V和+12.0 V 3路电源。控制器采用+3.3 V电源供电,放大电路需要+12.0 V电源进行供电,+5.0 V电源由USB提供,为了保证电源设计输出稳定,采用AMS1117稳压芯片设计+3.3 V电源,用德州仪器公司的LDO低压差线性稳压器TPS设计提供12 V电源[6-7]。供电电路如图3和图4所示。

2.2 土壤酸碱度电路设计

设计中采用电化学法对土壤的酸碱度进行测量,该方法是利用电极电位的大小与检测物质浓度的大小呈线性的电化学法。工作原理是把被测液体的浓度、测量电极和参考比较电极等效为原电池,这样可以使化学能转化为电池的电动势,建立起原电池电压和液体中氢离子浓度之间的关系,通过测量电池的电动势得到氢离子浓度,进而得到土壤的酸碱度值。在设计中由于土壤溶液中氢离子浓度转化的电信号比较微弱,不能为后续电路处理,所以必须对该采集到的小信号进行放大处理。本研究采用CD4575和TL048 2款放大器和相关的外围电路设计了一个四级运放系统。四级放大器的第1级采用正相放大设计,这样设计可以提高输入阻抗;用TL048设计第3级放大器,作用是调节输入电压的零点[8-10]。具体电路如图5所示。

3系统软件设计

整个系统软件设计主要包括监测节点软件设计、汇总节点软件设计和上位机软件设计。

3.1 监测节点软件设计

监测节点由STM32微控制器、多传感器、LoRa模块组成,土壤温度、水分传感器和STM32之间通过IIC总线通信,酸碱度传感器和光照传感器的数据通过STM32内部的ADC模块读取,LoRa模块和STM32控制器之间通过串口通信,程序流程如图6所示。

3.2 汇总节点软件设计

汇总节点由STM32微控制器、LoRa模块以及GPRS模块组成,其主要功能是接收所有从监测节点传来的数据,然后将所有数据打包处理上传至服务器端。LoRa模块和GPRS模块都是通过串口和STM32通信,所以在汇总节点部分须要用到STM32内部的USART模块。STM32和LoRa模块之间使用USART1通信,STM32和GPRS模块之间使用USART2通信。USART1采用中断方式采集数据,一旦有数据传入则会触发中断,串口每中断一次发送一个八位数据,数据会保存在缓冲寄存器中,在串口中断处理函数中将缓冲寄存器中的数据保存到一个数组中,接收完一帧数据关闭串口1中断,使用串口2发送数据。为了区分不同节点的数据,程序规定每个监测节点发送的数据格式为节点号+数据+结束标志符。所以在汇总节点处要对不同节点数据进行识别,如果接收到的是数据节点号,则表示要开始一帧数据的接收,此时将数据接收标志位置1。如果接收到的是结束标志符,则表示一帧数据的接收已结束,此时将数据接收标志位置0,将数据接收完成标志位置1。主程序中判断到数据接收完成标志位置1后会中断串口1,此时转入串口2发送,利用串口2的发送函数将数组中的数据发给GPRS模块,然后GPRS模块将所有的数据上传至服务器端。其程序流程如图7所示。