搜索代码

ESP32 教程 27/55 - 使用超声波传感器测量距离 | SunFounder 的 ESP32 物联网学习套件

ESP32 教程 27/55 - 使用超声波传感器测量距离 | SunFounder 的 ESP32 物联网学习套件

在本教程中,我们将学习如何将超声波距离传感器与ESP32配合使用,以测量距离并在屏幕上显示结果。我们还将探讨如何在特定范围内检测到物体时激活蜂鸣器。本项目展示了ESP32微控制器的多功能性,它集成了Wi-Fi和蓝牙功能,使其适用于各种物联网应用。

超声波原理

在本指南中,您将找到硬件组件、接线说明和代码片段的解释,以帮助您成功实现该项目。为了更清晰,请参考视频(视频中00:00处)。

硬件说明

本项目的主要组件包括ESP32微控制器、超声波传感器(HC-SR04)和蜂鸣器。超声波传感器由两个主要部分组成:一个发射超声波波的发射器和一个接收反射波的接收器。通过测量波返回所需的时间,我们可以计算出到物体的距离。

ESP32作为中央控制器,处理来自超声波传感器的数据,并根据测量距离控制蜂鸣器。当检测到的距离小于设定阈值时,蜂鸣器将发声,表示物体过近。

数据手册详情

制造商 HC-SR04
零件编号 HC-SR04
逻辑/IO电压 5 V
电源电压 5 V
输出电流(每通道) 16 mA
峰值电流(每通道)
PWM频率指南
输入逻辑阈值
压降 / RDS(on) / 饱和
热限制
封装
备注 / 变体 测量范围:2 cm 至 400 cm

 

  • 确保为传感器提供正确的5 V电源。
  • 保持超声波波的路径畅通,以避免干扰。
  • 使用短导线以最小化信号延迟和噪声。
  • 确保引脚连接正确,以避免通信错误。
  • 在不同环境中测试传感器以检查准确性。

接线说明

ESP32-27_ultrasonic_wiring

要将超声波传感器连接到ESP32,请将传感器的VCC引脚连接到ESP32上的5V引脚。接下来,将传感器的GND引脚连接到ESP32上的一个接地(GND)引脚。传感器的触发引脚(Trig)应连接到ESP32上的GPIO 26,而回波引脚(Echo)应连接到GPIO 25。此设置允许ESP32向传感器发送信号并接收回波信号以计算距离。

ESP32-27_ultrasonic_schematic

对于蜂鸣器,将正极(长)引脚连接到ESP32上的GPIO 12,负极(短)引脚连接到GND。确保所有连接牢固,以防止操作期间出现松动接线。如果使用面包板,请正确对齐蜂鸣器连接以避免错误接线。请务必参考视频以确认接线(视频中05:12处)。

代码示例与讲解

代码初始化超声波传感器的引脚并设置串行通信。主函数readSensorData()负责发送触发信号并测量回波引脚的响应时间。

const int echoPin = 25;
const int trigPin = 26;

void setup() {
  Serial.begin(115200);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  Serial.println("Ultrasonic sensor:");  
}

代码将echoPintrigPin定义为连接到超声波传感器的引脚常量。在setup()函数中,我们初始化串行通信并相应设置引脚模式。

float readSensorData() {
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  unsigned long microsecond = pulseIn(echoPin, HIGH);
  float distance = microsecond / 29.00 / 2;
  return distance;
}

此片段展示了readSensorData()函数,它向触发引脚发送一个10微秒的脉冲。然后测量回波引脚接收信号返回所需的时间,计算距离,并返回该值。

最后,循环函数持续读取距离并将其打印到串行监视器。如果距离低于20 cm,蜂鸣器将被激活。

演示 / 预期效果

当您运行程序时,ESP32将在串行监视器上以厘米为单位显示测量距离。如果物体进入传感器20 cm范围内,蜂鸣器将发声。可以通过将物体放置在传感器前方不同距离来测试此行为。请注意极性反转,并确保按指定方式连接,以避免操作期间出现问题(视频中08:00处)。

视频时间戳

  • 00:00 开始
  • 1:46 超声波传感器介绍
  • 6:02 接线说明
  • 7:37 ESP32 Arduino代码说明
  • 11:33 在Arduino IDE中选择ESP32开发板和COM端口
  • 13:15 测量距离演示
  • 16:43 根据距离采取行动:蜂鸣器

图像

ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_schematic
ESP32-27_ultrasonic_schematic
ultrasonic_principle
ultrasonic_principle
827-ESP32 Tutorial 27/55- Arduino code for ultrasonic sensor
语言: C++
/*
 * // 为超声波传感器定义引脚
 */
const int echoPin = 25;
const int trigPin = 26;

 // 读取传感器数据的函数原型
float readSensorData();

void setup() {
 // 以115200波特率开始串行通信
  Serial.begin(115200);
 // 将echoPin设置为输入,将trigPin设置为输出。
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
 // 将传感器信息打印到串行监视器
  Serial.println("Ultrasonic sensor:");
}

void loop() {
 // 读取超声波传感器的距离
  float distance = readSensorData();
 // 将测量的距离打印到串行监视器上
  Serial.print(distance);
  Serial.println(" cm");
 // 读取之间的延迟
  delay(200);
}

 // 从超声波传感器读取数据的功能
float readSensorData() {
 // 在发送高信号之前触发低信号
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
 // 向 trigPin 发送一个10微秒的高电平信号
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
 // 返回低信号
  digitalWrite(trigPin, LOW);

 // 测量回声引脚上的高信号持续时间
  unsigned long microsecond = pulseIn(echoPin, HIGH);

 // 使用声速(每厘米29.00微秒)计算距离。
  float distance = microsecond / 29.00 / 2;

 // 返回计算出的距离
  return distance;
}

|||您可能需要的东西

文件📁

没有可用的文件。