Conectar sensor ultrasónico HC-SR04 a Raspberry Pi: guía práctica
En proyectos anteriores cubrimos sensores de temperatura, módulos PIR de movimiento e interfaz GPIO básica. El medidor de distancia ultrasónico HC-SR04 es una opción popular, pero su salida de 5 V debe reducirse a 3,3 V para proteger los pines GPIO de la Raspberry Pi. Este tutorial recorre la física, la electrónica y el código Python necesarios para conectar y usar el sensor de forma segura.
Qué necesitarás
- Sensor ultrasónico HC-SR04
- Resistencia de 1 kΩ
- Resistencia de 2 kΩ
- Cables jumper (macho-hembra)
- Opcional: protoboard
Cómo funcionan los sensores ultrasónicos
El sonido se propaga como ondas de presión; el tono está determinado por la frecuencia de estas ondas. Los sensores ultrasónicos emiten sonido de alta frecuencia inaudible para humanos, rebotan en objetos cercanos y capturan el eco. Midiendo el tiempo de ida y vuelta del pulso, el circuito interno del sensor calcula la distancia usando la velocidad del sonido (≈343 m/s en aire).
Pinout y funcionalidad del HC-SR04
- Vcc – Alimentación 5 V
- GND – Tierra
- TRIG – Entrada de disparo; un pulso de 10 µs inicia una medición
- ECHO – Pulso de salida de 5 V cuyo ancho equivale al tiempo de viaje del eco
El sensor emite un pulso de 5 V en ECHO que dura desde que se detecta el eco hasta que el sensor está listo para el siguiente disparo. Como un pin GPIO de Raspberry Pi solo tolera 3,3 V, debemos reducir este voltaje.
Circuito divisor de voltaje
Un divisor de voltaje simple usa dos resistencias en serie. Con la salida de 5 V del ECHO del sensor como entrada, una resistencia de 1 kΩ (R1) seguida de una de 2 kΩ (R2) producirá 3,3 V en la unión:
Vout = Vin × (R2 / (R1 + R2))
Conecta la resistencia de 1 kΩ entre la línea ECHO y el GPIO de la Raspberry Pi, luego conecta la de 2 kΩ desde esa unión a tierra. Esto protege la Pi permitiendo mediciones precisas.
Cableado hardware (método protoboard)
Usa los siguientes pines de Raspberry Pi:
Pin 2– 5 VPin 6– GNDPin 16– GPIO 23 (TRIG)Pin 18– GPIO 24 (ECHO)
- Conecta los pines del HC-SR04 a la protoboard: Rojo (Vcc), Azul (TRIG), Amarillo (ECHO), Negro (GND).
- Une el rail positivo de la protoboard al 5 V de la Pi y el negativo al GND de la Pi.
- Cablea TRIG a GPIO 23. Puedes conectarlo directamente o pasar por un rail de la protoboard.
- Para la línea ECHO, coloca la resistencia de 1 kΩ en el rail desde el pin
ECHOdel HC-SR04, luego añade la de 2 kΩ a tierra. Conecta GPIO 24 a la unión entre ambas resistencias. - Verifica todas las conexiones antes de alimentar la Pi.
Código Python para leer distancia
El siguiente script muestra cómo disparar el sensor e interpretar el ancho del pulso de eco para calcular la distancia en centímetros.
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) # Permite que el sensor se estabilice
while True:
# Dispara el sensor: pulso alto de 10 µs
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
# Espera a que el eco suba
pulse_start = time.time()
while GPIO.input(ECHO) == 0:
pulse_start = time.time()
# Espera a que el eco baje
pulse_end = time.time()
while GPIO.input(ECHO) == 1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150 # Velocidad del sonido en cm/s
print("Distancia: %0.2f cm" % distance)
time.sleep(1)
GPIO.cleanup()
Ejecutar este script mostrará lecturas de distancia en tiempo real. Ajusta el retardo o intervalo de disparo según tu aplicación.
Consejos de seguridad
- Nunca conectes el pin
ECHOdel HC-SR04 directamente a un GPIO de la Pi sin divisor de voltaje. - Alimenta siempre la Pi y el sensor desde el mismo rail de 5 V para evitar desajustes de voltaje.
- Consulta la hoja de datos del sensor para temperatura máxima de operación y carga recomendada.
Siguiendo estos pasos, tendrás un sistema robusto de medición de distancia ultrasónica, seguro para tu Raspberry Pi y preciso para una amplia gama de proyectos de robótica y automatización.
Proceso de manufactura
- Construya un registrador de temperatura con Raspberry Pi y sensor I2C de 5 $
- Monitorización profesional de temperatura con Raspberry Pi y DS18B20
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Construya una estación meteorológica con Raspberry Pi que envíe datos diarios por email
- Breakout compacto DHT de temperatura y humedad para Raspberry Pi – ATtiny85 y DHT22/DHT11
- Integración de datos de sensores en Raspberry Pi: Guía práctica
- Conexión del sensor ultrasónico HC‑SR04 a Raspberry Pi 3 – Guía completa
- Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
- Construya un Sensor de Humedad de Suelo de Bajo Coste para Riego Inteligente con Raspberry Pi
- Lectura de Sensor Hall Lineal con Raspberry Pi: Guía Java y Análisis del ADC0832
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20