ESP32-S3 控制 超声波测距
ESP32-S3 控制 HC-SR04 超声波测距实验
超声波测距模块 HC-SR04 广泛应用于机器人避障、智能门禁以及液位检测等场景。
本文介绍如何用 ESP32-S3 读取 HC-SR04 测距数据,并通过串口输出测量结果。
一、实验名称
超声波测距实验
二、接线说明
| HC-SR04模块 | ESP32-S3开发板 |
|---|---|
| VCC | 5V |
| GND | GND |
| Trig | 4 |
| Echo | 5 |
注意事项:
- HC-SR04 需要 5V 电源供电,ESP32 IO 仅输出 3.3V,因此 Trig 端可以直接接 ESP32,Echo 输出如果过高电压,可加分压电阻保护。
- 安装超声波库:HCSR04-master.zip,方法:项目 → 导入库 → 添加 .ZIP 库。
三、实验现象
程序下载成功后,打开串口监视器,间隔 500ms 输出 HC-SR04 测量的距离,单位为厘米(CM)。移动测距物体时,距离值会实时变化。
四、完整代码示例
#include "public.h"
#include <afstandssensor.h> // HC-SR04 库
// 定义引脚
#define trig_pin 4
#define echo_pin 5
// 初始化超声波传感器对象
AfstandsSensor afstandssensor(trig_pin, echo_pin);
void setup() {
Serial.begin(115200); // 初始化串口
}
void loop() {
// 获取测量距离并打印
Serial.printf("测量距离:%.2fCM\r\n", afstandssensor.afstandCM());
delay(500); // 每 500ms 测量一次
}
五、代码讲解
- 引脚定义
#define trig_pin 4
#define echo_pin 5
- Trig:触发超声波信号输出的引脚。
- Echo:接收返回信号的引脚。
- 创建对象
AfstandsSensor afstandssensor(trig_pin, echo_pin);
使用库封装,直接传入 Trig 和 Echo 引脚即可创建传感器对象。
- 测量距离
afstandssensor.afstandCM()
返回浮点数类型的距离值,单位为厘米。
-
串口输出
使用Serial.printf格式化输出距离,便于在串口监视器查看。 -
延时
delay(500)控制测量频率为每 500ms 一次,避免串口输出过快。
六、实验效果
- 打开串口监视器,选择波特率 115200。
- 屏幕显示类似以下内容:
测量距离:23.45CM
测量距离:23.50CM
测量距离:23.60CM
- 移动物体,测距数值会实时变化,实现动态测距。
七、进阶扩展
-
OLED 显示
结合 OLED 液晶屏,将实时测距数据显示在屏幕上。 -
避障控制
结合电机模块,实现机器人遇障停走或自动避障。 -
报警系统
设定距离阈值,距离过近时触发蜂鸣器报警。
八、总结
通过本实验,学习了:
- HC-SR04 超声波模块工作原理
- ESP32-S3 GPIO 控制超声波模块
- 使用库简化测距操作
- 串口输出测距结果
本实验为 智能避障、液位监测及物体检测 等物联网应用打下基础。

浙公网安备 33010602011771号