UART
是异步串行通信协议,可以实现双向全双工传输。UART将数据分成帧,并逐位传输。完整的数据帧由起始位、数据位、奇偶校验位和停止位组成。在传输数据时,两个字符之间存在空闲位,空闲位为逻辑1,表示线路处于等待状态。
波特率是每秒传送的二进制码位数,单位为bps。常见的波特率有4800bps
、9600bps
、115200bps
、921600bps
等。
起始位用于表示数据的开始传输,由一个逻辑0的数据位表示。
有效数据的长度常被约定为5、6、7或8位,一般都是8位数据。数据位从低位到高位依次传输。
校验位用于验证数据是否正确,有奇校验(odd)
、偶校验(even)
、0校验(space)
、1校验(mark)
以及无校验(noparity)
等方式。奇校验要求有效数据和校验位中逻辑1的个数为奇数,偶校验要求有效数据和校验位中逻辑1的个数为偶数,0校验和1校验分别要求校验位总是0或1,无校验则不使用校验位。
停止位表示数据传输的结束,一定是逻辑1。常见的停止位数量可以是1位、1.5位或2位。
假设波特率为100bps,每一个比特持续的时间为10ms。原始数据为0110 0011B,即0x63。将该数据转换为UART数据帧:
0 01100011 1 1(逆序传输)
则UART数据帧为1100 0110 10。
在调试硬件时,需要使用USB转串口模块将USB接口信号转换为UART接口的TTL信号。
串行通信设备可以采用三线制连接,即两条数据线和一条地线。
设备1的TX引脚连接设备2的RX引脚,设备1的RX引脚连接设备2的TX引脚。
串口调试助手是一类辅助PC进行串口调试的工具软件。常用的串口调试助手有XCOM、SSCOM、野火多功能调试助手等。此处使用的串口调试助手软件是XCOM V2.0。
串口控制区用于设定COM号、波特率、停止位长度、数据位长度、奇偶校验类型等。
发送控制区用于控制发送数据的参数。
接收控制区用于控制接收到的数据的显示格式和流控制方式等。
GY-39气象信息模块可以测量气压、温度、湿度、光照强度、海拔等多种气象信息。模块内部的芯片可以将数据进行处理。默认的输出方式是UART。
GY-39模块工作时,会发送光照强度数据包和气象信息数据包。这两种数据包均由包头
、包类型
、数据量
、数据
和校验和
这几个部分组成。
光照强度数据包结构:
气象信息数据包结构:
光照强度(单位为lux)、气压(单位为Pa)和海拔(单位为m)的测量结果仅保留整数,因此传输时只需要将整数转换为对应的二进制数。
温度(单位为℃)和湿度(单位为%RH)的测量结果则保留到小数点后两位。在传输时,会先将数值扩大一百倍,然后再转换为对应的二进制数。测量结果有可能是负数,模块会使用补码来表示负数的结果。
逻辑分析仪可以对通信接口的数据进行实时监测和采集,它的工作原理是:通过探头监测数据流,将并行数据送入比较器进行电平判断后输出,再将判断结果进行采样和顺序存储,最终可以显示出通信波形。
(1) 采样频率。决定了逻辑分析仪可以采集信号的频率范围,一般要高于被测信号4倍以上。
(2) 存储深度。决定了在固定采样频率下可以采集波形的时间长度,存储深度越大可以观察更长时间内的信号变化。
(3) 触发条件。决定了逻辑分析仪开始采集波形的时机,常用的有上升沿、下降沿、高电平和低电平触发。
(1) 连接GY-39模块的TX引脚与逻辑分析仪,并将二者与PC连接。
(2) 设置逻辑分析仪的采样频率为2MHz,采样时间为2s。将通道名设置为UART_TX,触发方式为下降沿触发。
(3) 启动逻辑分析仪,自动开始采集和显示GY-39模块的通信波形。波形中的白点代表一帧数据中的数据位。
(1) 将GY-39模块、USB转串口模块和PC连接。
(2) 在串口调试助手XCOM中打开相应的串口,设置波特率为9600,数据位为8位,停止位为1位。
(3) 打开串口并观察接收到的数据。GY-39模块默认1Hz发送数据,无需任何操作即可接收。
根据数据手册,GY-39模块发送的数据为:
光照强度=(前高8位<<24)|(前低8位<<16)|(后高8位<<8)|后低8位/10 lux
温度=((高8位<<8)|低8位)/100 °C
气压=(前高8位<<24)|(前低8位<<16)|(后高8位<<8)|后低8位 /100 Pa
湿度=(高8位<<8)|低8位/100 %RH
海拔高度=(高8位<<8)|低8位 m
RS485是美国电气工业联合会制定的多点通信接口标准,采用主从通信方式进行工作,适合远距离、高灵敏度的多点通信。RS485接口有A、B两条信号线,采用差分信号的形式工作。在远距离通信时常用的速率为9600bps,此时通信距离可达500~1500米。
Modbus是一种工业领域常用的串行通信协议,是莫迪康(Modicon)公司于1979年为可编程逻辑控制器的通信而研发的。2004年,中国国家标准委员会正式把Modbus协议作为了国家标准(GB/T 19582.2-2008《基于Modbus协议的工业自动化网络规范 第2部分:Modbus协议在串行链路上的实现指南》)。
Modbus协议广泛应用于自动化控制、环境监测、能源管理、工业自动化、楼宇自控等领域。Modbus协议采用简单、开放、易于实现的特点,能够方便地应用于各种不同的设备之间的通信。
Modbus的数据帧分为四部分:设备地址、功能码、数据、校验码。
设备地址是一个字节,用于指示从机的地址。其中地址0是广播地址,1247是从机可用的地址,248255是保留地址。主机可以通过地址选择通信的对象。
功能码是一个字节,用于指示主机请求的操作。Modbus协议规定了一些常用的功能码,如03功能码是读保持寄存器,16功能码是写多个寄存器等。
数据部分长度不超过252字节。如果是主机发送的帧,则这一部分是主机请求的参数。如果是从机发送的帧,则这一部分是从机返回的数据或者异常码。
校验码是长度为两个字节的数据,用于对设备地址、功能码、数据区的所有字节进行校验。Modbus协议采用CRC16算法进行校验。
根据用途的不同,Modbus帧可以分为主机向从机发送的问询帧和从机向主机发送的应答帧。
该模块由风速模块和风向模块组成。风速模块采用三风杯传感器检测风速,风向模块通过箭头旋转检测风向。
风速风向模块工作电压为10-30V,接口为RS485,最大通信速率为9600bps。
将PR-3000模块的电源、地线、RS485的A、B线接至UART转RS485模块。RS485线不能接反,同一网络下设备地址不能重复。
Modbus协议要求同一网络从机地址唯一。风速与风向模块出厂默认地址均为1,使用前需要修改。
根据数据手册,风与风向模块的Modbus寄存器地址如下:
风速模块(地址1):
风向模块(地址2):