📡 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()