基于RS485 通信的远程数据采集系统设计
2023-12-27赖义汉王宇松傅智河
赖义汉,王宇松,傅智河
(龙岩学院物理与机电工程学院,福建 龙岩 364012)
我国作为果树栽培大国, 每年的水果产量及果树种植面积均位居世界前列[1]。 在较偏远的山区种植果树,地形地势较复杂,信号传输不稳定,缺乏对果树生长气候环境、土壤等相关参数的有效采集和监测,无法对果树生长的环境进行最合适的调控, 从而影响果树的成长以及果实的产量和品质。
随着电子信息、传感器、物联网等技术的发展,种植人员可以通过传感器等仪器设备对作物生长环境实时采集,并通过互联网技术把数据传送到远程终端,及时精准获取农作物生长环境信息及相关数据, 实现对农作物生长环境的远程监测[2]。 由于果树种植面积较大,范围较广, 一般需要用多个传感器进行分布式采集数据。 目前主要采用以PLC 或单片机等作为采集和控制的核心设备[3-4]。PLC 虽然控制方便,但总体成本较高, 而采用单片机作为控制芯片, 通常采用WIFI、ZigBee、蓝牙等作为无线传输模块[5]。 WIFI 功耗较大、通信距离较近且成本高, 不适合户外大范围的多点测量和低功耗的组网要求;ZigBee、蓝牙属于短距离无线通信技术[6],其通信距离较短,一般适用于地势比较平坦、空旷且范围较小的环境。本设计以STC8A 系列单片机为控制核心,以RS485 为通信接口[7],通过TTLRS485 转换电路与LoRa 无线数据透传模块实现对果树种植环境参数的采集、传输、处理和显示,具有成本低,通信距离远、扩展灵活等特点[8-9],适用于多节点、范围广且环境较复杂的远程数据监测。
1 系统总体设计思路
系统采用宏晶科技有限公司的ST8A8K64S4A12单片机作为核心控制器,其片内有8 KB 内存、64 KB 的Flash 程序存储器和4 个串口, 工作电压为2.0~5.5 V,内部集成了复位电路和晶振电路。 单片机通过TTLRS485 转换电路、LoRa 数据透传模块与环境传感器、土壤传感器连接,通过Modbus 协议实现一对多的无线通信模式,采集果树生长的环境参数(温度、湿度、光照、压强、雨量)和土壤参数(温度、水分、pH 值、电导率)等。 单片机把采集到的数据通过串口送至串口屏,并通过4G DTU 模块发送至云服务器, 实现数据的远程存储和监测。 系统框图如图1 所示。
图1 系统方框图
2 主要硬件电路设计
2.1 TTL-RS485 转换电路
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 转换电路
2.2 串口屏显示模块
USART-HMI 串口屏选用型号为TJC8048X543 的4.3 寸电容串口屏, 它是一块自带处理器和触摸功能的液晶显示屏,通过串口与单片机主控模块连接,其分辨率为800×480,采用5 V 供电,具有128 MB 的Flash 存储器和512 KB 的运行内存。 串口屏的内部功能强大,具有按钮控件、数字控件、虚拟浮点数控件、文本控件等多种组态控件, 通过厂家提供的上位机软件以图形化的方式对屏幕显示的界面背景、按钮效果、数字、文本显示等控件进行设置, 通过丰富的串口指令集完成各种功能。 串口屏共有4 个端口:VCC、GND、TXD、RXD, 其中串口屏的TXD 和RXD 分别与单片机的RXD 和TXD 连接,单片机通过串口向串口屏发送显示数据。
2.3 传感器主要参数及接口
土壤传感器采用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;若存在大型遮挡物时,还需降低速率。
2.5 4G DTU 模块
USR-G771 是有人物联网公司推出的高可靠性4G全网通DTU 模块,具有高速率、低延迟等特点,内置独立硬件看门狗,支持RS485 接口,支持三大运营商4G Cat-1 网络和移动、联通2G 网络接入,且上电即可联网应用,使用方便。 DTU 透传工作模式如图4 所示。
图4 G771 DTU 透传工作模式
要使DTU 设备连上云端服务器,首先要在有人云平台上注册有人云通行证,然后将设备添加到云端,在添加设备的过程中, 要在云平台上填写DTU 设备的SN、IMEI 等信息,设置完成后DTU 重新上电,设备启动网络后即可上线进行通信。 当G771 在透传模式下工作时, 用户的串口设备可以通过G771 发送数据到指定的服务器,G771 也可以接收来自服务器的数据,并将信息转发至串口设备, 用户无需关注串口数据与网络数据包之间的数据转换过程, 只需通过简单的参数设置,即可实现数据双向透明通信。
3 软件设计与测试
3.1 基于RS485 接口的Modbus 通信协议
RS485 接口采用的是一种两线制的差分信号的传输方式,Modbus 协议常用ASCII 或RTU 两种模式,在RTU 模式下, 每个字节可以传输两个十六进制字符,且在相同的波特率下RTU 模式可以比ASCII 模式传送更多的数据。 在通信过程中,以单片机作为主机、传感器作为从机, 当主机向从机发送带有设备地址的问询帧时,由于每个从机的设备地址是唯一的,从机收到命令后, 只有设备地址与问询帧地址相同的传感器才会做出应答,并返回一帧数据。
在Modbus RTU 模式下,主机问询帧格式见图5,从机应答帧格式见图6。 其中:地址码为传感器的设备地址,在通信网络中是唯一的。 功能码指主机所发送的指令功能,如功能码0x03(读取寄存器数据)、0x06(存入寄存器数据)。
图5 主机问询帧格式
图6 从机应答帧格式
3.2 单片机串口数据收发
单片机向传感器发送问询帧后, 等待传感器发回应答帧,由于不同传感器返回的数据长度不同,系统采用超时法接收一串长度不固定的数据包。 设系统串口通信的波特率为9 600, 每一帧数据由10 个数据位组成,即1 个起始位、8 个数据位和1 个停止位,那么单片机接收一个字节所需的时间为10/9 600 ms≈1.042 ms,即如果连续接收多个字节,每个字节之间相差约1.042 ms, 这里取5 ms 作为判断一包数据是否结束的时间阈值,即单片机在接收数据过程中,若超过时间阈值没有接收到数据即表示一包数据已接收完成。 在单片机中设定一个定时器, 每接收一字节数据就清零定时器,若长时间不清零,即定时时间超过5 ms 时,表示数据接收完成,进入数据处理环节。
3.3 单片机与串口屏通信
在串口屏端首先使用串口屏的画面组态软件制作“工程文件”,设置对应的通信接口参数,设波特率为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);
3.4 系统工作流程
单片机启动后先进行初始化,设置串口2、串口4的工作模式为波特率可变通信模式,定时器T2 为波特率发生器,波特率为9 600,设置定时器T0 为方式0 定时模式,采用中断方式设置定时1 ms 初始值,并设置传感器地址变量addr 的初始值为0,根据传感器地址变量值发送土壤传感器、气象传感器、雨量传感器等设备的问询帧,当数据包发送完后,等待接收对应传感器发回的应答帧,并对接收到的数据包进行解析,读出相应传感器的参数值,发送至串口屏及DTU 模块至云端进行显示、存储和监测,其流程图如图7 所示。
图7 系统工作主流程图
3.5 系统测试
首先把传感器与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 有人云监测界面
4 结语
本设计以STC8A 单片机为控制核心, 通过TTLRS485 自动转换电路以及Modbus RTU 通信协议与具有RS485 通信接口的传感器等外围设备连接, 通过LoRa 无线透传模块,实现一对多的远程无线数据采集控制, 同时数据通过DTU 模块发送至云端存储和显示,为研究果树的生长状态与土壤环境、气候环境间的关系以及不同地块按需精准施肥等提供支撑。 整个控制系统电路结构简单,组网方便,同时一个RS485 总线上可以挂接多个传感器,其扩展容易,且数据传输可靠,性能稳定,对于地形复杂,且需要远距离多点数据监测的工作场所有较高的应用价值。