一起玩儿物联网人工智能小车(ESP32)——25. 利用超声波传感器测量距离

news2024/9/21 0:28:01

摘要:本文介绍如何利用超声波传感器测量障碍物的距离

测量距离是智能小车经常要用到的功能,今天就来介绍一个最常用的测量距离的传感器——超声波传感器。

超声波传感器的测距原理是利用超声波发射器向某个方向发射超声波,与此同时,我们开始计时。当发射出去的超声波遇到障碍物时,它会立即被反射回来,当超声波接收器接收到反射波后我们停止计时。这时,接收器收到反射波与发射器发出超声波之间的时间就是超声波在空气中的飞行时间,在这段时间里,超声波从发射器飞到了障碍物,然后又从障碍物返回到了接收器。这样,根据空气中的声波速率为340米/秒,以及记录的时间t,就可以计算出发点和障碍物之间的距离s,即:s =340m/s * t/2。

下图就是最常用的超声波测距模块。

这种超声波测距模块的测量范围在2厘米~400厘米之间,测量的距离的精度可以达到3毫米。

超声波测距有以下几个特点:

  1. 超声波的频率越高,测量的精度也越高,但由于空气衰减的增大,检测距离会变越近。
  2. 超声波发射器输出功率越高、灵敏度越高,检测距离也越远。
  3. 通常超声波检测角度小的,测距范围会略远。
  4. 受被测物体表面状况、形状的影响大:例如一个刚性表面(例如钢板、水泥墙)会有很好的测量结果。而一根铁丝、或者在钢板表面铺满吸音绵、或者把钢板与探头法线的夹角是倾斜45度以上等等,可能会无法得到正确的测量结果。
  5. 多个工作频率相近的超声波测距模块同时工作,会互相影响,有可能无法区分出是哪个超声波发射器发出的超声波。

下面就来看一下超声测距模块的电器参数。

电气参数

HC-SR04 超声波模块

工作电压

DC 5V

工作电流

15mA

工作频率

40kHz

最远射程

4m

最近射程

2cm

测量角度

15度

输入触发信号

10uS的TTL脉冲

输出回响信号

输出TTL电平信号,与射程成比例

规格尺寸

45*20*15mm

超声波测距模块共有4个引脚,这些引脚的定义说明如下:

引脚

说明

VCC

供电引脚,5V直流供电。

Trig

触发控制信号输入引脚。

Echo

回响信号输出引脚。

GND

供电GND引脚。

下面来了解一下超声波测距模块的工作过程。

(1)超声波测距模块是IO口Trig触发测距,需要外部控制设备提供一个最少10us的高电平信号。

(2)超声波模块的超声波发射器自动发送8个40khz的超声波方波,超声波接收器自动检测是否有信号返回。

(3)如果超声波接收器收到信号返回,则通过IO口Echo输出一个高电平,该高电平持续的时间就是超声波从发射到返回的时间。因此,只要获得Echo引脚输出的高电平时间,就可以计算出距离障碍物的距离了。

具体的工作时序图如下图所示。

在以上时序图表明,只需要提供一个10uS以上脉冲触发信号,该模块内部在收到信号后将发出8个40kHz脉冲并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:uS/58=厘米或者uS/148=英寸;或是:距离= 高电平时间*声速(340M/S)/2。

在使用超声波测距模块的时候,还应该注意一下几个问题:

  1. 建议测量周期为60ms以上,以防止发射信号对回响信号的影响。
  2. 此模块不宜带电连接,若要带电连接,则先让模块的GND端先连接,否则会影响模块的正常工作。
  3. 超声波模块测距时,被测物体的面积不少于0.5平方米且平面尽量要求平整,否则可能影响测量的结果。

接下来,就把超声波测距模块与ESP32开发板用杜邦线连接起来了。一共需要4根导线,需要将超声波测距模块的VCC与开发板的5V相连接,Trig引脚连接到开发板的P18引脚,Echo引脚连接到开发板的P19引脚,GND与开发板的GND相连接就可以了。如下图所示:

接下来,就来进行软件的开发工作了。还是打开Mixly,选择“Arduino ESP32”。在这里实现的功能,就是把超声波测距模块测量的距离,通过串口打印出来。超声波测距模块功能“传感器”功能模块里面,只需要设置一下Trig和Echo使用的GPIO引脚号码就可以了。实现后的程序如下图所示:

接下来上传运行一下这个程序,可以看到,在下面的串口中,会陆续的输出一行行的数字,表示超声波前面物体距离超声波传感器的距离。如下图所示:

需要说明的是,Mixly中的超声波测距功能输出的测量距离的单位是厘米。下面来看一下Mixly生成的源代码。

float checkdistance_18_19() {

  digitalWrite(18, LOW);      //将18引脚设置为低电平

  delayMicroseconds(2);      //保持2微秒

  digitalWrite(18, HIGH);      //将19引脚输出高电平

  delayMicroseconds(10);     //保持10微秒

  digitalWrite(18, LOW);      //将18引脚恢复低电平

  float distance = pulseIn(19, HIGH) / 58.00;      //返回19引脚高电平的时间,并计算结果

  delay(10);

  return distance;

}

void setup(){

  Serial.begin(115200);

  pinMode(18, OUTPUT);

  pinMode(19, INPUT);

}

void loop(){

  Serial.println(checkdistance_18_19());

  delay(1000);

}

在源代码中可以看到,setup()函数进行了初始化的工作,将引脚18初始化为输出工作模式,将19引脚初始化为输入工作模式。

整个代码的核心是生成的float checkdistance_18_19()函数,该函数的返回值为测量的距离(单位是厘米)。在这个函数中,按照超声波模块的工作流程,完成了一次测量工作。分为以下几个步骤:

  1. 将18引脚设置为低电平,并延迟2微秒,准备发出测量信号
  2. 将18引脚设置为高电平,并保持10微秒,通知超声波模块,开始测量
  3. 用pulseIn()函数返回19引脚高电平的时间,返回高电平时间的单位是微秒
  4. 利用返回的时间计算测量的结果
  5. 返回测量的结果

在这个测量里面的计算公式前边已经给出了。计算结果的单位是厘米。

对于使用MicroPython的开发者来说,超声波测距仪的使用方法与C语言是完全相同的,不同的是在MicroPython中,如果想连续多次测量,需要自己编写一个循环来实现。具体的实现方法如下所示:

Mixly生成的Python代码如下所示:

import machine

import sonar

import time

while True:

    print(sonar.Sonar(32,33).checkdist())

    time.sleep_ms(1000)

在这里是利用了Sonar对象的checkdist()方法,返回的距离单位也是厘米。

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

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

相关文章

Health System Pro - Plug Play Solution

Health System为您提供了可重复使用的健康组件、健康条和碰撞块组件,可以轻松定制和扩展,以满足任何项目的需求。通过使用Health System,您可以节省时间和精力,避免为每个项目或游戏实体重写健康逻辑,从而带来更高效的…

计算机网络(9):无线网络

无线局域网 WLAN 无线局域网常简写为 WLAN (Wireless Local Area Network)。 无线局域网的组成 无线局域网可分为两大类。第一类是有固定基础设施的,第二类是无固定基础设施的。所谓“固定基础设施”是指预先建立起来的、能够覆盖一定地理范围的一批固定基站。 …

Python----matplotlib库

目录 plt库的字体: plt的操作绘图函数: plt.figure(figsizeNone, facecolorNone): plt.subplot(nrows, ncols, plot_number): plt.axes(rect): plt.subplots_adjust(): plt的读取和显示相关函数: plt库的基础图…

Day22 二叉树part08 235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

二叉树part08 235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点 235. 二叉搜索树的最近公共祖先 方法一:递归法(利用二叉搜索树性质) class Solution { public:TreeNode* lowestCommonAncestor(TreeN…

74HC595驱动数码管程序

数码管的驱动分静态扫描和动态扫描两种,使用最多的是动态扫描,优点是使用较少的MCU的IO口就能驱动较多位数的数码管。数码管动态扫描驱动电路很多,其中最常见的是74HC164驱动数码管,这种电路一般用三极管作位选信号,用…

管理组件状态

概述 在应用中,界面通常都是动态的。如图1所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 图1 展开/收起目标…

50、实战 - 利用 conv + bn + relu + add 写一个残差结构

上一节介绍了残差结构,还不清楚的同学可以返回上一节继续阅读。 到了这里,一个残差结构需要的算法基本都介绍完了,至少在 Resnet 这种神经网络中的残差结构是这样的。 本节我们做一个实战,基于之前几节中手写的 conv / bn 算法&…

python封装接口自动化测试套件 !

在Python中,我们可以使用requests库来实现接口自动化测试,并使用unittest或pytest等测试框架来组织和运行测试套件。以下是一个基本的接口自动化测试套件封装示例: 首先,我们需要安装所需的库: pip install requests …

ssm基于web的志愿者管理系统的设计与实现+vue论文

摘 要 使用旧方法对志愿者管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在志愿者管理系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的志愿者…

大数据毕业设计:旅游景点数据爬虫大屏实时监控系统✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

山海鲸可视化软件的优势:数据整合、可视化与个性化定制

随着科技的快速发展,企业数字化转型已成为必然趋势。而对于一些本身没有开发优势或非技术型企业,数字化产品的选择就成为重中之重。作为山海鲸可视化软件的开发者,我们深知这一点,对于企业来说,能选择一个产品一定要有…

电脑软件:CoolUtils Total Excel Converter:解决Excel格式转换难题,提升办公效率

大家在日常办公当中经常会遇到需要把Excel转换为其他文档格式的场景。今天小编给大家介绍一款强大的文件转换工具——Total Excel Converter,有了它,再也不会因为Excel文档格式转换的问题而烦恼了。 一、软件简介 CoolUtils Total Excel Converter官方版…

钡铼工控机BL302+PLC,助力酿酒业转型升级

啤酒是人类非常古老的酒精饮料,是水和茶之后世界上消耗量排名第三的饮料。 啤酒在生产过程中主要有制造麦芽、粉碎原料、糖化、发酵、贮酒後熟、过滤、灌装包装等工序流程。需要用到风选机、筛分机、糖化锅、发酵设备、过滤机、灌装机、包装机等食品机械设备。这些食…

Apache HTTPD 多后缀解析漏洞详解

Apache HTTPD 多后缀解析漏洞 1.查看python版本 这里python版本很重要,因为版本过低可能会导致后面的结果运行不成功 这里我就遇到了因为版本过低而执行不了docker-compose up -d的情况 查看python版本 cd /usr/bin ls -al python* 当版本过低时安装高版本的 …

云计算:OpenStack 分布式架构管理FLAT网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.控制节点创建网络 3.控制节点创建规格 4.控制节点新增安全组入口规则 5.控制节点创建实例 二、问题 1.FLAT网络底层如何实现 2.无法SSH 云主机实例 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部…

分布式系统架构设计之分布式事务的解决方案

针对以上分布式事务的挑战,现在业界也是有着对应的解决方案的,至于选择哪一种或者组合策略,需要架构师根据自己的实际系统和业务场景来进行决策。 1、两段式提交(2PC) 分布式事务的两段式提交(2PC&#x…

机器学习(四) -- 模型评估(1)

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理(1-3) 机器学习(三) -- 特征工程(1-2) 机器学习(四) -- 模型评估…

阿里云PolarDB数据库不同配置租用价格表

阿里云数据库PolarDB租用价格表,云数据库PolarDB MySQL版2核4GB(通用)、2个节点、60 GB存储空间55元5天,云数据库 PolarDB 分布式版标准版2核16G(通用)57.6元3天,阿里云百科aliyunbaike.com分享…

全国计算机等级考试| 二级Python | 真题及解析(12)

一、选择题 1.在编写python程序时缩进的作用是()。 A.让程序更美观 B.只在for循环中使用 C.只在if语句中使用 D.用来界定代码块 2.已知列表list1=[8,22,34,9,…

【番外】【Airsim in Windows ROS in WSL2-Ubuntu20.04】环境配置大全

【番外】【Airsim in Windows &ROS in WSL2-Ubuntu20.04】环境配置大全 【前言(可省略不看)】1.在windows上面部署好UE4AirSim联合仿真环境2.在windows上面部署wsl2系统以及在wsl2上面部署ubuntu系统3.安装好ubuntu系统之后,目前只能在命…