Este proyecto tiene como objetivo crear un dispensador de agua automático utilizando un sensor ultrasónico y una placa Arduino. El sistema activa una bomba de agua cuando detecta la proximidad de un objeto (como una mano) a una distancia específica, proporcionando agua de manera higiénica y sin contacto.
Texto preformateado
- Arduino Uno: Unidad central de control.
- Sensor Ultrasónico HC-SR04: Para detectar la proximidad de un objeto.
- Relé: Actúa como un interruptor controlado electrónicamente para la bomba de agua.
- Bomba de Agua: Para dispensar agua cuando se activa.
- Fuente de Alimentación: Para proporcionar energía al Arduino, al relé y a la bomba de agua.
- Protoboard y Cables de Conexión: Para realizar las conexiones eléctricas.
Conexiones
Sensor Ultrasónico HC-SR04
- VCC del HC-SR04 a 5V del Arduino.
- GND del HC-SR04 a GND del Arduino.
- Trig del HC-SR04 al pin 9 del Arduino.
- Echo del HC-SR04 al pin 10 del Arduino.
Módulo Relé
- VCC del módulo relé a 5V del Arduino.
- GND del módulo relé a GND del Arduino.
- IN del módulo relé al pin 7 del Arduino.
Bomba de Agua
- Cable positivo de la bomba al COM del módulo relé.
- NO (Normally Open) del módulo relé a la fuente de alimentación positiva para la bomba.
- Cable negativo de la bomba a la fuente de alimentación negativa.
// Definimos los pines del sensor ultrasónico HC-SR04
const int trigPin = 9; // Pin para el Trigger del sensor
const int echoPin = 10; // Pin para el Echo del sensor
// Definimos el pin para el módulo relé
const int relayPin = 7; // Pin para el control del módulo relé
void setup() {
// Iniciamos la comunicación serial para la depuración
Serial.begin(9600);
// Configuramos los pines del sensor ultrasónico
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Configuramos el pin del módulo relé
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // Aseguramos que el relé esté apagado al inicio (activo bajo)
}
void loop() {
// Variables para la duración y la distancia
long duration;
int distance;
// Enviamos un pulso de 10 microsegundos por el pin Trigger
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Leemos el tiempo que tarda el pulso en volver al Echo
duration = pulseIn(echoPin, HIGH);
// Calculamos la distancia en centímetros
distance = duration * 0.034 / 2;
// Imprimimos la distancia en el monitor serial
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Si la distancia es menor o igual a 15 cm, encendemos el relé (activo bajo)
if (distance <= 15) {
digitalWrite(relayPin, LOW);
} else {
digitalWrite(relayPin, HIGH);
}
// Esperamos 100 ms antes de la siguiente medición
delay(100);
}`