【史上最全面esp32教程】激超声波模块测距篇

简介: 【史上最全面esp32教程】激超声波模块测距篇

前言

超声波测距常用于小车避障,当测距值为几时,他就会自动的转向,从而实现避障功能。


超声波测距的原理

  1. esp32 控制超声波测距发出超声波
  2. 遇到障碍物反弹超声波
  3. 计算接收超声波所用的时间
  4. 使用这个公式计算距离,单位为cm:Time* 0.034 / 2;


操作

连线说明

名称 pin脚 功能
GND GND
VCC VCC
Trig 22 发送超声波
echo 23 接收返回的超声波

使用方法

发送超声波引脚和接收超声波引脚初始化如下:

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT)

OUTPUT:发送

INPUT:接收

发出超声波:

先高后低

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

计算超声波回波的时间:

long duration = pulseIn(echoPin, HIGH);

利用公式进行计算:

long distance = duration * 0.034 / 2;

distance 就是我们的距离了。

测距代码如下:

const int trigPin = 22;
const int echoPin = 23;
void setup() {
  //设置超声波引脚为输入/输出
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(115200);
}
void loop() {
  //发出超声波脉冲
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  //计算超声波回波的时间
  long duration = pulseIn(echoPin, HIGH);
  //计算物体的距离
  long distance = duration * 0.034 / 2;
  //输出物体的距离
  Serial.println(distance);
  delay(700);
}

注意:如果不延时,会出现错误信息。

示例

当距离大于5时,灯不闪,当距离小于5时,常亮:

代码如下:

const int trigPin = 22;
const int echoPin = 23;
const int Led = 2;
void setup() {
  //设置超声波引脚为输入/输出
  pinMode(trigPin, OUTPUT);
  pinMode(Led, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(115200);
}
void loop() {
  //发出超声波脉冲
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  //计算超声波回波的时间
  long duration = pulseIn(echoPin, HIGH);
  //计算物体的距离
  long distance = duration * 0.034 / 2;
  if(distance >= 10)
  {
    digitalWrite(Led,LOW);
  }
  else if(distance < 10)
  {
    digitalWrite(Led,HIGH);
  }
  //输出物体的距离
  Serial.println(distance);
  delay(700);
}

总结

通过使用ESP32来控制超声波模块,我们可以实现测量物体距离的功能,从而可以用于安全报警系统、自动门等应用。

相关文章
|
传感器 Linux Python
一起玩转树莓派(19)——红外遥控控制实验
红外遥控是生活中非常常见的电子器具,电视机,空调,音响等电器都可以通过遥控器进行控制。本篇博客,我们尝试来通过红外发生器和红外信号接受器来进行红外控制实验,在树莓派上通过红外遥控的按键来处理LED灯的控制。
2027 0
|
6月前
|
传感器 数据挖掘
如何利用STM32F103实现太阳板的光线追踪
通过上述的硬件组装和软件编程,我们可以有效地实现一个基于STM32F103的太阳板光线追踪系统。此系统不仅可以提高太阳能板的能源效率,而且具有较低的成本和易于实现的优点,非常适合在个人项目或小型企业中应用。
46 1
|
传感器 Linux 开发工具
开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网imx6ull & 小熊派结合)
开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网imx6ull & 小熊派结合)
100 0
|
API 数据处理
2022年十月份电赛OpenMV巡线方案(2)---主控代码详细分析
2022年十月份电赛OpenMV巡线方案(2)---主控代码详细分析
191 0
|
IDE 开发工具 C语言
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
878 0
【史上最全面esp32教程】oled显示篇
【史上最全面esp32教程】oled显示篇
1405 0
|
传感器 数据采集 机器人
LabVIEW控制Arduino实现红外测距(进阶篇—6)
红外测距是一种非直接接触的测量方式,由于其结构简单、抗干扰性强、成本低等优点,在测量测绘上得到广泛的运用。
【史上最全面esp32教程】激光与食人鱼模块篇
【史上最全面esp32教程】激光与食人鱼模块篇
234 0
|
传感器
红外热成像仪测温传感器模块开发笔记
什么是红外成像伪彩编码 红外成像的最终目的是用图像来表现温度变化,并且可以通过颜色来区分出不同热量的物体轮廓和形状。那么,到底用什么颜色来表示什么温度呢?是否有什么标准规范呢?