树莓派连接 HC-SR04 超声波传感器实战指南
在早期项目中我们介绍了温度传感器、PIR 运动模块和基本 GPIO 接口。HC-SR04 超声波测距模块因价格低廉而广受欢迎,但其 5V 输出必须降至 3.3V 以保护树莓派 GPIO。本教程将带你了解其物理原理、电路设计和 Python 代码,安全连接并使用该传感器。
所需材料
- HC-SR04 超声波传感器
- 1 kΩ 电阻
- 2 kΩ 电阻
- 跳线(公对母)
- 可选:面包板
超声波传感器工作原理
声波以压力波形式传播,频率决定音调。超声波传感器发射人耳听不见的高频声波,波遇障碍物反射返回,传感器捕捉回波。通过测量脉冲往返时间,利用声速(空气中约 343 m/s)计算距离。
HC-SR04 引脚与功能
- Vcc — 5V 电源
- GND — 地
- TRIG — 触发输入,10µs 高电平脉冲启动测量
- ECHO — 5V 输出脉冲,宽度等于回波传播时间
传感器在 ECHO 输出 5V 脉冲,从检测到回波直到准备好下一次触发。树莓派 GPIO 仅耐受 3.3V,必须分压。
分压电路
简单分压电路使用两个串联电阻。以传感器 5V ECHO 为输入,串联 1 kΩ (R1) 和 2 kΩ (R2),在两电阻连接处可得 3.3V 输出:
Vout = Vin × (R2 / (R1 + R2))
将 1 kΩ 电阻接在 HC-SR04 ECHO 引脚与树莓派 GPIO 之间,2 kΩ 电阻从该节点接地。这样既保护树莓派,又能准确测量。
硬件接线(面包板法)
使用以下树莓派引脚:
Pin 2— 5VPin 6— GNDPin 16— GPIO 23 (TRIG)Pin 18— GPIO 24 (ECHO)
- 将 HC-SR04 引脚插入面包板:红(Vcc)、蓝(TRIG)、黄(ECHO)、黑(GND)。
- 面包板正极轨接树莓派 5V,负极轨接 GND。
- TRIG 接 GPIO 23,可直连或经面包板轨道。
- ECHO 线上:先接 1 kΩ 电阻到 HC-SR04 ECHO 引脚,再接 2 kΩ 电阻到地,GPIO 24 接在两电阻中点。
- 上电前仔细核对所有连接。
读取距离的 Python 代码
以下脚本演示如何触发传感器并解析回波脉冲宽度,计算厘米距离。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
TRIG = 23
ECHO = 24
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.output(TRIG, False)
time.sleep(2) # 等待传感器稳定
while True:
# 触发:10µs 高电平
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
# 等待回波变高
pulse_start = time.time()
while GPIO.input(ECHO) == 0:
pulse_start = time.time()
# 等待回波变低
pulse_end = time.time()
while GPIO.input(ECHO) == 1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150 # 声速 cm/s
print("Distance: %0.2f cm" % distance)
time.sleep(1)
GPIO.cleanup()
运行脚本将实时显示距离读数。根据应用调整延迟或触发间隔。
安全提示
- 切勿将 HC-SR04
ECHO直接接树莓派 GPIO,必须分压。 - 树莓派和传感器应共用同一 5V 电源轨,避免电压不匹配。
- 查阅传感器数据手册确认最高工作温度和推荐负载。
遵循这些步骤,你将获得一个对树莓派安全、且适用于广泛机器人和自动化项目的超声波测距系统。
制造工艺
- 树莓派+$5 I²C传感器打造温度记录仪
- 树莓派专业温度监测:基于 DS18B20 传感器的完整指南
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 树莓派自制气象站:每日邮件推送温湿雨数据
- 树莓派紧凑型 DHT 温湿度扩展板:ATtiny85 + DHT22/DHT11
- 树莓派传感器数据融合实战:GPS 与 MPU‑9150 IMU 的 I²C 与 UART 接入
- 树莓派 3 接 HC‑SR04 超声波测距传感器完全指南
- 树莓派 PIR 运动传感器控制 LED 实战指南
- 树莓派低成本土壤湿度传感器:智能灌溉 DIY 指南
- 树莓派读取线性霍尔传感器:Java 指南与 ADC0832 深度解析
- 树莓派多传感器温度光照监测系统:DS18B20 实战构建
- 树莓派传感器与执行器控制实战:加速度计、舵机与数据流