ESP32入门九(超声波测距传感器)

一、超声波测距原理

超声波测距模块可提供非接触式距离感测功能;模块包括超声波发射器、接收器和控制电路。其工作原理为当接收到信号后,发射器发出音速的超声波信号,信号在受到物品阻挡时会返回并被接收器检测到,当接收器检测信号返回;通过计算信号发送的时间与接收到信号的时间差,配合音速的速度值,计算出传感器与阻挡物体之间的距离。

其计算公式为:

距离 = 传播速度 X 时间 / 2

超声波在空气中的速度是固定的:340米/秒

时间为声波发出到接收到的时间差

除于2是因为声波需要往返传播

例如:

如果超声波从发射到接收的时间差为2秒,那距离可以计算为

距离 = 340 * 2 / 2 = 340

可以得出,中间的距离为340米

测距传感器与普通的接近开关和光电传感器有所不同。相比于电感式或电容式接近开关,测距传感器具有更长的检测距离,能够实现更远距离的检测。而与光电传感器相比,测距传感器可以应用于更恶劣的环境中,不受目标物的颜色以及空气中灰尘、水雾等因素的影响。超声波的传输速度容易受天气影响,在不同的天气条件下,超声波传输速度不同且较慢。当汽车高速行驶时,使用超声波进行测距无法及时跟踪车距的实时变化,从而导致较大误差。此外,超声波的散射角较大,方向性较差,在测量较远距离目标时,回波信号会较弱,影响测量精度。被测物体的面积不可以过小且平面尽量要求平整,否则会影响测量效果。然而,在短距离低速测量中,超声波传感器具有显著优势

二、HCSR-04超声波测距模块说明

HCSR04模块有4个引脚,对应分别是:

1、VCC电源正极

2、TRIG触发控制信号输入

3、ECHO回声信号输出

4、GND电源负极

三、安装库

在之前的文章中,我们介绍过如何安装第三方库,以及使用Arduion IDE自带的库管理器来安装第三方库,在这里,我们介绍另一种方法来安装第三方库。

本章中,我们所使用的是一个名为HCSR04-ultrasonic-sensor-lib by gamegine的第三方库,下载地址:GitHub - gamegine/HCSR04-ultrasonic-sensor-lib: Arduino lib for HCSR04 ultrasonic sensor

我们可以在页面里下载该库源代码:

下载时,记录好下载到的源代码文件所在的目录

我们在Arduion IDE里选择 "项目=>加载库=>添加ZIP库 ",在文件选择框里找到下载到的库源代码,是ZIP格式的压缩包文件。

安装完成后,我们可以在 "项目=>加载库 "里的菜单里看到:

点击后,会自动插入需要的头文件:

#include <HCSR04.h>

四、HCSR04-ultrasonic-sensor-lib by gamegine库的说明

该库本身是一个针对Arduino 库 HCSR04 传感器,但在ESP32上也可以应用。

这里我们选择4号引脚为触发控制信号输入(TRIG),18号引脚为回声信号输出(ECHO):

#define TRIGPIN 4      //TRIG
#define ECHOPIN 18     //ECHO

我们还需要创建一个HCSR04对象:

HCSR04 hc(TRIGPIN, ECHOPIN); //创建HCSR04对象(参数:trig引脚 , echo引脚)

测距函数:dist()

函数:dist()
作用:获取距离数据
格式:float dist(int n)
参数:n     -引脚序号,需要同时连接多个传感时使用
返回:返回float类型的距离数据(单位:CM)

 五、硬件连接和完整代码

硬件连接

完整代码:

#include <HCSR04.h>
#define TRIGPIN 4      //TRIG
#define ECHOPIN 18     //ECHOHCSR04 hc(TRIGPIN, ECHOPIN); //创建HCSR04对象(参数:trig引脚 , echo引脚)void setup()
{Serial.begin(115200);
}void loop()
{float distance = hc.dist();    //获取距离数据Serial.print("当前距离:");Serial.println(distance);        //输出距离数据Serial.println("CM");delay(200);
}

六、测试结果

我们可以把一个足够尺寸和相对平整的物体从远到近或从近到远来测试超声波测试结果

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

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

相关文章

双侧电源系统距离保护MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 系统原始数据 双侧电源系统模型如图所示&#xff1a; 仿真模型搭建 将线路AB分成Line1和Line2&#xff0c;将线路BC分成Line3和Line4&#xff0c;用三相电压电流测量模块作为系统母线&#xff0c;根据系统已…

04 HAL库下使用定时器产生一个中断

目录 一、定时器的相关知识点 1.定时器的定义 2. 查看时钟配置 3. 定时器的分类 二、实验开始 1. 配置一个定时器 2.打开定时器的中断配置 引言 在本文的开头我想给大家分享一下单片机工作的两种工作模式轮询和中断&#xff08;异步&#xff09;&#xff0c; 中断也叫做…

雨课堂作业整理

第一次作业 1.下列序列是图序列的是&#xff08; &#xff09; A.1&#xff0c;2&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;4&#xff0c;5 B.1&#xff0c;1&#xff0c;2&#xff0c;2&#xff0c;4&#xff0c;6&#xff0c;6 C.0&#xff0c;0&#xff0c;2&am…

性能测试-jmeter:安装 / 基础使用

一、理解jmeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具&#xff0c;主要用于模拟大量用户并发访问目标服务器&#xff0c;以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行请…

PythonTSK Study for first day (paper read)

HTSK model Study AbstractIntroductionII TSK for high-dimentional datasetIII ResultsA DatesetB AlgorithmC性能评估 Abstract The TSK Fuzzy System with Gaussian membership functions can not address high dimentional datasets, if add softmax function to solve i…

使用Android Studio等idea工具开发flutter应用,必备的debug调试技能,非常好用

我们程序员不论开发什么软件&#xff0c;都需要一把锋利的调试工具&#xff0c;这是必不可少的&#xff0c;不然出现问题了&#xff0c;你都不知道问题是啥&#xff0c;出现在哪&#xff0c;就更别说怎么解决了。所以我这里就介绍一下android studio开发flutter必备的调试技能&…

【数据结构—堆排序、top k问题和时间复杂度】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、堆排序&#xff08;升序&#xff09; 1.1向上调整算法&#xff1a; 1.2向下调整算法&#xff1a; 1.3、堆排序的实现&#xff1a; 二、top k问题 2.1top k…

Python+Django+Mysql+SimpleUI搭建后端用户管理系统(非常详细,每一步都清晰,列举了里面所有使用的方法属性)

一、在Anaconda环境下创建虚拟环境 &#xff08;1&#xff09;打开Anaconda Prompt(install)&#xff0c;创建虚拟环境&#xff0c;如下图所示&#xff1a; 方法一&#xff1a;默认情况下虚拟环境创建在Anaconda安装目录下的envs文件夹中 conda create --name usermanage …

高频面试题:合并两个List并去重

欢迎关注微信公众号&#xff1a;互联网全栈架构 合并两个List中并去掉重复的元素&#xff0c;有好几种方法&#xff0c;我们来看看常见的三种&#xff1a; 一、使用HashSet HashSet是一个没有重复元素的集合&#xff0c;可以利用这个特性&#xff0c;把List中的元素逐一添加到H…

简单几步制作翻页电子画册

翻页电子画册是一种非常流行的电子书形式&#xff0c;它能够以生动、美观、有趣的方式展示您的内容。如果您想要制作自己的翻页电子画册&#xff0c;以下是一些简单的步骤&#xff0c;可以帮助您轻松上手。 首先&#xff0c;你需要一款在线制作电子杂志平台。比如FLBOOK&#x…

java8开发常用的日期操作,纯干货分享

首先介绍java8关于日期和时间比较常用的一些类&#xff1a; Java 8 推出了全新的日期时间API&#xff0c;在教程中我们将通过一些简单的实例来学习如何使用新API。 Java处理日期、日历和时间的方式一直为社区所诟病&#xff0c;将 java.util.Date设定为可变类型&#xff0c;以…

5G阅信助力互联网行业:XX出行-出票通知,案例分析

XX出行日常有大量业务通知短信下发&#xff0c;用户触达频次和用户打开率都比较高&#xff0c;但原短信无法带来附加营销增值&#xff0c;通过阅信增值服务消息将两者结合起来&#xff0c;可实现业务的多渠道引流&#xff0c;开拓了新的渠道和方式。 项目概述&#xff1a; 1. 项…