赖义汉,王宇松,傅智河
(龙岩学院物理与机电工程学院,福建 龙岩 364012)
我国作为果树栽培大国, 每年的水果产量及果树种植面积均位居世界前列[1]。 在较偏远的山区种植果树,地形地势较复杂,信号传输不稳定,缺乏对果树生长气候环境、土壤等相关参数的有效采集和监测,无法对果树生长的环境进行最合适的调控, 从而影响果树的成长以及果实的产量和品质。
随着电子信息、传感器、物联网等技术的发展,种植人员可以通过传感器等仪器设备对作物生长环境实时采集,并通过互联网技术把数据传送到远程终端,及时精准获取农作物生长环境信息及相关数据, 实现对农作物生长环境的远程监测[2]。 由于果树种植面积较大,范围较广, 一般需要用多个传感器进行分布式采集数据。 目前主要采用以PLC 或单片机等作为采集和控制的核心设备[3-4]。PLC 虽然控制方便,但总体成本较高, 而采用单片机作为控制芯片, 通常采用WIFI、ZigBee、蓝牙等作为无线传输模块[5]。 WIFI 功耗较大、通信距离较近且成本高, 不适合户外大范围的多点测量和低功耗的组网要求;ZigBee、蓝牙属于短距离无线通信技术[6],其通信距离较短,一般适用于地势比较平坦、空旷且范围较小的环境。本设计以STC8A 系列单片机为控制核心,以RS485 为通信接口[7],通过TTLRS485 转换电路与LoRa 无线数据透传模块实现对果树种植环境参数的采集、传输、处理和显示,具有成本低,通信距离远、扩展灵活等特点[8-9],适用于多节点、范围广且环境较复杂的远程数据监测。
系统采用宏晶科技有限公司的ST8A8K64S4A12单片机作为核心控制器,其片内有8 KB 内存、64 KB 的Flash 程序存储器和4 个串口, 工作电压为2.0~5.5 V,内部集成了复位电路和晶振电路。 单片机通过TTLRS485 转换电路、LoRa 数据透传模块与环境传感器、土壤传感器连接,通过Modbus 协议实现一对多的无线通信模式,采集果树生长的环境参数(温度、湿度、光照、压强、雨量)和土壤参数(温度、水分、pH 值、电导率)等。 单片机把采集到的数据通过串口送至串口屏,并通过4G DTU 模块发送至云服务器, 实现数据的远程存储和监测。 系统框图如图1 所示。
图1 系统方框图
STC8A 系列单片机串口采用的是TTL 电平,需通过MAX485 等转换芯片转换成RS485 电平, 才能与RS485 接口的传感器等设备进行通信。 系统采用MAX13487 芯片构成的具有自动收发功能的半双工TTL-RS485 电平转换电路, 其工作电压为+5 V, 电路原理图如图2 所示,其中:芯片的第1 脚RO 接单片机的RXD; 第4 脚DI 接单片机的TXD; 芯片的第3 脚SHDN 是关断引脚,高电平时芯片为正常模式,低电平时芯片进入关断模式;第2 脚RE 是模式切换控制端,低电平时芯片处于接收模式, 高电平时芯片工作在自动方向控制模式, 即在该模式下接收数据和发送数据都是芯片内部自动切换, 不需要程序和外部电路的参与。 本设计将2 脚RE 和3 脚SHDN 接为高电平,芯片为自动方向控制模式。
图2 TTL-RS485 转换电路
USART-HMI 串口屏选用型号为TJC8048X543 的4.3 寸电容串口屏, 它是一块自带处理器和触摸功能的液晶显示屏,通过串口与单片机主控模块连接,其分辨率为800×480,采用5 V 供电,具有128 MB 的Flash 存储器和512 KB 的运行内存。 串口屏的内部功能强大,具有按钮控件、数字控件、虚拟浮点数控件、文本控件等多种组态控件, 通过厂家提供的上位机软件以图形化的方式对屏幕显示的界面背景、按钮效果、数字、文本显示等控件进行设置, 通过丰富的串口指令集完成各种功能。 串口屏共有4 个端口:VCC、GND、TXD、RXD, 其中串口屏的TXD 和RXD 分别与单片机的RXD 和TXD 连接,单片机通过串口向串口屏发送显示数据。
土壤传感器采用ZTS-3001-TR 五插针土壤四参数传感器,能够测量土壤温度、水分、电导率、pH 值等参数,具有性能稳定、灵敏度高、响应快、体积小、耐腐蚀等特点,可长期埋入土壤中。
环境传感器采用气象百叶箱结构,其内部由多个传感器构成的共用一条RS485 总线接口的多合一检测设备,能测量空气的温度、湿度、大气压、光照度等气象参数。 传感器采用高灵敏度数字探头,信号稳定,精度高。
雨量传感器采用翻斗式结构,其分辨率为0.2 mm,即每翻斗一次,雨量为0.2 mm,采用脉冲转485 信号输出,可直接读取降雨量,无需二次计算。
土壤传感器、 环境传感器、 雨量传感器均采用RS485 接口,即VCC(红)、GND(黑)、RS485-A(黄)、RS485-B(绿),支持标准Modbus-RTU 通信协议,波特率设置为9 600,各传感器的设备地址、寄存器地址及主要参数如表1 所示。
表1 各传感器的设备地址及参数
LoRa 通信技术是近年来发展较快的低功耗、 远距离传输的无线通信技术,具有传输距离远、功耗低、组网节点多、抗干扰性强、成本低等特点,支持RS485 接口的数据收发。 系统采用USR-LG206 无线LoRa 透传模块,工作电压为9~36 V,支持点对点通信协议,有4 种工作模式:AT 指令、透传模式、定点模式、主从模式等。
传感器通过RS485 接口与LoRa 设备连接, 通过点对点的方式实现一个主LoRa 模块与多个从LoRa模块之间的数据传输,其通信连接方式如图3 所示。
图3 LoRa 模块的一对多通信示意图
LoRa 在数据透传模式下工作,只要通信双方速率等级相同、信道一致、目标地址相同,双方就可以实现数据传送。 通信距离在500 m 左右范围内,可选择速率等级为8~9;若在1 km 以内,可选择速率等级为5~7;若存在大型遮挡物时,还需降低速率。
USR-G771 是有人物联网公司推出的高可靠性4G全网通DTU 模块,具有高速率、低延迟等特点,内置独立硬件看门狗,支持RS485 接口,支持三大运营商4G Cat-1 网络和移动、联通2G 网络接入,且上电即可联网应用,使用方便。 DTU 透传工作模式如图4 所示。
图4 G771 DTU 透传工作模式
要使DTU 设备连上云端服务器,首先要在有人云平台上注册有人云通行证,然后将设备添加到云端,在添加设备的过程中, 要在云平台上填写DTU 设备的SN、IMEI 等信息,设置完成后DTU 重新上电,设备启动网络后即可上线进行通信。 当G771 在透传模式下工作时, 用户的串口设备可以通过G771 发送数据到指定的服务器,G771 也可以接收来自服务器的数据,并将信息转发至串口设备, 用户无需关注串口数据与网络数据包之间的数据转换过程, 只需通过简单的参数设置,即可实现数据双向透明通信。
RS485 接口采用的是一种两线制的差分信号的传输方式,Modbus 协议常用ASCII 或RTU 两种模式,在RTU 模式下, 每个字节可以传输两个十六进制字符,且在相同的波特率下RTU 模式可以比ASCII 模式传送更多的数据。 在通信过程中,以单片机作为主机、传感器作为从机, 当主机向从机发送带有设备地址的问询帧时,由于每个从机的设备地址是唯一的,从机收到命令后, 只有设备地址与问询帧地址相同的传感器才会做出应答,并返回一帧数据。
在Modbus RTU 模式下,主机问询帧格式见图5,从机应答帧格式见图6。 其中:地址码为传感器的设备地址,在通信网络中是唯一的。 功能码指主机所发送的指令功能,如功能码0x03(读取寄存器数据)、0x06(存入寄存器数据)。
图5 主机问询帧格式
图6 从机应答帧格式
单片机向传感器发送问询帧后, 等待传感器发回应答帧,由于不同传感器返回的数据长度不同,系统采用超时法接收一串长度不固定的数据包。 设系统串口通信的波特率为9 600, 每一帧数据由10 个数据位组成,即1 个起始位、8 个数据位和1 个停止位,那么单片机接收一个字节所需的时间为10/9 600 ms≈1.042 ms,即如果连续接收多个字节,每个字节之间相差约1.042 ms, 这里取5 ms 作为判断一包数据是否结束的时间阈值,即单片机在接收数据过程中,若超过时间阈值没有接收到数据即表示一包数据已接收完成。 在单片机中设定一个定时器, 每接收一字节数据就清零定时器,若长时间不清零,即定时时间超过5 ms 时,表示数据接收完成,进入数据处理环节。
在串口屏端首先使用串口屏的画面组态软件制作“工程文件”,设置对应的通信接口参数,设波特率为9 600,数据帧为10 位。 然后通过串口屏软件建立显示页面,添加文本及数值等控件,把编制好的“工程文件”下载到串口屏的处理器和Flash 存储器中运行。
在单片机端设置好串口的参数, 编写发送数据的代码,将需要发送的数据打包成字符串的形式,然后通过串口发送出去。在运行中,单片机通过串口指令改变控件的属性就可以改变屏幕上显示的内容, 因此单片机只需发送指令,而不需要编写相关的驱动程序。发送温度值部分代码如下:
write_txt("x0.val="); //发送文本
write_COM(0x30+tem%1000/100);//温度的十位
write_COM(0x30+tem%100/10); //温度的个位
write_COM(0x30+tem%10); //温度的小数位
write_COM(0xFF);//指令结束符为三字节“0xFF”
write_COM(0xFF);
write_COM(0xFF);
单片机启动后先进行初始化,设置串口2、串口4的工作模式为波特率可变通信模式,定时器T2 为波特率发生器,波特率为9 600,设置定时器T0 为方式0 定时模式,采用中断方式设置定时1 ms 初始值,并设置传感器地址变量addr 的初始值为0,根据传感器地址变量值发送土壤传感器、气象传感器、雨量传感器等设备的问询帧,当数据包发送完后,等待接收对应传感器发回的应答帧,并对接收到的数据包进行解析,读出相应传感器的参数值,发送至串口屏及DTU 模块至云端进行显示、存储和监测,其流程图如图7 所示。
图7 系统工作主流程图
首先把传感器与LoRa 模块连接, 其中土壤传感器(设备地址为1)与一个从LoRa 透传模块连接,气象传感器(设备地址为2)与雨量传感器(设备地址为3)共用RS485 总线连接另一个从LoRa 透传模块,把主LoRa模块通过RS485-USB 转换模块连接电脑,通过Modbus调试助手进行调试,在测试过程中,将所有的LoRa 模块信道统一设置为72,目标地址为888,速度为8,波特率为9 600,无校验位,有8 位数据位和1 个停止位。
根据表1 中各传感器的设备地址、 寄存器地址格式分别发送土壤传感器温度、水分、电导率、pH 值问询帧“0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09”,气象传感器的温度、湿度问询帧“0x02,0x03,0x01,0xf4,0x00,0x02,0x84,0x36”, 气象传感器的大气压、 光照问询帧“0x02,0x03,0x01,0xf9,0x00,0x06,0x14,0x36”, 雨量传感器问询帧“0x03,0x03,0x00,0x00,0x00,0x01,0x85,0xe8”,其测试结果如图8 所示, 调试助手能够正确接收到对应传感器发回的应答帧。
图8 串口调试助手测试结果
把单片机的串口4 (P0.2,P0.3) 通过TTL-RS485自动转换电路连接到LoRa 主模块,串口2(P1.0,P1.1)连接到DTU 模块。 单片机启动后,逐一发送各传感器的问询帧,采用中断方式接收各传感器应答帧,并把相关参数数据解析出来,送串口屏及DTU 模块至有人云端进行存储、显示及监测。串口屏及有人云平台上显示的测试数据如图9 和图10 所示。 从图中可以看出,系统能够很好地实时远程监测环境参数的变化。
图9 串口屏测试数据
图10 有人云监测界面
本设计以STC8A 单片机为控制核心, 通过TTLRS485 自动转换电路以及Modbus RTU 通信协议与具有RS485 通信接口的传感器等外围设备连接, 通过LoRa 无线透传模块,实现一对多的远程无线数据采集控制, 同时数据通过DTU 模块发送至云端存储和显示,为研究果树的生长状态与土壤环境、气候环境间的关系以及不同地块按需精准施肥等提供支撑。 整个控制系统电路结构简单,组网方便,同时一个RS485 总线上可以挂接多个传感器,其扩展容易,且数据传输可靠,性能稳定,对于地形复杂,且需要远距离多点数据监测的工作场所有较高的应用价值。