关于智能汽车的一些思考

当前智能汽车上一般配置有12路超声波雷达,这些专用超声波雷达内置了MCU,直接输出数字化的测距结果,一般硬件接口采用串口RS485,通信协议采用modbus。

一、RS485与RS232(UART)有什么不同?

1.接口物理结构

  • RS232接口通常以9个引脚(DB-9)或25个引脚(DB-25)的形态出现,常见于个人计算机上,通常标记为COM1和COM2。

  • RS485接口则没有具体的物理形状,它是根据工程实际情况而选择的接口。

2.接口电子特性

  • RS232接口的信号电平值较高,任何一条信号线的电压均为负逻辑关系。逻辑“1”为-3~-15V,逻辑“0”为+3~+15V,噪声容限为2V。这种高电平容易损坏接口电路的芯片,且与TTL电平不兼容,需要电平转换电路才能与TTL电路连接。

  • RS485接口则采用差分信号传输,逻辑“1”以两线间的电压差+2V~+6V表示,逻辑“0”以两线间的电压差-6V~-2V表示。这种信号电平较低,不易损坏接口电路芯片,且与TTL电平兼容,方便与TTL电路连接。

3.通讯距离

  • RS232适合本地设备的通信,传输距离相对较短,一般限制在20米以内,最大标准值为15米,且只能点对点通讯。

  • RS485则具有更远的传输距离,从几十米到上千米不等,最大无线传输距离可达1200米。

4.多点通讯支持

  • RS232通常用于单端一对一通信(一主一从),在总线上只允许连接1个收发器,不支持多站收发能力。

  • RS485则支持一对多(一主多从)通信,在总线上允许连接多达128个收发器,具有多站通讯能力,方便建立设备网络。

5.传输速率

  • RS232的传输速率相对较低,最大速率为20kB/s。

  • RS485的传输速率则更高,最大传输速率可达10Mbps。

6.通讯线选择

  • RS232可以采用三芯双绞线、三芯屏蔽线等。

  • RS485则可以采用两芯双绞线、两芯屏蔽线等。

7.传输规范

  • RS232是一种异步串口协议,采用异步传输方式,数据帧中不包含时钟信号,通过起始位和停止位确定数据传输时序。

  • RS485则是一种半双工同步协议,采用差分传输方式,具有更好的抗干扰性。

二、Modbus协议是什么?

Modbus协议是一种串行通信协议,由Modicon公司(现为施耐德电气Schneider Electric)于1979年提出,用于可编程逻辑控制器(PLC)的通信。以下是对Modbus协议的主要特点和详细解释:

1.定义与标准

  • Modbus协议已经成为工业领域通信协议的业界标准(De facto),并且是工业电子设备之间常用的连接方式。

  • 它是一种基于主从结构的通信协议,定义了一系列规范和命令格式,用于实现不同设备之间的数据传输和通信。

2.版本与变种

  • Modbus协议存在多种版本和变种,以适应不同的网络和接口需求。例如,有Modbus RTU(远程终端单元)和Modbus ASCII两种串行通信变种,以及Modbus/TCP用于TCP/IP网络。

  • Modbus RTU采用二进制表示数据,具有紧凑和高效的特点;而Modbus ASCII则是一种人类可读的表示方式,但相对冗长。

3.特性与优势

  • 免费且公开:Modbus协议是公开发表且无版权要求的,这使得它得到了广泛的应用。

  • 支持多种接口:Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传输,如双绞线、光纤、无线等。

  • 简单易懂:Modbus的帧格式简单,易于开发和部署。

  • 可靠性好:Modbus协议需要对数据进行校验,确保数据传输的可靠性。在串行协议中,ASCII模式采用LRC校验,RTU模式采用16位CRC校验。

4.应用与架构

  • Modbus协议被广泛应用于工业自动化领域,用于各种设备间的数据交换和通信。

  • 它采用主从方式定时收发数据,在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令。

  • Modbus应用协议是OSl模型第7层上的应用层报文传输协议,用于在通过不同类型的总线或网络连接设备之间的客户机/服务器通信。

5.数据模型与功能

  • Modbus的数据模型是以一组具有不同特征的表为基础建立的,包括离散量输入、线圈、输入寄存器、保持寄存器4个基本表。

  • Modbus应用协议使用功能码列表来读或写数据,或者在远程服务器上进行远程读/写寄存器列表、读/写比特列表、诊断以及标识等处理。

三、如果让你设计一款 12路车载超声波雷达,采用 stm32F103+HC-SR04超声波模块,对外提供RS485和Modbus协议,你的设计方案是什么?

(1)系统概述

本设计旨在开发一款12路车载超声波雷达系统,采用STM32F103作为主控制器,结合HC-SR04超声波模块实现距离测量。系统通过RS485接口和Modbus协议与外部设备通信,提供稳定可靠的数据传输和交互功能。

(2)硬件设计

  1. 主控制器:采用STM32F103微控制器,具备高性能、低功耗和丰富的外设接口,满足系统对实时性和处理能力的需求。

  2. 超声波模块:选用HC-SR04超声波模块,该模块具有测量范围远、精度高等优点,适用于车载雷达系统。通过STM32F103的GPIO端口与模块连接,实现距离测量功能。

  3. RS485接口:采用RS485通信接口,实现与外部设备的长距离、高速率数据传输。选用合适的RS485收发器,将STM32F103的UART端口转换为RS485接口,实现数据通信。

  4. 电源管理:设计合适的电源管理电路,为系统提供稳定的电源供应。考虑车载环境的特殊性,采用宽电压输入设计,保证系统在各种电压波动下均能正常工作。

(3)软件设计

  1. 驱动程序:编写STM32F103的驱动程序,包括GPIO、UART等外设的初始化和配置。确保与HC-SR04超声波模块和RS485收发器的正常通信。

  2. 超声波测距算法:根据HC-SR04超声波模块的工作原理,编写测距算法。通过STM32F103的定时器功能,精确测量超声波从发射到接收的时间,进而计算出距离值。

  3. Modbus协议实现:在STM32F103上实现Modbus协议栈,包括数据帧的封装、解析和通信流程控制等。通过RS485接口与外部设备进行数据交换,支持Modbus RTU和ASCII两种模式。

  4. 应用程序:编写应用程序,实现系统的整体功能和逻辑控制。包括超声波测距的周期性触发、数据处理和存储、Modbus通信的发起和响应等。

(4)系统测试与优化

  1. 功能测试:对系统进行全面的功能测试,确保各个模块和接口均能正常工作。测试内容包括超声波测距的精度和稳定性、RS485通信的可靠性和速率等。

  2. 性能优化:根据测试结果对系统进行性能优化,包括调整超声波测距算法的参数、优化Modbus通信的帧格式和通信流程等。以提高系统的整体性能和稳定性。

  3. 抗干扰设计:考虑车载环境的复杂性和电磁干扰问题,在硬件和软件上采取相应的抗干扰措施。如采用差分信号传输、增加滤波电路、优化通信协议等。

通过以上设计方案,可以开发出一款稳定可靠、功能丰富的12路车载超声波雷达系统,满足车载雷达应用的需求。

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

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

相关文章

5.27周报

这两周邻近毕业故没有很多时间来学习课余内容,另外最近身体有些不舒服【偏头痛】,所以学的内容不多,包括SVM向量机和ResNet【不包括代码复现】 1.SVM支持向量机的大概内容 1、目的: 主要内容是如何找到分类的那条线【超平面】—…

我的世界开服保姆级教程

前言 Minecraft开服教程 如果你要和朋友联机时,可以选择的方法有这样几种: 局域网联机:优点:简单方便,在MC客户端里自带。缺点:必须在同一局域网内。 有些工具会带有联机功能:优点:一…

Transformer详解(5)-编码器和解码器

1、Transformer编码器 import torch from torch import nn import copy from norm import Norm from multi_head_attention import MultiHeadAttention from feed_forward import FeedForward from pos_encoder import PositionalEncoderdef get_clones(module, N):"&quo…

【GateWay】自定义RoutePredicateFactory

需求:对于本次请求的cookie中,如果userType不是vip的身份,不予访问 思路:因为要按照cookie参数进行判断,所以根据官方自带的CookieRoutePredicateFactory进行改造 创建自己的断言类,命名必须符合 xxxRout…

整理前端新出的操作工具好用又好玩(Custom Formatter,Oxlint,Nuxt DevTools,component-party)

1.使用Custom Formatter 使vue3中的reactive object 在Chrome在console中更易理解的方式展现 启用步骤: 1.打开控制台,然后打开console设置 2.前往proferences中的Console,勾选Enable custom formatters选项 3.刷新页面 2.使用css Overv…

FreeRtos进阶——关于任务的深入探究

创建任务函数 在我们创建任务中,会有几个比较神奇的参数,例如函数名称,以及栈大小。在我们创建任务时,也相应的要为每一个任务创建栈。这里面的栈除了用于任务数组开辟的空间外,还可以用于保存现场,例如有S…

手把手从0到1教你做STM32+FreeRTOS智能家居--第11篇之步进电机

一、硬件设计 步进电机介绍 本项目用到的是常见的也是控制起来最简单的步进电机:五线四项的步进电机28BYJ-48。 单片机IO口输出电流太小无法直接驱动电机运行,在这里我们需要另外加一个电机驱动板。可以选择ULN2003电机驱动板。 步进电机的控制原理 …

JAVA面试题大全(十三)

1、Mybatis 中 #{}和 ${}的区别是什么? 在 MyBatis 中,#{} 和 ${} 是两种用于参数绑定的方式,它们之间的主要区别在于数据处理的方式和 SQL 注入的风险。 #{}:预编译处理 #{} 用于预编译处理,MyBatis 会为其生成 Prep…

jmeter发送webserver请求和上传请求

有时候在项目中会遇到webserver接口和上传接口的请求,大致参考如下 一、发送webserver请求 先获取登录接口的token,再使用cookie管理器进行关联获取商品(webserver接口),注意参数一般是写在消息体数据中,消息体有点像HTML格式 执…

JavaScript数据类型与转换

JavaScript是一种弱类型语言,在定义变量的时候不用规定数据的类型,但这部表示JavaScript没有规定数据类型。 数值 JavaScript中数值类型不区分浮点数与整数,所有的数值都以浮点型来表示。另外JavaScript核心,Math还提供了大量的…

windows 搭建 go开发环境

go语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须…

字典的创建和删除

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中,字典与列表类似,也是可变序列,不过与列表不同,它是无序的可变序列,保存的内容…

pip换源ubuntu

到THU网站上有给定的教程 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ 方法1 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package然后在https://pypi.org/project/nvidia-cublas-cu12/#files 里面搜索你的包名 方法2 python -m pip install --upg…

决策树|随机森林 GBDT XGBoost|集成学习

文章目录 1 决策树模型1.1 决策树模型简介1.2 决策树模型核心问题1.2.1 分类划分标准1.2.1.1 信息增益1.2.1.2 增益率1.2.1.3 基尼系数 1.2.2 停止生长策略1.2.3 剪枝策略 1.3 决策树 - python代码1.3.1 结果解读1.3.2 决策树可视化1.3.3 CV - 留一法 2 集成学习2.1 Boosting2.…

cin-getline缓存区

更多资源请关注纽扣编程微信公众号 cin.sync()清除缓存区 如果需要输入如下内容 3 This is C language. This is JAVA language. This is Python language. 写如下程序 #include<bits/stdc.h> using namespace std; string str[100]; int main(){int n;cin>&…

SQL练习题:2.5(2完结)

建表 # 学生表 create table t_student (stu_id varchar(10),stu_name varchar(10),stu_age datetime,stu_sex varchar(10) );# 课程表 create table t_t_course (c_id varchar(10),c_name varchar(10),c_teaid varchar(10) );# 教师表 create table t_t_teacher (tea…

开源大模型:AI 发展的未来引擎

人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的世界&#xff0c;而大模型作为 AI 发展的核心驱动力&#xff0c;其发展路径备受关注。在开源和闭源两条路径中&#xff0c;我更看好开源大模型&#xff0c;认为它将成为 AI 发展的未来引擎。 技术创新与协作…

4-主窗口

4-主窗口 1、简介2 菜单栏、工具栏、状态栏2.1 菜单栏2.2 QAction2.3 工具栏2.4 状态栏 3 混合方式UI设计 1、简介 QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏、多个工具栏、多个停靠控件、一个状态栏以及一个中心控件&#xff0c;是许多应用程序&…

Visual Studio 下的Qt工程无法打开 “xxx.ui“ 文件和LNK1104 无法打开文件“Qt5Cored.lib”错误

一、问题&#xff1a; VS下Qt环境准备好后&#xff0c;创建了Qt工程然后点击 Form Files 下的 “xxx.ui” 文件&#xff0c;在弹出 Qt 设计师 界面后闪退并显示如下错误&#xff1a; 二、解决 1、工具栏处依次点击&#xff1a;扩展 一> Qt VS Tools 一> options 弹出选…

网络工程师---第四十二天

1、基于子网的vlan划分配置步骤是什么&#xff1f; 2、基于端口的vlan划分配置步骤是什么&#xff1f; 3、基于MAC地址的vlan划分配置步骤是什么&#xff1f; 4、请简述无线局域网的组网方式有哪几种&#xff0c;区别是什么&#xff1f; 5、请简述堆叠、级联和集群作用和区别是…