Esp32基础(⑩超声波测距模块)
HC-SR04 是一种常用的超声波测距模块,广泛应用于机器人、测距设备等领域。
Trig:触发控制信号输入引脚,通过输入至少 10us 的高电平信号来触发模块发射超声波。
Echo:回响信号输出引脚,当有超声波返回时,该引脚会输出高电平,高电平持续的时间就是超声波从发射到返回的时间。
HC-SR04 引脚 | ESP32 引脚 | 说明 |
---|---|---|
VCC | 5V 电源(或 USB 5V) | 模块供电(必须 5V,3.3V 可能不稳定) |
GND | GND | 接地 |
Trig | GPIO 2(可自定义) | 触发信号输出(ESP32 → 模块) |
Echo | GPIO 4(可自定义) | 回响信号输入(模块 → ESP32) |
代码
from machine import Pin, time_pulse_us
import time# 定义引脚(根据实际接线修改)
trig_pin = Pin(2, Pin.OUT) # Trig 接 GPIO2
echo_pin = Pin(4, Pin.IN) # Echo 接 GPIO4def measure_distance():# 触发信号:至少 10us 的高电平trig_pin.value(0)time.sleep_us(5)trig_pin.value(1)time.sleep_us(10)trig_pin.value(0)# 测量回响信号的高电平持续时间(单位:微秒)# 超时设置为 30000us(对应最大测距约 5 米,超过 HC-SR04 量程)duration = time_pulse_us(echo_pin, 1, 30000)if duration < 0:return -1 # 超时(无返回信号)# 计算距离:声速约 343.2 m/s = 0.03432 cm/us,往返路程需除以 2distance = (duration * 0.03432) / 2return round(distance, 2) # 保留两位小数# 循环测距并打印结果
while True:dist = measure_distance()if dist < 0:print("未检测到障碍物")else:print(f"距离:{dist} 厘米")time.sleep(1) # 每秒测一次
123