【史上最全面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来控制超声波模块,我们可以实现测量物体距离的功能,从而可以用于安全报警系统、自动门等应用。

相关文章
|
8月前
技术心得:声之翼——超声波模块
技术心得:声之翼——超声波模块
27 0
|
传感器 Linux
Linux驱动基础(SR501人体感应模块)
Linux驱动基础(SR501人体感应模块)
154 0
|
IDE 开发工具 C语言
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
923 0
|
传感器 存储
手持VH501TC多功能混合传感器信号采集读数仪使用方法
电池仓位于设备背面下半部分, 仅当使用 5 号电池供电时需要操作电池仓,锂电池供电的设备无需操作电池仓。默认情况下,电池仓盖处于锁定状态无法直接打开,在需要安装或者更换电池时,应将水平拨动开关推至解锁侧,在电池安装完成后必须将开关推至锁定侧。注意:在安装电池时必须按照仓内+/-符号对应电池的正/负极,错误的安装极性会永久性损坏设备。
手持VH501TC多功能混合传感器信号采集读数仪使用方法
|
传感器 数据采集 机器人
LabVIEW控制Arduino实现红外测距(进阶篇—6)
红外测距是一种非直接接触的测量方式,由于其结构简单、抗干扰性强、成本低等优点,在测量测绘上得到广泛的运用。
|
传感器 机器人
LabVIEW控制Arduino实现超声波测距(进阶篇—5)
超声波测距是一种传统而实用的非接触测量方法,与激光、涡流和无线电测距方法相比,具有不受外界光及电磁场等因素影响的优点,在比较恶劣的环境中也具有一定的适应能力,且结构简单、成本低,因此在工业控制、建筑测量、机器人定位方面有广泛的应用。
|
安全 算法
测温仪器的原理知多少?
测温枪也叫测温仪,这个东西有可能对我们来说都比较陌生,它主要是应用红外测温技术提供生产生活中的温度测量,所以又被称为红外测温枪。这项技术在产品质量控制和监测、设备在线故障诊断、安全保护以及节约能源等发挥着重要作用,它以响应时间快、非接触、使用安全以及使用寿命长等优点,得到了广大消费者的青睐。简单的了解一下测温枪的优点以及它的工作原理吧。
测温仪器的原理知多少?
【史上最全面esp32教程】激光与食人鱼模块篇
【史上最全面esp32教程】激光与食人鱼模块篇
265 0
计算机无法与振弦采集模块通讯
观察振弦采集模块状态灯是否正常闪烁,若不正常则应基本断定是模块问题, 此时应尝试对模块进行出厂参数恢复。 在高速测量时,因模块“ 忙” 而无暇响应串口指令,也会造成通讯不正常,此时可尝试多次发送指令或恢复出厂参数。
 计算机无法与振弦采集模块通讯
|
传感器 存储 编解码
红外热成像仪模块工作流程和操作
MLX90640 的工作流程 (1) 上电,内部初始化(约 40ms) (2) 读取工作参数到控制和状态寄存器 (3) 开始以 2Hz 的速率测量实时数据并更新到 RAM,自动更新状态寄存器。
红外热成像仪模块工作流程和操作