在本篇博客中,我们将详细介绍如何使用ESP32微控制器与HC-SR04超声波传感器进行距离测量。我们将从硬件连接开始,逐步完成代码编写,并为每一行代码提供详细的注释。
1. 硬件准备
所需材料
- ESP32 开发板
- HC-SR04 超声波传感器
- 面包板
- 连接线
硬件连接
将HC-SR04超声波传感器与ESP32开发板按照以下方式连接:
- VCC -> 3.3V
- GND -> GND
- Trig -> GPIO 5
- Echo -> GPIO 18
2. 软件准备
环境搭建
确保你已经安装了Arduino IDE,并且已经配置好了ESP32的开发环境。如果没有,可以参考 ESP32 Arduino Core 安装指南。
3. 代码实现
下面是完整的代码实现,每一行代码都附有详细的注释:
// 引入必要的库
#include <Arduino.h>
// 定义HC-SR04的Trig和Echo引脚
#define TRIG_PIN 5
#define ECHO_PIN 18
// 定义声速(cm/us)
#define SOUND_SPEED 0.034
// 定义测量距离的最大和最小值(单位:厘米)
#define MAX_DISTANCE 400
#define MIN_DISTANCE 2
// 初始化函数
void setup() {
// 初始化串口通信,波特率为115200
Serial.begin(115200);
// 配置Trig和Echo引脚
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
// 主循环函数
void loop() {
// 1. 发送10微秒的高电平信号到Trig引脚,触发超声波传感器
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// 2. 读取Echo引脚的脉冲宽度,单位是微秒
long duration = pulseIn(ECHO_PIN, HIGH);
// 3. 计算距离,单位是厘米
float distance = duration * SOUND_SPEED / 2;
// 4. 检查距离是否在有效范围内
if (distance >= MAX_DISTANCE || distance <= MIN_DISTANCE) {
Serial.println("距离超出测量范围");
} else {
// 5. 输出测量距离到串口监视器
Serial.print("距离: ");
Serial.print(distance);
Serial.println(" cm");
}