Aprende a crear un sistema de alarma por proximidad que utiliza un sensor ultrasónico HC-SR04 para detectar objetos cercanos. El sistema emite alertas sonoras y enciende LEDs indicadores según la distancia del objeto al sensor. Cuanto más cerca está el objeto, más rápido es el pitido.
📋 Materiales Requeridos
Componentes Electrónicos
- Arduino Uno: Microcontrolador principal
- Sensor ultrasónico HC-SR04: Detección de proximidad
- 3 Resistencias de 200Ω: Limitación de corriente para LEDs
- 3 LEDs (rojo, verde y amarillo): Indicadores visuales por distancia
- 1 Buzzer o piezo eléctrico: Generador de alarma sonora
🔌 Diagrama de Conexiones
El siguiente diagrama muestra cómo conectar el sensor HC-SR04, los LEDs, el buzzer y todas las resistencias al Arduino Uno:
📌 Conexiones del Sistema
- Pin 2 (Arduino): LED 1 (Rojo) - indicador de distancia lejana
- Pin 3 (Arduino): LED 2 (Amarillo) - indicador de distancia media
- Pin 4 (Arduino): LED 3 (Verde) - indicador de distancia cercana
- Pin 5 (Arduino): Buzzer/Piezo - alarma sonora
- Pin 7 (Arduino): Trigger y Echo del sensor HC-SR04 (en la simulación ambos comparten el mismo pin)
- GND: Tierra común para todos los componentes
- 5V: Alimentación para sensor y componentes
💻 Código Arduino Explicado
El código implementa la lectura del sensor ultrasónico y controla los LEDs y buzzer según las zonas de proximidad definidas.
1️⃣ Definición de Pines y Variables
// Definición de pines mediante macros #define led1 2 #define led2 3 #define led3 4 #define buzzer 5 // Variables para almacenar distancia en diferentes unidades int inches = 0; // Distancia en pulgadas int cm = 0; // Distancia en centímetros
2️⃣ Función para Leer el Sensor Ultrasónico
// Función que realiza la lectura del sensor HC-SR04 long readUltrasonicDistance(int triggerPin, int echoPin) { pinMode(triggerPin, OUTPUT); digitalWrite(triggerPin, LOW); delayMicroseconds(2); // Enviar pulso de 10 microsegundos digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); pinMode(echoPin, INPUT); // Medir el tiempo del pulso de retorno return pulseIn(echoPin, HIGH); }
3️⃣ Configuración Inicial (Setup)
void setup() { // Configurar todos los pines de salida como OUTPUT pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(buzzer, OUTPUT); // Inicializar comunicación serial para debug Serial.begin(9600); }
4️⃣ Ciclo Principal con Lógica de Proximidad
void loop() { // Medir distancia en centímetros cm = 0.01723 * readUltrasonicDistance(7, 7); // Convertir a pulgadas inches = (cm / 2.54); // Mostrar valores en el monitor serial Serial.print(inches); Serial.print("in, "); Serial.print(cm); Serial.println("cm"); delay(100); // Lectura cada 100ms
📊 Zonas de Detección y Acciones
🟢 Zona 1: Distancia Lejana (> 206 cm)
if (cm > 206) { // Encender solo LED 1 (Rojo) digitalWrite(led1, HIGH); digitalWrite(led2, LOW); digitalWrite(led3, LOW); // Sin alarma sonora }
Acción: LED rojo encendido, sin sonido.
🟡 Zona 2: Distancia Media (145 - 206 cm)
if (cm < 206 && cm > 145) { // Encender LED 2 (Amarillo) digitalWrite(led1, LOW); digitalWrite(led2, HIGH); digitalWrite(led3, LOW); // Buzzer lento (700ms on/off) digitalWrite(buzzer, HIGH); delay(700); digitalWrite(buzzer, LOW); delay(700); }
Acción: LED amarillo encendido, buzzer lento (700ms de pausa entre pitidos).
🔴 Zona 3: Distancia Cercana (20 - 145 cm)
if (cm < 145 && cm > 20) { // Encender LED 3 (Verde) digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, HIGH); // Buzzer rápido (300ms on/off) digitalWrite(buzzer, HIGH); delay(300); digitalWrite(buzzer, LOW); delay(300); }
Acción: LED verde encendido, buzzer rápido (300ms de pausa entre pitidos).
🎯 Resumen del Comportamiento
| Distancia | LED Activo | Buzzer | Velocidad |
|---|---|---|---|
| > 206 cm | Rojo | Apagado | — |
| 145 - 206 cm | Amarillo | Encendido | Lenta (700ms) |
| 20 - 145 cm | Verde | Encendido | Rápida (300ms) |
⚙️ Consejos de Implementación
Ajustes Personalizables
- Distancias de detección: Modifica los valores 206 y 145 según tus necesidades
- Velocidad de buzzer: Cambia los delays (700, 300) para variar la frecuencia de pitidos
- Colores de LEDs: Usa rojo para lejano, amarillo para medio, verde para cercano (o invierte según prefieras)
- Sensor ultrasónico: El rango típico del HC-SR04 es de 2cm a 400cm
Mejoras Futuras
- Agregar una pantalla LCD para mostrar la distancia en tiempo real
- Implementar PWM en el buzzer para generar diferentes tonos
- Usar un servo motor para activar una acción física al detectar proximidad
- Guardar los datos de distancia en una tarjeta SD
🔗 Simulación Interactiva
Puedes ver el diagrama completo, interactuar con la simulación y probar el código en Tinkercad:
🎓 Conceptos Aprendidos
Con este proyecto dominas la lectura de sensores ultrasónicos, el control de múltiples LEDs, la generación de alarmas sonoras con buzzer, la lógica condicional avanzada y la comunicación serial para debug. Estas habilidades son esenciales para proyectos de robótica, automatización del hogar y sistemas de seguridad.
Publicar un comentario
¡Hola! Nos alegra mucho que hayas llegado hasta aquí y que estés leyendo este artículo en Edeptec.
Este formulario es un espacio abierto para ti: puedes dejar un comentario con tus dudas, sugerencias, experiencias o simplemente tu opinión sobre el tema tratado.
» ¿Te resultó útil la información?
» ¿Tienes alguna experiencia personal que quieras compartir?
» ¿Se te ocurre algún tema que te gustaría ver en próximos artículos?
Recuerda que este espacio es para aprender y compartir, por eso te animamos a participar de manera respetuosa y constructiva. Tus comentarios pueden ayudar a otros lectores que están en el mismo camino, ya sea en electrónica, programación, deportes o tecnología.
¡Gracias por ser parte de esta comunidad de aprendizaje! Tu participación es lo que hace crecer este proyecto.