esp32c3超声波测距传感器
时间: 2025-03-12 08:16:22 浏览: 65
### ESP32-C3与超声波测距传感器的距离测量
#### 超声波测距原理
超声波测距传感器通过发射高频声波并接收反射信号来计算目标物体的距离。通常,这种传感器具有两个主要引脚:触发(Trigger)和回响(Echo)。当向 Trigger 发送一个高电平脉冲时,传感器会发出一系列超声波,并在检测到回波后,在 Echo 引脚上输出相应宽度的脉冲[^1]。
#### 硬件连接
为了实现 ESP32-C3 和超声波测距模块之间的通信,需按照以下方式连接:
- **VCC**: 连接到 ESP32 的 3.3V 或 5V 输出端。
- **GND**: 接地至 ESP32 的 GND。
- **Trig (Trigger)**: 连接至 ESP32 的任意 GPIO 引脚(例如 GPIO10)。
- **Echo (Echo)**: 连接至另一个 GPIO 引脚(例如 GPIO11)。
注意:某些型号的超声波模块可能需要逻辑电平转换器以适配 ESP32 的电压范围。
#### 示例代码
以下是基于 Arduino IDE 编写的示例程序,用于读取超声波传感器的数据并通过串口打印结果:
```cpp
// 定义 Trig 和 Echo 引脚
const int trigPin = 10; // 触发引脚
const int echoPin = 11; // 回应引脚
void setup() {
Serial.begin(115200); // 初始化串口波特率
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long duration;
float distance;
digitalWrite(trigPin, LOW); // 设置低电平至少 2 微秒
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // 发送 10 微秒的高电平脉冲
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // 测量返回脉冲的时间长度
distance = duration * 0.034 / 2; // 计算实际距离(单位:厘米)
Serial.print("Distance: ");
Serial.println(distance); // 打印距离值
delay(1000); // 延迟一秒再重复测量
}
```
上述代码实现了基本的功能流程:发送触发信号、捕获回波时间以及根据时间和声音传播速度换算成物理距离。
#### 注意事项
- 如果环境温度变化较大,则需要考虑空气密度对声速的影响,从而调整算法中的常数值。
- 对于长时间运行的应用场景,建议加入看门狗机制防止死循环或者异常状态持续存在。
阅读全文
相关推荐

















