▷ Sistema de Detección de Proximidad con Sensor Ultrasónico HC-SR04 y Arduino

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:

Diagrama de conexiones sensor ultrasónico HC-SR04 con Arduino y LEDs

📌 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.

💬 ¿Preguntas o Sugerencias? ¡Comparte tu experiencia, dudas o mejoras al proyecto en los comentarios! Si lograste implementarlo correctamente, cuéntanos cómo lo adaptaste para tu aplicación específica.

0/Deja un comentario/Comentarios

¡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.