读取多超声波传感器

2023-05-16

读取多超声波传感器

  • 1 背景
  • 2 使用教程
    • 2.1 接线说明
    • 2.2 上传协议
  • 3 ROS节点使用
    • 3.1 下载与配置
    • 3.3 常见问题-无串口权限
  • 4 更新程序
  • 参考资料

该模块是一个开源模块,并提供了配套的ROS节点,接收串口上传的数据并发布到指定的Topic上面。目前支持 HC-SR04 、HY-SRF05和US-015这几个型号超声波模块。主要功能如下:

  • 1: 同时读取12个超声波模块数据,通过串口打包上传,频率为20Hz。
  • 2: 提供配套ROS节点程序,可将测量数据发布到ROS Topic上。
  • 3: 开源ROS节点程序[3],并提供单片机端hex文件下载,使用其他单片机开发板也可以轻易使用。

1 背景

在制作智能小车、自主导航小车的过程中我们通常会使用超声波来弥补小车的测量盲区,或者直接设计基于超声波的避障小车。这其中都涉及到多个超声波模块的读取。一方面我们可以选取市面上已有的串行超声波模块通过IIC或者485总线实现多个超声波级联。但是如下面表格1所示,市面上级联的超声波模块最便宜的也需要100元一个,这样12个成本约为1200元。如果使用其他模块则更贵。另一方面超声波在读取的时候需要频繁调用定时器中断函数测量回波电平的宽度实现距离的测量。而这个过程会占用大量的cpu资源,因此我们将这部分功能独立出来为一个模块,单独使用一个单片机去读取超声波模块的数据并通过串口转发出去。

我们通自制的单片机模块,读取12个普通IO触发的超声波模块可以将成本控制在200以下,(42(HC-SR04超声波)+150(板子))是目前市面上最为经济的方案。

2 使用教程

2.1 接线说明

如下图所示,使用模块时需连接超声波模块

  • P1-P12 为超声波连接1-12通道
  • 电源输入电压为直流5-12V DC-DC圆孔2.5mm
  • 绿色灯为电源指示灯
  • 红色灯闪烁频率大约为20Hz 表示正常测量过程

在这里插入图片描述

SWD下载接口线序如下图所示
在这里插入图片描述

超声波接线说明:目前支持 HC-SR04 超声波模块
在这里插入图片描述
HC-SR04模块接线如下图所示:
- 红色——VCC
- 黑色——GND
- 黄色——Trig
- 绿色——Echo

在这里插入图片描述
板子安装孔位置和外形尺寸如下:
在这里插入图片描述

2.2 上传协议

数据格式为: 帧头+数据长度+命令类型+数据+校验+帧尾。数据上传频率为20Hz,波特率使用115200。

在这里插入图片描述

  • 帧头:固定为两个字节: 0xAE, 0xEE
  • 数据长度:为所有字节的和(包含了帧头和帧尾)
  • 命令类型:固定为: 0xA1
  • 数据位:包含12个通道的超声波测量值,每个通道占用2个字节,共计24字节,采用高位在前方式(大端数据模式)发送,测量数据的单位为mm。 即为:[CH1_HSB CH1_LSB … CH12_HSB CH12_LSB]
  • 校验位:所有数据位的加和取低八位(包括帧头和帧尾)
  • 帧尾:固定为两个字节 0xEF,0xFE

3 ROS节点使用

3.1 下载与配置

1 安装依赖项

sudo apt-get install ros-melodic-rosserial
cd catkin_ws/src
git clone https://github.com/RuPingCen/ultrasonic-ros.git

2.编译代码

cd ..
catkin_make

3 启动ROS节点

roslaunch ultrasonic_ros ultrasonic_ros.launch

启动节点以后可以看到终端打印输出的数据
在这里插入图片描述
4 使用 echo 命令打印查看超声波的数据

rostopic echo /ultrasonic/data

在这里插入图片描述
5 使用 hz 命令查看话题发布的频率

rostopic hz /ultrasonic/data

在这里插入图片描述

3.3 常见问题-无串口权限

启动节点时候提示没有串口设备或者没有启动权限,这时候需要修改串口权限。
step1: 检查是否识别到USB转串口驱动
在这里插入图片描述
查看设备的ID号 ls /dev/ttyUSB*
在这里插入图片描述
这里我们可以通过一个简单的方式来修改串口权限

sudo chmod 766 /dev/ttyUSB0

上述的方式每次拔插串口以后都需要执行修改权限的命令比较麻烦,可以使用我们的脚本文件把串口权限写入rule文件中。
step2: 用记事本打开“ultrasonic-ros/scripts/ultrasonic.rules” 目录下的文件,会看到如下内容

cd ultrasonic-ros/scripts
gedit ultrasonic.rules

在这里插入图片描述
step3: 这里的1a86和7523 就是上面图中我设备的ID号,这里修改成为你自己的ID号以后,把文件拷贝到/etc/udev/rules.d目录下就可以使用 /dev/ultrasonic 替代 /dev/ttyUSB0 来访问模块了

sudo cp ultrasonic.rules /etc/udev/rules.d/

4 更新程序

为了使得没有购买这个板子的小伙伴使用我们的程序,我们提供了Hex文件下载。通过STLink进行烧写程序,对照我们提供的原理图接线也可以实现多个超声波的读取(需要一定的动手能力)。板载芯片为STM32F103C8T6。

SWD下载接口线序如下图所示
在这里插入图片描述

从ST官方的下载烧写软件:STM32 ST-LINK utility 4.5.0 安装时候一直下一步默认即可,安装完成以后打开软件,使用STLink连接到STM32板子。

接下来点击这个插头一样的东西(如果没有识别到就拔插一下STLink下载器)
在这里插入图片描述

成功以后就可以看到芯片的信息

在这里插入图片描述

接下来选中github网页中目录 ultrasonic-ros/reference/hex目录下的hex文件 ultrasonic_V1.0.0.hex

在这里插入图片描述

成功打开以后这两个地方会有信息提示成功打开文件

在这里插入图片描述

接下来点击烧写程序

在这里插入图片描述

程序下载完成以后扳子上的红色LED开始闪烁表示程序下载成功了

参考资料

[1] https://github.com/RuPingCen/ultrasonic-ros/tree/master/reference/hex
[2] https://www.st.com/en/development-tools/stsw-link004.html
[3] https://github.com/RuPingCen/ultrasonic-ros

欢迎大家点赞在评论区交流讨论(cenruping@vip.qq.com) O(∩_∩)O

或者加群交流(1149897304)
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取多超声波传感器 的相关文章

  • 什么是真正的程序员?

    什么是真正的程序员 这篇文章的原文来自 xff1a A Little Printf Story 作者仿照 小王子 中的情节 xff0c 通过小printf遇见的不同类型的程序员 xff0c 最后悟出什么才是真正的程序员 xff01 第一次翻
  • gpio引脚介绍 树莓派3b_树莓派介绍

    树莓派介绍 陈拓 chentuo 64 ms xab ac cn 2018 05 16 2018 05 16 1 什么是树莓派 xff08 Raspberry Pi xff09 树莓派是由树莓派基金会研发的一种只有信用卡大小的单板机电脑 x
  • 解析kubernetes架构

    一 简介 xff1a kubernetes是一个开源的容器管理工具 xff0c 是基于GO语言开实现的 xff0c 轻量级和便携式的应用 xff0c 可以把kubernetes cluster在linux主机上部署 管理和扩容docker容
  • STM32串口/RS232/RS485

    1 串口引脚 xff0c 如果是异步通讯将UART CLK共地即可 xff0c 如果同步需要时钟 a UART RX 数据接收引脚 b UART TX 数据发送引脚 c UART CLK 时钟引脚 2 UART描述 为全双工 xff0c 异
  • 又是一年年终总结

    起 这篇年终总结草稿是在12 03起的 xff0c 那是突然之间感觉到今年不大平常 xff0c 可以考虑写个年终总结来记录一下 xff0c 但是谁能料到今年真的是太不平常了 xff0c 到了12月中 xff0c 公司就解散了 xff0c 所
  • 开源自主导航小车MickX4(七)cartographer 室外3D建图

    开源自主导航小车MickX4 xff08 七 xff09 cartographer 室外3D建图 1 cartographer 3D建图demo1 1 cartographer 安装1 2 3D数据集建图1 3 3D定位 2 小车上的3D建
  • FreeRTOS+Trace(04) Xilinx Microblaze平台使用FreeRTOS+Trace

    本章节以 Xilinx Microblaze 平台为例 介绍如何在该目标平台上使用 FreeRTOS Trace 的快照记录功能 所使用的 Xilinx SDK 版本为 2018 2 并在 SDk 中已经创建好了一个目标平台为 Microb
  • Git子模块相关

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 添加子模块 如果项目分的模块比较多 xff0c 而且对每个模块需要独立管理的话 xff0c 子模块就派上用场了 每一个子模块都是一个独立的git仓库 xff0c 有点类似于
  • 更新k8s镜像版本的三种方式

    一 知识准备 更新镜像版本是在k8s日常使用中非常常见的一种操作 xff0c 本文主要介绍更新介绍的三种方法 二 环境准备 组件版本OSUbuntu 18 04 1 LTSdocker18 06 0 ce 三 准备镜像 首先准备2个不同版本
  • LTE中的各种ID含义

    原文链接 xff1a http www hropt com ask q 7128 html ECI 28 Bits 61 eNB ID 20 Bits 43 Cell ID 8 Bits 换成16进制就是ECI共7位 xff0c eNB I
  • 西门子Step7找不到有效授权的解决方法

    1 停止automation license manager service服务 2 删除授权文件 检查你的授权文件夹AX NF ZZ是放在哪个盘 xff0c C盘还是D盘 xff0c 在工具 文件夹选项 查看 选上显示所有文件和文件夹 x
  • AUGULAR安装使用

    先下载并安装NODE js xff0c 里面包含安装完成后已包含NPM NPM应该是augular一个管理工具 https www angular cn docs ts latest guide setup html develop loc
  • 成功不是依靠机会 ---- 参加移动开发者大会大会有感

    这次有幸参加了CSDN和创新工厂主办的移动开发者大会 xff0c 感觉良多 第一印象是 xff1a 这真的是一次技术的大会 我之前参加过很多大会 我特别说的是微软的技术大会 xff0c 已经感受不到什么技术的味道了 xff0c 或者说是这种
  • 基于机器学习的web异常检测

    基于机器学习的web异常检测 Web防火墙是信息安全的第一道防线 随着网络技术的快速更新 xff0c 新的黑客技术也层出不穷 xff0c 为传统规则防火墙带来了挑战 传统web入侵检测技术通过维护规则集对入侵访问进行拦截 一方面 xff0c
  • rosserial_java_ros系统下通过pyserial模块实现串口通讯(Python)

    经过几天的摸索终于实现了 xff1a 在ros系统下 xff0c 订阅Twist cmd vel 消息 xff0c 经过USB转串口通信 xff0c 实现了通过灯带实时反映小车 差速 运行状态的功能 通信部分主要依赖pyserial模块的功
  • 禁止显示Apache目录列表-Indexes FollowSymLinks

    禁止显示Apache目录列表 Indexes FollowSymLinks 如何修改目录的配置以禁止显示 Apache 目录列表 缺省情况下如果你在浏览器输入地址 xff1a http localhost 8080 如果你的文件根目录里有
  • 一个老兵的linux学习和面试经验分享

    特别说明 xff1a 本文为约9个月前老男孩linux培训内部师兄给师弟的经验分享 xff0c 经过该同学同意 xff0c 特此分享给所有博友 学习和面试经验分享 大家好 xff0c 非常高兴能在这里给大家分享学习和面试的经验 xff0c
  • 开源自主导航小车MickX4(八)LeGo-LOAM 室外3D建图

    开源自主导航小车MickX4 xff08 八 xff09 LeGo LOAM 室外3D建图 1 安装 LeGO LOAM1 1安装依赖项 2 运行 LeGO LOAM2 1 运行论文demo2 2 修改配置文件2 3 运行自己的bag包2
  • 微信支付开发中遇到的两个神坑

    微信支付本身是提供了三大Web开发语言的SDK下载的 xff0c 按理说应该很Easy怎么会有坑呢 xff1f 其实坑大多出在文档上 xff0c 文档不完善 xff0c 很多东西都得你去摔一跤才明白 xff0c 事先绝不告诉你 xff0c

随机推荐

  • 实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】

    转自 xff1a http www hangge com blog cache detail 1461 html 一 MADVR介绍 MADVR 是一款超强的视频插件 xff0c 其配合高清播放软件 xff0c 可以做到目前 PC 上播放高
  • 自动化运维为什么是必须的?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 运维团队负责最大限度提高效率 降低成本 xff0c 这也意味着他们往往承受着巨大的压力 xff0c 需要解决在不增加员工的情况下 xff0c 最大限度产出价值的问题 达成这
  • 如何理解事件溯源

    在近期举行的PHPDublin见面会上 xff0c 来自DynamicRes的架构师Barry Sullivan被问到 什么是事件溯源 xff0c 作为对这个问题的回答 xff0c 他在博客上写下了这篇文章 xff0c 详细解释了什么是事件
  • C语言 · 删除数组中的0元素

    算法提高 6 9删除数组中的0元素 时间限制 xff1a 1 0s 内存限制 xff1a 512 0MB 编写函数CompactIntegers xff0c 删除数组中所有值为0的元素 xff0c 其后元素向数组首端移动 注意 xff0c
  • 解决com.intellij.openapi.project.IndexNotReadyException: Please change caller according to com.intelli...

    File gt Invalidate Cache and Restart
  • PyShark入门(2):FileCapture和LiveCapture模块

    原文地址 xff1a http zodiacg net 2016 07 in 本系列文章译自thePacketGeek的系列文章 原创翻译 xff0c 转载请注明出处 PyShark中进行数据包分析的两个典型方法是使用 FileCaptur
  • 使用ctdb+samba+glusterfs搭建NAS集群系统

    1概述 本文介绍使用开源软件ctdb 43 samba 43 gluster搭建NAS集群系统 1 1 使用的开源软件介绍 1 glusterfs glusterfs是一个开源的分布式文件系统 xff0c 只适用于大文件存储 xff0c 存
  • react中优雅使用svg矢量图

    icon图标可以有很多形式 比如说CSS Sprite 引用字体图标 纯css 简单的icon 等等 优缺点这里不在赘述 xff0c 自行google之 下面就进入正题说说今天的主角svg 1 svg的发展历史 2001年9月4日 xff0
  • 使用自制相机运行 VINS-Mono

    使用自制相机运行VINS Mono 1 相机与IMU标定2 自制相机测试3 运行效果参考资料 1 相机与IMU标定 VINSmono的安装这里就省略了 xff0c 可以参考作者的github网页 2 我所使用的是ZED相机和Xsens IM
  • 标准正态分布变量的累积概率分布函数

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 最近有个期权项目 xff0c 计算理论价时需要使用标准正态分布变量的累积概率分布函数 xff0c excel中可以通过normsdist函数得到该结果 xff0c 但是项目
  • spring boot 中 @ConditionalOnMissingBean和@ConditionalOnBean注解注意事项

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 关于使用 64 Bean注解注入bean导致ConditionOnMissBean和 ConditionOnBean 注解有时候会失效的问题 文档上提示 xff0c 需要注
  • vscode左侧文件不同颜色标识含义

    代码里的左侧颜色标识 红色 xff0c 未加入版本控制 刚clone到本地 绿色 xff0c 已经加入版本控制暂未提交 新增部分 蓝色 xff0c 加入版本控制 xff0c 已提交 xff0c 有改动 xff1b 修改部分 白色 xff0c
  • 读取本地文件转化成MultipartFile

    介绍 现在有个上传文件功能 xff0c 需要将文件上传到oss上 xff0c 但是文件有点多 xff0c 于是使用接口进行上传 但是需要上传文件转换为MultipartFile类型文件进行上传 主要代码 添加pom文件 lt depende
  • 桌面上嵌入窗口(桌面日历)原理探索

    摘要 今天在QQ群里有人问怎样实现将自己的窗口嵌入桌面 xff0c 让它和桌面融为一体 xff0c 就像很多桌面日历软件那样 阅读全文 Richard Wei 2012 05 03 22 07 发表评论 转载于 https www cnbl
  • Git中分支merge和rebase的适用场景及区别

    几乎所有的版本控制工具都有branch功能 xff0c branch主要用于以下几个场景 xff1a 1 xff0c 控制产品OEM 基本上做产品 xff0c 不同的客户都会提出多种不同特性需求 xff0c 最简单的例子就是LOGO和标题完
  • sass安装与教程

    首先下载ruby http dlsw baidu com sw search sp soft ff 22711 rubyinstaller V2 2 2 95 setup 1439890355 exe 安装时注意勾选一下选项 安装完ruby
  • 集成学习原理小结

    集成学习 ensemble learning 可以说是现在非常火爆的机器学习方法了 它本身不是一个单独的机器学习算法 xff0c 而是通过构建并结合多个机器学习器来完成学习任务 也就是我们常说的 博采众长 集成学习可以用于分类问题集成 xf
  • 这款APP明确告诉你,无人机在什么地方可以飞

    美国联邦航空管理局 xff08 FAA xff09 为无人机管制推出了一个新的应用 B4UFLY xff0c 用来向用户显示无人机飞行的合法范围 关于如何有效的对无人机飞行进行管制 xff0c 已经是老生常谈的问题了 xff0c 除了制定相
  • 什么是委托?为什么要使用委托?什么是事件?

    1 什么是委托 xff1f 首先声明一个委托 xff1a public delegate string IsLengthFive string s 下面写几个方法 xff1a public string DoWork string a pu
  • 读取多超声波传感器

    读取多超声波传感器 1 背景2 使用教程2 1 接线说明2 2 上传协议 3 ROS节点使用3 1 下载与配置3 3 常见问题 无串口权限 4 更新程序参考资料 该模块是一个开源模块 xff0c 并提供了配套的ROS节点 xff0c 接收串