UART相关参数和Modbus协议

news2024/11/26 14:39:14

温湿度数据和风速风向数据的读取和计算方法

文章目录

  • 温湿度数据和风速风向数据的读取和计算方法
  • 1 串行通信数据格式
    • 1.1 协议介绍
    • 1.2 UART相关参数
    • 1.3 UART通信过程
  • 2 USB转串口模块的使用
  • 3 串口调试助手的使用
    • 3.1 串口控制区
    • 3.2 发送控制区
    • 3.3 接收控制区
  • 4 GY-39气象信息模块的原理和使用
    • 4.1 功能简介
    • 4.2 数据包结构
    • 4.3 数据精度
  • 5 使用逻辑分析仪捕获UART通信波形
    • 5.1 逻辑分析仪的工作原理
    • 5.2 逻辑分析仪的主要参数
    • 5.3 使用逻辑分析仪捕获GY-39模块的通信波形
    • 5.4 使用PC读取GY-39模块的测量数据
    • 5.5 GY-39模块测量数据的计算
  • 6 RS485与Modbus协议
    • 6.1 RS485通信接口原理
    • 6.2 Modbus协议原理
    • 6.3 Modbus协议帧结构
  • 7 PR-3000风速风向模块
    • 7.1 模块介绍
    • 7.2 接线方式
    • 7.3 模块地址设置
    • 7.4 Modbus寄存器地址

1 串行通信数据格式

1.1 协议介绍

UART是异步串行通信协议,可以实现双向全双工传输。UART将数据分成帧,并逐位传输。完整的数据帧由起始位、数据位、奇偶校验位和停止位组成。在传输数据时,两个字符之间存在空闲位,空闲位为逻辑1,表示线路处于等待状态。
在这里插入图片描述

1.2 UART相关参数

波特率是每秒传送的二进制码位数,单位为bps。常见的波特率有4800bps9600bps115200bps921600bps等。
起始位用于表示数据的开始传输,由一个逻辑0的数据位表示。
有效数据的长度常被约定为5、6、7或8位,一般都是8位数据。数据位从低位到高位依次传输。
校验位用于验证数据是否正确,有奇校验(odd)偶校验(even)0校验(space)1校验(mark)以及无校验(noparity)等方式。奇校验要求有效数据和校验位中逻辑1的个数为奇数,偶校验要求有效数据和校验位中逻辑1的个数为偶数,0校验和1校验分别要求校验位总是0或1,无校验则不使用校验位。
停止位表示数据传输的结束,一定是逻辑1。常见的停止位数量可以是1位、1.5位或2位。

1.3 UART通信过程

UART通信时,先发送低位,再发送在这里插入图片描述
高位。下面是一个示例:

假设波特率为100bps,每一个比特持续的时间为10ms。原始数据为0110 0011B,即0x63。将该数据转换为UART数据帧:

  • 起始位
  • 有效数据
  • 校验位
  • 停止位

0 01100011 1 1(逆序传输)
则UART数据帧为1100 0110 10。





2 USB转串口模块的使用

在调试硬件时,需要使用USB转串口模块将USB接口信号转换为UART接口的TTL信号。
在这里插入图片描述

串行通信设备可以采用三线制连接,即两条数据线和一条地线。

  1. 用于接收数据的数据线用英文RX、Rx或RXD表示,
  2. 用于发送数据的数据线用英文TX、Tx或TXD表示。

设备1的TX引脚连接设备2的RX引脚,设备1的RX引脚连接设备2的TX引脚。

3 串口调试助手的使用

串口调试助手是一类辅助PC进行串口调试的工具软件。常用的串口调试助手有XCOM、SSCOM、野火多功能调试助手等。此处使用的串口调试助手软件是XCOM V2.0。

3.1 串口控制区

串口控制区用于设定COM号、波特率、停止位长度、数据位长度、奇偶校验类型等。

3.2 发送控制区

发送控制区用于控制发送数据的参数。

  • 定时发送:按照一定的周期自动重复发送数据。
  • 16进制发送:要发送的数据为41。使用16进制发送会将数据理解为0x41并进行发送;不使用16进制发送会将数据理解为0x34 0x31(即4和1的ASCII码)并进行发送。
  • 发送新行:数据后面发送一个’\r\n’。

3.3 接收控制区

接收控制区用于控制接收到的数据的显示格式和流控制方式等。





4 GY-39气象信息模块的原理和使用

4.1 功能简介

GY-39气象信息模块可以测量气压、温度、湿度、光照强度、海拔等多种气象信息。模块内部的芯片可以将数据进行处理。默认的输出方式是UART。

4.2 数据包结构

GY-39模块工作时,会发送光照强度数据包和气象信息数据包。这两种数据包均由包头包类型数据量数据校验和这几个部分组成。
光照强度数据包结构:

  • 包头标志(2字节):5A 5A
  • 包类型标志(1字节):15
  • 数据长度(1字节):04
  • 数据(4字节):00 00 FE 40
  • 校验和(1字节):0B

气象信息数据包结构:

  • 包头标志(2字节):5A 5A
  • 包类型标志(1字节):45
  • 数据长度(1字节):0A
  • 数据(10字节):0B 2D 00 97 C4 3F 12 77 00 9C
  • 校验和(1字节):FA

4.3 数据精度

光照强度(单位为lux)、气压(单位为Pa)和海拔(单位为m)的测量结果仅保留整数,因此传输时只需要将整数转换为对应的二进制数。
温度(单位为℃)和湿度(单位为%RH)的测量结果则保留到小数点后两位。在传输时,会先将数值扩大一百倍,然后再转换为对应的二进制数。测量结果有可能是负数,模块会使用补码来表示负数的结果。



5 使用逻辑分析仪捕获UART通信波形

5.1 逻辑分析仪的工作原理

逻辑分析仪可以对通信接口的数据进行实时监测和采集,它的工作原理是:通过探头监测数据流,将并行数据送入比较器进行电平判断后输出,再将判断结果进行采样和顺序存储,最终可以显示出通信波形。

5.2 逻辑分析仪的主要参数

(1) 采样频率。决定了逻辑分析仪可以采集信号的频率范围,一般要高于被测信号4倍以上。
(2) 存储深度。决定了在固定采样频率下可以采集波形的时间长度,存储深度越大可以观察更长时间内的信号变化。
(3) 触发条件。决定了逻辑分析仪开始采集波形的时机,常用的有上升沿、下降沿、高电平和低电平触发。

5.3 使用逻辑分析仪捕获GY-39模块的通信波形

(1) 连接GY-39模块的TX引脚与逻辑分析仪,并将二者与PC连接。
(2) 设置逻辑分析仪的采样频率为2MHz,采样时间为2s。将通道名设置为UART_TX,触发方式为下降沿触发。
(3) 启动逻辑分析仪,自动开始采集和显示GY-39模块的通信波形。波形中的白点代表一帧数据中的数据位。

5.4 使用PC读取GY-39模块的测量数据

(1) 将GY-39模块、USB转串口模块和PC连接。
(2) 在串口调试助手XCOM中打开相应的串口,设置波特率为9600,数据位为8位,停止位为1位。
(3) 打开串口并观察接收到的数据。GY-39模块默认1Hz发送数据,无需任何操作即可接收。

5.5 GY-39模块测量数据的计算

根据数据手册,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

6 RS485与Modbus协议

6.1 RS485通信接口原理

RS485是美国电气工业联合会制定的多点通信接口标准,采用主从通信方式进行工作,适合远距离、高灵敏度的多点通信。RS485接口有A、B两条信号线,采用差分信号的形式工作。在远距离通信时常用的速率为9600bps,此时通信距离可达500~1500米。
在这里插入图片描述

6.2 Modbus协议原理

Modbus是一种工业领域常用的串行通信协议,是莫迪康(Modicon)公司于1979年为可编程逻辑控制器的通信而研发的。2004年,中国国家标准委员会正式把Modbus协议作为了国家标准(GB/T 19582.2-2008《基于Modbus协议的工业自动化网络规范 第2部分:Modbus协议在串行链路上的实现指南》)。
Modbus协议广泛应用于自动化控制、环境监测、能源管理、工业自动化、楼宇自控等领域。Modbus协议采用简单、开放、易于实现的特点,能够方便地应用于各种不同的设备之间的通信。

6.3 Modbus协议帧结构

Modbus的数据帧分为四部分:设备地址、功能码、数据、校验码。

在这里插入图片描述

设备地址是一个字节,用于指示从机的地址。其中地址0是广播地址,1247是从机可用的地址,248255是保留地址。主机可以通过地址选择通信的对象。
功能码是一个字节,用于指示主机请求的操作。Modbus协议规定了一些常用的功能码,如03功能码是读保持寄存器,16功能码是写多个寄存器等。
数据部分长度不超过252字节。如果是主机发送的帧,则这一部分是主机请求的参数。如果是从机发送的帧,则这一部分是从机返回的数据或者异常码。
校验码是长度为两个字节的数据,用于对设备地址、功能码、数据区的所有字节进行校验。Modbus协议采用CRC16算法进行校验。
根据用途的不同,Modbus帧可以分为主机向从机发送的问询帧和从机向主机发送的应答帧。

7 PR-3000风速风向模块

7.1 模块介绍

该模块由风速模块和风向模块组成。风速模块采用三风杯传感器检测风速,风向模块通过箭头旋转检测风向。
风速风向模块工作电压为10-30V,接口为RS485,最大通信速率为9600bps。

7.2 接线方式

将PR-3000模块的电源、地线、RS485的A、B线接至UART转RS485模块。RS485线不能接反,同一网络下设备地址不能重复。

7.3 模块地址设置

Modbus协议要求同一网络从机地址唯一。风速与风向模块出厂默认地址均为1,使用前需要修改。

7.4 Modbus寄存器地址

根据数据手册,风与风向模块的Modbus寄存器地址如下:
风速模块(地址1):

  • 风速值:0x00(高字节)、0x01(低字节),单位0.1m/s。

风向模块(地址2):

  • 风向值:0x00,取值0-7,对应北、东北、东、东南、南、西南、西、西北。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1056318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM的微博系统网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

FPGA project :HDMI

实验目标&#xff1a;驱动HdMI显示十色等宽彩条。 本实验的重点是&#xff1a; 1掌握TMDS通信协议。 2rgb565转rgb888。 3编写HDMI驱动程序。 4学会看流程图编写代码。 值得注意的事情 1注意数据与解析数据的信号&#xff08;比如传入的数据中0或者1的个数&#xff09;&…

【AI视野·今日NLP 自然语言处理论文速览 第四十五期】Mon, 2 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 2 Oct 2023 Totally 44 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Efficient Streaming Language Models with Attention Sinks Authors Guangxuan Xiao, Yuandong Tian, Beidi C…

gradle中主模块/子模块渠道对应关系通过配置实现

前言&#xff1a; 我们开发过程中&#xff0c;经常会面对针对不同的渠道&#xff0c;要产生差异性代码和资源的场景。目前谷歌其实为我们提供了一套渠道包的方案&#xff0c;这里简单描述一下。 比如我主模块依赖module1和module2。如果主模块中声明了2个渠道A和B&#xff0c…

1.8.C++项目:仿muduo库实现并发服务器之eventloop模块的设计

项目完整在&#xff1a; 文章目录 一、eventloop模块&#xff1a;进行事件监控&#xff0c;以及事件处理的模块二、提供的功能三、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 四、框架五、代码 一、eventloop模…

Andriod 简单控件

目录 一、文本显示1.1 设置文本内容1.2 设置文本大小1.3 设置文本颜色 二、视图基础2.1 设置视图宽高2.2 设置视图间距2.3 设置视图对齐方式 三、常用布局3.1 线性布局LinearLayout3.2 相对布局RelativeLayout3.3 网格布局GridLayout3.4 滚动视图ScrollView 四、按钮触控4.1 按…

Acwing 905. 区间选点

Acwing 905. 区间选点 知识点题目描述思路讲解代码展示 知识点 贪心 题目描述 思路讲解 代码展示 #include <iostream> #include <algorithm>using namespace std;const int N 1e5 10;int n;struct Range {int l, r;bool operator<(const Range &W) co…

宽带光纤接入网中影响家宽业务质量的常见原因有哪些

1 引言 虽然家宽业务质量问题约60%发生在家庭网&#xff08;见《家宽用户家庭网的主要质量问题是什么&#xff1f;原因有哪些》一文&#xff09;&#xff0c;但在用户的眼里&#xff0c;所有家宽业务质量问题都是由运营商的网络质量导致的&#xff0c;用户也因此对不同运营商家…

红外遥控器 数据格式,按下及松开判断

红外遥控是一种无线、非接触控制技术&#xff0c;具有抗干扰能力强&#xff0c;信息传输可靠&#xff0c;功耗低&#xff0c;成本低&#xff0c;易实现等显著优点&#xff0c;被诸多电子设备特别是家用电器广泛采用&#xff0c;并越来越多的应用到计算机系统中。 同类产品的红…

国庆作业5

物理层&#xff1a;负责传输比特流。它将数据转换为比特流并传输。 数据链路层&#xff1a;相邻节点的可靠传输。 网络层&#xff1a;负责在不同的网络中进行数据包的路由和转发。。 传输层&#xff1a;提供端到端的连接。 会话层&#xff1a;负责建立、管理和终止会话。它…

如何用ChatGPT学或教英文?5个使用ChatGPT的应用场景!

原文&#xff1a;百度安全验证 AI工具ChatGPT的出现大幅改变许多领域的运作方式&#xff0c;就连「学英文」也不例外&#xff01;我发现ChatGPT应用在英语的学习与教学上非常有意思。 究竟ChatGPT如何改变英文学习者(学生)与教学者(老师)呢&#xff1f; 有5个应用场景我感到…

idea清空缓存类

解决办法 网上有很多是让你去清空什么maven依赖&#xff0c;但假如这个项目是你不可以大刀阔斧的话 可以清空idea缓存 选择 Invalidate 开头的 然后全选 运行重启idea OK

免费 AI 代码生成器 Amazon CodeWhisperer 初体验

文章作者&#xff1a;浪里行舟 简介 随着 ChatGPT 的到来&#xff0c;不由让很多程序员感到恐慌。虽然我们阻止不了 AI 时代到来&#xff0c;但是我们可以跟随 AI 的脚步&#xff0c;近期我发现了一个神仙 AI 代码生产工具 CodeWhisperer &#xff0c;它是一项基于机器学习的服…

从其它环境转移到Nacos的方法-NacosSync

理解 NacosSync 组件启动 NacosSync 服务通过一个简单的例子&#xff0c;演示如何将注册到 Zookeeper 的 Dubbo 客户端迁移到 Nacos。 介绍 NacosSync是一个支持多种注册中心的同步组件,基于Spring boot开发框架,数据层采用Spring Data JPA,遵循了标准的JPA访问规范,支持多种…

【Golang】数组 切片

【Golang】数组 && 切片 1、数组 基本概念 数组是一个由固定长度的特定类型元素组成的序列&#xff0c;一个数组可以由零个或多个元素组成 因为数组的长度是固定的&#xff0c;所以在Go语言中很少直接使用数组 数组初始化 //1、默认数组中的值是类型的默认值 var arr…

buuctf-[RoarCTF 2019]Easy Java

第一次遇到java类的题目 打开环境&#xff0c;很像sql 点击help 以为是文件包含&#xff0c;&#xff0c;但是不对 这里需要了解JAVA WEB目录结构 WEB-INF&#xff1a;Java的web应用安全目录&#xff1b; 此外如果想在页面访问WEB-INF应用里面的文件&#xff0c;必须要通过w…

localStorage实现历史记录搜索功能

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;JavaScript &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 为什么使用localStorage如何使用localStorage实现历史记录搜索功能&#xff08…

矢量图形编辑软件illustrator 2023 mac特点介绍

illustrator 2023 mac是一款矢量图形编辑软件&#xff0c;用于创建和编辑排版、图标、标志、插图和其他类型的矢量图形。 illustrator mac软件特点 矢量图形&#xff1a;illustrator创建的图形是矢量图形&#xff0c;可以无限放大而不失真&#xff0c;这与像素图形编辑软件&am…

[Linux]线程互斥

[Linux]线程互斥 文章目录 [Linux]线程互斥线程并发访问问题线程互斥控制--加锁pthread_mutex_init函数pthread_mutex_destroy函数pthread_mutex_lock函数pthread_mutex_unlock函数锁相关函数使用示例使用锁的细节加锁解锁的实现原理 线程安全概念常见的线程不安全的情况常见的…

蓝桥杯每日一题2023.10.2

时间显示 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 输入为毫秒&#xff0c;故我们可以先将毫秒转化为秒&#xff0c;由于只需要输出时分&#xff0c;我们只需要将天数去除即可&#xff0c;可以在这里多训练一次天数判断 #include<bits/stdc.h> using namespace std…