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,请将传感器的VCC引脚连接到ESP32上的5V引脚。接下来,将传感器的GND引脚连接到ESP32上的一个接地(GND)引脚。传感器的触发引脚(Trig)应连接到ESP32上的GPIO 26,而回波引脚(Echo)应连接到GPIO 25。此设置允许ESP32向传感器发送信号并接收回波信号以计算距离。
对于蜂鸣器,将正极(长)引脚连接到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:");
}
代码将echoPin和trigPin定义为连接到超声波传感器的引脚常量。在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 根据距离采取行动:蜂鸣器
/*
* // 为超声波传感器定义引脚
*/
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;
}
Common Course Links
Common Course Files
|||您可能需要的东西
-
易趣从eBay购买HC-SR04超声波传感器ebay.us
-
Banggood从Banggood购买HC-SR04超声波传感器banggood.com
资源与参考
-
文档ESP32 教程 27/55 - SunFounder 超声波距离传感器文档页面docs.sunfounder.com
-
外部Arduino官方网站上的HC-SR04超声波库playground.arduino.cc
文件📁
没有可用的文件。