基于RS485 通信的远程数据采集系统设计

2023-12-27 05:05赖义汉王宇松傅智河
新乡学院学报 2023年12期
关键词:波特率控件串口

赖义汉,王宇松,傅智河

(龙岩学院物理与机电工程学院,福建 龙岩 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 总线上可以挂接多个传感器,其扩展容易,且数据传输可靠,性能稳定,对于地形复杂,且需要远距离多点数据监测的工作场所有较高的应用价值。

猜你喜欢
波特率控件串口
浅谈AB PLC串口跟RFID传感器的通讯应用
CAN 总线波特率自适应程序设计
关于.net控件数组的探讨
基于FPGA的异步串行通信波特率容错设计
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
ASP.NET服务器端验证控件的使用
基于并行控制的FPGA多串口拓展实现
C*Core芯片SCI串口波特率容限优化
基于嵌入式MINIGUI控件子类化技术的深入研究与应用