基于Arduino的ESP32-S3 + HCSR04(4pin)超声波传感器
·
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
HCSR04超声波传感器凭借其非接触式测距特性,在机器人避障、液位检测等领域广泛应用。本文将以将以ESP32-S3-DevKitC-1开发板为核心,详解传感器工作原理、硬件连接方案,并提供OLED屏显扩展方案。相比红外测距模块,HCSR04的有效测量范围可达2cm-450cm,精度提升约30%。
一、硬件准备
1.1 器件对比

1.2 接线方案
接线示意:
VCC -> 5V
TRIG -> 19(数字输出)
ECHO -> 20(数字输入)
GND -> GND
注:长距离测量时建议外接独立5V电源
二、驱动实现
2.1 开发环境配置
添加库文件
HCSR04.h(基础驱动库)
2.2核心代码解析
代码如下(示例):
#include <HCSR04.h>
const byte triggerPin = 19;
const byte echoPin = 20;
UltraSonicDistanceSensor sensor(triggerPin, echoPin);
void setup() {
Serial.begin(9600);
pinMode(triggerPin, OUTPUT); // 必须显式声明引脚模式[1](@ref)
pinMode(echoPin, INPUT);
}
void loop() {
float distance = sensor.measureDistanceCm();
if(distance > 0){ // 数据有效性校验
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
delay(3000); // 推荐间隔≥60ms保证声波衰减[1](@ref)
}
关键函数说明:
sensors.begin():初始化单总线设备,自动检测连接数量
setResolution(9~12):调节测量精度(12位时转换需750ms4)
getTempCByIndex(n):获取第n个传感器的摄氏温度
三、拓展应用
3.1 OLED屏显集成
结合之前发的那篇文章《ESP32-S3+1.3寸OLED》
#include <Arduino.h>
#include <SH1106Wire.h>
#define SDA 47
#define SCL 21
float temp;
SH1106Wire display(0x3c,SDA,SCL);
void oledbegin();
void displaysensor() ;
void sensor();
void setup() {
Serial.begin(9600);
oledbegin();
pinMode(triggerPin, OUTPUT); // 必须显式声明引脚模式[1](@ref)
pinMode(echoPin, INPUT);
}
void loop() {
sensor();
displaysensor() ;
}
void oledbegin() {
// OLED显示屏初始化检测
if(!display.init()) { // 尝试初始化OLED显示屏[1,5](@ref)
Serial.println("OLED init failed"); // 初始化失败时通过串口输出错误信息
while (1) delay(100); // 进入死循环阻止程序继续执行[1](@ref)
}
// 初始化成功后执行以下设置
display.flipScreenVertically(); // 将屏幕显示内容垂直翻转(0→180度)[5](@ref)
display.clear(); // 清空屏幕显示内容和显存缓冲区[4,7](@ref)
display.setFont(ArialMT_Plain_10); // 设置显示字体为Arial 10号等宽字体[7](@ref)
}
void displaysensor() {
display.clear();
display.setFont(ArialMT_Plain_16);
display.drawString(0, 10, "Distance:");
display.drawString(70, 30, String(distance) + "cm");
display.display();
}
void sensor() {
float distance = sensor.measureDistanceCm();
if(distance > 0){ // 数据有效性校验
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
delay(1000); // 推荐间隔≥60ms保证声波衰减[1](@ref)
}
四、常见问题排查

总结
本文是为验证《基于Arduino的ESP32-S3-DevKitC-1对HCSR04传感器的驱动》
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)