PR.FT5_15·Kit RPi›Sensor UltrassónicoPróximo →
⬤ Intermédio · HC-SR04 · Echo

📡 Sensor Ultrassónico HC-SR04

Medir distâncias com pulso ultrassónico. O HC-SR04 mede de 2 a 400cm. Atenção: o pino Echo está a 5V — divisor de tensão obrigatório!

Circuito com divisor de tensão

HC-SR04 VCC → 5V (pino 2)
HC-SR04 GND → GND
HC-SR04 TRIG → GPIO 23 (3.3V é suficiente)
HC-SR04 ECHO → Res. 1kΩ → GPIO 24 + Res. 2kΩ → GND
⚠️
O pino Echo devolve 5V e o GPIO do RPi só suporta 3.3V. O divisor resistivo 1kΩ/2kΩ baixa de 5V para ~3.3V. Sem este divisor o pino GPIO pode ficar danificado.

Exercício — Medir distância

Python · ultrassom.py
import RPi.GPIO as GPIO
import time

TRIG = 23
ECHO = 24

GPIO.setmode(GPIO.BCM)
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.output(TRIG, GPIO.LOW)
time.sleep(0.5)

def distancia():
    # Pulso trigger de 10µs
    GPIO.output(TRIG, GPIO.HIGH)
    time.sleep(0.00001)
    GPIO.output(TRIG, GPIO.LOW)
    # Medir duração do echo
    while GPIO.input(ECHO) == 0:
        t0 = time.time()
    while GPIO.input(ECHO) == 1:
        t1 = time.time()
    # velocidade do som: 34300 cm/s / 2 (ida e volta)
    return (t1 - t0) * 17150

try:
    while True:
        d = distancia()
        print(f"Distância: {d:.1f} cm")
        time.sleep(0.5)
except KeyboardInterrupt:
    GPIO.cleanup()