Caso práctico: corte por fuga de agua con Arduino UNO

Caso práctico: corte por fuga de agua con Arduino UNO — hero

Objetivo y caso de uso

Qué construirás: Un controlador básico de relé de corte por fuga de agua usando un Arduino UNO R3, sensor de fuga de agua, módulo de relé de 1 canal y zumbador piezoeléctrico. Cuando se detecta agua, el Arduino conmuta el relé en aproximadamente 10–50 ms para cortar un circuito de control de baja tensión conectado y activa de inmediato una alarma local.

Por qué importa / Casos de uso

  • Protección bajo fregadero: Detecta goteos bajo un fregadero de cocina o baño y corta una línea de válvula de 5–12 V o de habilitación de bomba antes de que el agua acumulada se extienda por el mueble.
  • Monitoreo del área de la lavadora: Coloca el sensor en una bandeja cerca de la lavadora para que una fuga en el suelo active un zumbador audible y abra o cierre el relé para deshabilitar una ruta de control de solenoide de agua.
  • Respuesta en sótano o cuarto de servicio: Detecta fugas tempranas cerca de un calentador de agua, filtro o tubería de sumidero y envía una señal rápida de corte mientras proporciona una alerta inmediata en el lugar.
  • Prototipo educativo de automatización: Aprende sensado digital, conmutación segura con relé y control orientado a eventos en un microcontrolador de 8 bits con latencia en reposo casi nula y normalmente <1% de carga de CPU del UNO para este bucle simple.

Resultado esperado

  • Un sketch de Arduino que lee continuamente el sensor de fuga y cambia el estado del relé tan pronto como se detecta agua.
  • Una alarma con zumbador que se activa al mismo tiempo que el evento de corte para una notificación local clara.
  • Un prototipo de bajo costo adecuado para pruebas en banco con electrónica de 5 V y circuitos de enclavamiento de válvula, bomba o controlador de baja tensión.
  • Un flujo de respuesta repetible con temporización práctica: desde el humedecimiento del sensor hasta la acción del relé en decenas de milisegundos, sin uso de GPU y sin dependencia de FPS.

Audiencia: principiantes de Arduino, makers y estudiantes de automatización de edificios; Nivel: Principiante

Arquitectura/flujo: El sensor de fuga de agua detecta humedad → Arduino UNO lee la entrada digital/con umbral en el bucle principal → el relé se energiza o desenergiza según la elección de cableado a prueba de fallos → el zumbador suena hasta que la fuga desaparece o el sistema se reinicia.

Nota educativa de validación

Antes de publicar este caso, el contenido pasó la puerta automática de validación de Prometeo con estado PASS. El validador comprobó los bloques de código, la estructura del artículo, los comandos copiables y la coherencia con el catálogo de dispositivos soportados.

Evidencia de validación publicada

  • Resultado automático: PASS.
  • Estructura parseada: 3 apartados, 4 tablas y 3 bloques de código detectados antes de publicar.
  • Código comprobado: 1 Arduino/arduino-cli compile, 1 C/C++ static checks, 1 Bash/copy-paste checks.
  • Catálogo soportado: el texto se contrastó contra los perfiles de dispositivo validables de Prometeo y los stacks no soportados bloquean la publicación.
  • Hallazgos del informe: sin hallazgos bloqueantes.

Esta validación confirma compatibilidad sintáctica y de herramientas para el material publicado, pero no sustituye la prueba física sobre tu hardware, cableado y entorno exactos.

Nota educativa de seguridad

Este proyecto es un prototipo educativo, no un sistema certificado de protección de edificios. Trátalo como un controlador de aprendizaje y una ayuda de respuesta a fugas a escala de banco.

Límites y precauciones importantes:

  • No conectes tensión de red directamente a menos que estés cualificado para diseñar y probar sistemas de relé seguros para red eléctrica. Para uso de principiantes, mantén el relé solo en un circuito de baja tensión.
  • El módulo de relé de este tutorial debe usarse para conmutar:
  • cableado de control de válvula de baja tensión
  • una entrada de habilitación de baja tensión
  • una carga de demostración
    no equipos domésticos de fontanería de CA a menos que estén correctamente diseñados.
  • El agua y la electrónica deben mantenerse físicamente separadas:
  • solo el sensor de fuga debe exponerse al agua
  • mantén secos el Arduino, la placa de relé, el cable USB y el zumbador
  • Un sensor de fuga corroído o contaminado puede activar falsas alarmas o no detectar correctamente. Se requiere inspección periódica.
  • La alimentación USB desde un ordenador es aceptable para pruebas de laboratorio, pero una instalación en campo requeriría un diseño de alimentación y una estrategia de encapsulado más deliberados.
  • Este diseño no tiene garantía certificada a prueba de fallos, ni respaldo por batería, ni detección de manipulación.
  • Si se usa cerca de bombas, válvulas o actuadores de mayor corriente, confirma que los contactos del relé estén clasificados para la carga real y que las cargas inductivas tengan la supresión adecuada.
  • Nunca confíes solo en este prototipo para prevenir daños materiales en entornos de alto riesgo.

Diagrama de bloques conceptual

Vista de alto nivel: qué entra, qué procesa cada bloque y qué sale del sistema.

Arquitectura funcional

El sensor de fuga de agua detecta humedad

Arduino UNO lee la entrada digital/con um…

el relé se energiza o desenergiza según l…

el zumbador suena hasta que la fuga desap…

Flujo conceptual de señales y responsabilidades entre bloques del dispositivo.

Ruta de validación

Sketch

arduino-cli compile

Upload

Prueba funcional

Resumen conceptual de las herramientas usadas para comprobar el material publicado.

Requisitos previos

Antes de empezar, deberías tener:

  • Familiaridad básica con:
  • conectar cables jumper a los pines del Arduino
  • seleccionar una placa y un puerto serie
  • cargar un sketch de Arduino
  • Un ordenador con:
  • Arduino CLI instalado
  • cable USB para el Arduino UNO R3
  • Un espacio de trabajo seco y un pequeño recipiente o toalla de papel para pruebas controladas con agua
  • Una carga o lazo de control de baja tensión para conectar a los contactos del relé con fines de demostración
  • Ejemplos:
    • una línea de control de válvula de 12 V DC
    • una pequeña línea de habilitación de bomba DC
    • una lámpara LED de prueba alimentada por separado
  • Para un laboratorio de principiantes, un LED o zumbador en el lado de contactos del relé es más seguro que conectar al principio cualquier equipo real de fontanería

Materiales

Usa exactamente esta combinación de familia/modelo de dispositivos:

Arduino UNO R3 (ATmega328P) + sensor de fuga de agua + módulo de relé de 1 canal + zumbador piezoeléctrico

Lista de materiales recomendada:

ElementoTipo exacto/recomendadoPropósito
Controlador principalArduino UNO R3 (ATmega328P)Ejecuta la lógica de detección de fugas y del relé
SensorMódulo de sensor de fuga de agua con salida analógica y/o digitalDetecta presencia de agua en pistas expuestas
Salida de reléMódulo de relé de 1 canal, bobina de 5 V, entrada compatible con ArduinoConmuta el circuito de control externo de corte
AlarmaZumbador piezoeléctrico, compatible con 5 VAdvertencia audible local
CableadoCables jumper macho-machoConexiones entre módulos
Cable USBUSB A a USB BAlimentación y programación
Carga de pruebaLámpara de baja tensión, módulo LED o lazo de control de válvula deshabilitadoDemostración segura de la acción del relé
OpcionalToalla pequeña, vaso, pulverizadorPruebas controladas con agua
OpcionalProtoboardCableado más limpio del zumbador si es necesario

Notas sobre la combinación exacta de modelos

  • El Arduino UNO R3 (ATmega328P) es el único controlador usado aquí.
  • El sensor de fuga de agua puede exponer:
  • AO: salida analógica
  • DO: salida digital con umbral desde un comparador integrado
  • En este tutorial, usaremos la salida analógica para un filtrado más estable y fácil de entender.
  • Se asume que el módulo de relé tiene:
  • VCC
  • GND
  • IN
  • terminales de tornillo como COM, NO y NC
  • El zumbador piezoeléctrico se trata como un zumbador simple de dos cables.

Configuración/Conexión

Este proyecto tiene dos partes:

  1. Lado lógico: Arduino, sensor, entrada del relé, zumbador
  2. Lado de contactos del relé: el circuito externo de baja tensión que deseas interrumpir o habilitar

Asignación de pines usada en este tutorial

Pin de Arduino UNOPin del dispositivo conectadoFunción
5VVCC del sensorAlimentación del sensor de fuga
GNDGND del sensorTierra común
A0AO del sensorLectura analógica de fuga
5VVCC del reléAlimentación del módulo de relé
GNDGND del reléTierra común
D8IN del reléSeñal de control del relé
D9Positivo del zumbadorPin de accionamiento del zumbador
GNDNegativo del zumbadorRetorno del zumbador

Pasos de conexión del sensor

  1. Conecta VCC del sensor de fuga de agua a 5V en el Arduino.
  2. Conecta GND del sensor a GND en el Arduino.
  3. Conecta AO del sensor a A0 en el Arduino.
  4. Si tu sensor también tiene DO, déjalo sin usar en este tutorial.

Pasos de conexión del módulo de relé

  1. Conecta VCC del relé a 5V del Arduino.
  2. Conecta GND del relé a GND del Arduino.
  3. Conecta IN del relé a D8 del Arduino.

Pasos de conexión del zumbador piezoeléctrico

  1. Conecta el terminal positivo del zumbador a D9.
  2. Conecta el terminal negativo del zumbador a GND.

Lado de contactos del relé: cómo usar la función de corte

El módulo de relé proporciona contactos de conmutación aislados, normalmente:

  • COM: común
  • NO: normalmente abierto
  • NC: normalmente cerrado

Para un objetivo de relé de corte por fuga de agua, la configuración práctica más adecuada para principiantes es:

  • Colocar el relé en serie con la línea de control de baja tensión del dispositivo que deseas detener.
  • Elegir COM + NC si quieres el circuito conectado durante el funcionamiento normal en seco y desconectado cuando se active la alarma de fuga.
  • Elegir COM + NO si quieres el circuito desconectado durante el funcionamiento normal en seco y conectado solo durante la alarma. Esto es menos común para corte.

Disposición de contactos recomendada para principiantes

Para un controlador de corte simple:

  • Cable externo de fuente/control de baja tensión -> COM
  • Relé NC -> entrada de carga/control

Resultado:

  • Estado seco: COM y NC están conectados, por lo que se permite el circuito de carga/control.
  • Estado de fuga: el relé conmuta alejándose de NC, abriendo la ruta de control y creando una acción de corte.

Nota importante de configuración sobre la lógica del relé

Algunos módulos de relé son activos en LOW:

  • escribir LOW en la entrada enciende el relé (ON)
  • escribir HIGH apaga el relé (OFF)

Otros son activos en HIGH.
El sketch de abajo admite esto usando una constante de configuración para que no tengas que reescribir la lógica.

Código validado

Sketch completo de Arduino: water_leak_shutoff_relay.ino

Vista pública parcial del archivo validado. El código completo se muestra a miembros y en PDF/Print.

/*
  water_leak_shutoff_relay.ino

  Device model:
  Arduino UNO R3 (ATmega328P) + water leak sensor + 1-channel relay module + piezo buzzer

  Goal:
  Detect water using analog input, confirm the leak with simple timing/filter logic,
  trigger an audible alarm, and switch a relay for shutoff control.

  Serial output:
  9600 baud
*/

const int SENSOR_PIN = A0;
const int RELAY_PIN = 8;
const int BUZZER_PIN = 9;

// Relay module behavior:
// true  = relay input is active LOW
// false = relay input is active HIGH
const bool RELAY_ACTIVE_LOW = true;

// Sensor thresholds:
// Lower analog readings often mean "more water" on many common modules,
// but some modules behave differently. Validate with Serial Monitor first.
const int LEAK_THRESHOLD_WET = 500;   // Reading at or below this means "wet"
const int LEAK_THRESHOLD_DRY = 560;   // Reading at or above this means "dry again"

// Timing filters to avoid false triggers from noise or tiny splashes
const unsigned long WET_CONFIRM_MS = 400;
const unsigned long DRY_CONFIRM_MS = 1500;
const unsigned long STATUS_PRINT_MS = 500;

// Buzzer pattern timing
const unsigned long BUZZER_ON_MS = 180;
const unsigned long BUZZER_OFF_MS = 220;

bool leakAlarm = false;

unsigned long wetStartMs = 0;
unsigned long dryStartMs = 0;
unsigned long lastStatusPrintMs = 0;
unsigned long buzzerToggleMs = 0;
bool buzzerState = false;

void setRelayAlarmState(bool alarmActive) {
  // For shutoff wiring using COM + NC:
  // alarmActive should cause the relay to switch away from NC.
  bool relayEnergized = alarmActive;

  if (RELAY_ACTIVE_LOW) {
    digitalWrite(RELAY_PIN, relayEnergized ? LOW : HIGH);
  } else {
    digitalWrite(RELAY_PIN, relayEnergized ? HIGH : LOW);
  }
}

void setBuzzer(bool on) {
  if (on) {
    tone(BUZZER_PIN, 2400);  // 2.4 kHz tone
  } else {
    noTone(BUZZER_PIN);
  }
}

void printState(const char* stateName, int sensorValue) {
  Serial.print("State: ");
  Serial.print(stateName);
  Serial.print(" | sensor=");
  Serial.print(sensorValue);
  Serial.print(" | relay_alarm=");
  Serial.println(leakAlarm ? "ON" : "OFF");
}
// ...

🔒 Este contenido es premium. Con la suscripción mensual (7 días gratis) podrás desbloquear el material didáctico completo y el pack PDF listo para imprimir.🔓 Desbloquéalo — 7 días gratis
/*
  water_leak_shutoff_relay.ino

  Device model:
  Arduino UNO R3 (ATmega328P) + water leak sensor + 1-channel relay module + piezo buzzer

  Goal:
  Detect water using analog input, confirm the leak with simple timing/filter logic,
  trigger an audible alarm, and switch a relay for shutoff control.

  Serial output:
  9600 baud
*/

const int SENSOR_PIN = A0;
const int RELAY_PIN = 8;
const int BUZZER_PIN = 9;

// Relay module behavior:
// true  = relay input is active LOW
// false = relay input is active HIGH
const bool RELAY_ACTIVE_LOW = true;

// Sensor thresholds:
// Lower analog readings often mean "more water" on many common modules,
// but some modules behave differently. Validate with Serial Monitor first.
const int LEAK_THRESHOLD_WET = 500;   // Reading at or below this means "wet"
const int LEAK_THRESHOLD_DRY = 560;   // Reading at or above this means "dry again"

// Timing filters to avoid false triggers from noise or tiny splashes
const unsigned long WET_CONFIRM_MS = 400;
const unsigned long DRY_CONFIRM_MS = 1500;
const unsigned long STATUS_PRINT_MS = 500;

// Buzzer pattern timing
const unsigned long BUZZER_ON_MS = 180;
const unsigned long BUZZER_OFF_MS = 220;

bool leakAlarm = false;

unsigned long wetStartMs = 0;
unsigned long dryStartMs = 0;
unsigned long lastStatusPrintMs = 0;
unsigned long buzzerToggleMs = 0;
bool buzzerState = false;

void setRelayAlarmState(bool alarmActive) {
  // For shutoff wiring using COM + NC:
  // alarmActive should cause the relay to switch away from NC.
  bool relayEnergized = alarmActive;

  if (RELAY_ACTIVE_LOW) {
    digitalWrite(RELAY_PIN, relayEnergized ? LOW : HIGH);
  } else {
    digitalWrite(RELAY_PIN, relayEnergized ? HIGH : LOW);
  }
}

void setBuzzer(bool on) {
  if (on) {
    tone(BUZZER_PIN, 2400);  // 2.4 kHz tone
  } else {
    noTone(BUZZER_PIN);
  }
}

void printState(const char* stateName, int sensorValue) {
  Serial.print("State: ");
  Serial.print(stateName);
  Serial.print(" | sensor=");
  Serial.print(sensorValue);
  Serial.print(" | relay_alarm=");
  Serial.println(leakAlarm ? "ON" : "OFF");
}

void setup() {
  pinMode(RELAY_PIN, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);

  // Default safe startup for this tutorial:
  // no alarm until a confirmed leak is detected.
  leakAlarm = false;
  setRelayAlarmState(leakAlarm);
  setBuzzer(false);

  Serial.begin(9600);
  delay(300);
  Serial.println("Water leak shutoff relay controller starting...");
  Serial.println("Using analog leak sensing on A0");
  Serial.println("Check dry and wet readings before final installation.");

  // Initialize timing references
  wetStartMs = 0;
  dryStartMs = 0;
  lastStatusPrintMs = 0;
  buzzerToggleMs = 0;
  buzzerState = false;
}

void loop() {
  unsigned long now = millis();
  int sensorValue = analogRead(SENSOR_PIN);

  bool wetCandidate = (sensorValue <= LEAK_THRESHOLD_WET);
  bool dryCandidate = (sensorValue >= LEAK_THRESHOLD_DRY);

  // Leak detection state machine with hysteresis and timing confirmation
  if (!leakAlarm) {
    if (wetCandidate) {
      if (wetStartMs == 0) {
        wetStartMs = now;
      }
      if (now - wetStartMs >= WET_CONFIRM_MS) {
        leakAlarm = true;
        dryStartMs = 0;
        setRelayAlarmState(leakAlarm);
        Serial.println("LEAK DETECTED: relay shutoff activated");
        printState("LEAK", sensorValue);
      }
    } else {
      wetStartMs = 0;
    }
  } else {
    if (dryCandidate) {
      if (dryStartMs == 0) {
        dryStartMs = now;
      }
      if (now - dryStartMs >= DRY_CONFIRM_MS) {
        leakAlarm = false;
        wetStartMs = 0;
        setRelayAlarmState(leakAlarm);
        setBuzzer(false);
        buzzerState = false;
        Serial.println("RESET TO DRY: relay returned to normal");
        printState("DRY", sensorValue);
      }
    } else {
      dryStartMs = 0;
    }
  }

  // Buzzer pattern during active alarm
  if (leakAlarm) {
    if (now - buzzerToggleMs >= (buzzerState ? BUZZER_ON_MS : BUZZER_OFF_MS)) {
      buzzerState = !buzzerState;
      setBuzzer(buzzerState);
      buzzerToggleMs = now;
    }
  } else {
    if (buzzerState) {
      buzzerState = false;
      setBuzzer(false);
    }
  }

  // Periodic status prints
  if (now - lastStatusPrintMs >= STATUS_PRINT_MS) {
    printState(leakAlarm ? "LEAK" : "DRY", sensorValue);
    lastStatusPrintMs = now;
  }

  delay(20);
}

Cómo calibrar el umbral si tu sensor se comporta de forma diferente

Muchas placas económicas de sensor de fuga cambian el valor analógico cuando están mojadas, pero la dirección y el rango pueden variar.
Antes del uso final:

  1. Carga el sketch tal como está.
  2. Abre el monitor serie.
  3. Anota las lecturas analógicas:
  4. completamente seco
  5. ligeramente húmedo
  6. claramente mojado
  7. Ajusta:
  8. LEAK_THRESHOLD_WET
  9. LEAK_THRESHOLD_DRY

Usa una separación entre ellos para crear histéresis, lo que ayuda a evitar conmutaciones rápidas.

Ejemplo de edición de umbral si tu sensor está seco cerca de 850 y mojado cerca de 300:

const int LEAK_THRESHOLD_WET = 450;
const int LEAK_THRESHOLD_DRY = 700;

Comandos de compilación/carga/ejecución

Tabla de comandos

TareaComando
Actualizar índice de placasarduino-cli core update-index
Instalar núcleo AVRarduino-cli core install arduino:avr
Compilar sketcharduino-cli compile --fqbn arduino:avr:uno ./water_leak_shutoff_relay
Cargar sketcharduino-cli upload --fqbn arduino:avr:uno --port <PORT> ./water_leak_shutoff_relay
Lista opcional de placasarduino-cli board list
Monitor serie opcionalarduino-cli monitor --port <PORT> --config 9600

Flujo de trabajo

  1. Crea una carpeta de proyecto llamada water_leak_shutoff_relay.
  2. Guarda el sketch como:
  3. water_leak_shutoff_relay/water_leak_shutoff_relay.ino
  4. Ejecuta los comandos requeridos:
arduino-cli core update-index
arduino-cli core install arduino:avr
arduino-cli compile --fqbn arduino:avr:uno ./water_leak_shutoff_relay
arduino-cli upload --fqbn arduino:avr:uno --port <PORT> ./water_leak_shutoff_relay
  1. Busca tu puerto serie si es necesario:
  2. Ejemplo Linux: /dev/ttyACM0
  3. Ejemplo Windows: COM4
  4. Ejemplo macOS: /dev/cu.usbmodem14101
  5. Abre un monitor serie a 9600 baudios para observar lecturas y cambios de estado.

Validación paso a paso

Usa estos puntos de control en orden. Cada punto de control incluye la observación esperada y la condición de aprobación.

1. Verificación de encendido y estado inactivo

  • Acción:
  • Alimenta el Arduino por USB.
  • Mantén el sensor seco y sin tocar metal ni agua.
  • Observación esperada:
  • El monitor serie imprime texto de inicio.
  • Las líneas de estado repetidas muestran State: DRY.
  • El zumbador permanece en silencio.
  • El relé permanece en su estado normal sin alarma.
  • Condición de aprobación:
  • No ocurre ninguna alarma mientras el sensor permanece seco durante al menos 30 segundos.

2. Captura de línea base de lectura en seco

  • Acción:
  • Observa los valores sensor= impresos durante 10 a 20 segundos.
  • Anota el rango seco típico.
  • Observación esperada:
  • Los valores del sensor se mantienen bastante consistentes con pequeñas fluctuaciones.
  • Condición de aprobación:
  • Las lecturas en seco permanecen claramente en un lado de LEAK_THRESHOLD_DRY.
  • Si no, debes recalibrar los umbrales antes de continuar.

3. Prueba controlada de activación por humedad

  • Acción:
  • Pon unas gotas de agua en el área de detección, o tócala con una toalla de papel húmeda.
  • Observación esperada:
  • El valor del sensor cruza el umbral de mojado.
  • Después de aproximadamente WET_CONFIRM_MS, el monitor serie imprime LEAK DETECTED.
  • El zumbador empieza a pulsar.
  • El relé cambia de estado.
  • Condición de aprobación:
  • La alarma no es instantánea por ruido, pero sí se activa de forma fiable cuando el sensor está realmente mojado.

4. Verificación del comportamiento del relé de corte

  • Acción:
  • Conecta un circuito de prueba seguro de baja tensión a través de los contactos del relé, preferiblemente usando COM + NC para funcionamiento normal con paso y apertura en alarma.
  • Repite la prueba de activación por humedad.
  • Observación esperada:
  • En estado seco, el circuito externo de baja tensión está completo.
  • En estado de fuga, el circuito se interrumpe.
  • Condición de aprobación:
  • Los contactos del relé realizan la función de corte prevista de forma consistente durante al menos 5 ciclos de prueba.

5. Verificación de recuperación en seco y anti-rebote

  • Acción:
  • Retira el agua y seca bien el sensor.
  • Observa si el sistema se restablece solo después de una sequedad estable.
  • Observación esperada:
  • El zumbador continúa hasta que el sensor vuelve por encima de LEAK_THRESHOLD_DRY durante aproximadamente DRY_CONFIRM_MS.
  • Entonces el serie imprime RESET TO DRY.
  • El relé vuelve a su estado normal.
  • Condición de aprobación:
  • No hay clics rápidos del relé ni conmutaciones falsas repetidas durante la transición de secado.

Resolución de problemas

SíntomaCausa probableSolución
El relé parece invertido: el corte ocurre en estado secoLa polaridad de entrada del relé o la elección de contactos es la opuesta a la esperadaCambia RELAY_ACTIVE_LOW, o mueve la carga de NO a NC según corresponda
El sensor siempre indica mojadoUmbral demasiado alto, sensor contaminado o agua ya puenteando las pistasLimpia y seca el sensor, inspecciona las lecturas, baja el umbral de mojado
El sensor nunca se activa con aguaUmbral demasiado bajo, pin equivocado usado o malentendido del tipo de salida del sensorConfirma que AO esté conectado a A0, observa los valores serie cuando esté mojado, ajusta los umbrales
El zumbador no suenaPolaridad incorrecta del zumbador, incompatibilidad entre tipo pasivo/activo o error de cableadoVuelve a comprobar D9 y GND, prueba el zumbador por separado, asegúrate de usar un zumbador compatible con tone()
El relé vibra cerca del umbralValores ruidosos del sensor o histéresis insuficienteAumenta la separación entre los umbrales de mojado y seco; aumenta los tiempos de confirmación
La carga fallaPuerto incorrecto o falta el núcleo AVREjecuta arduino-cli board list, verifica <PORT>, vuelve a ejecutar la instalación del núcleo
La salida serie es ilegibleVelocidad en baudios incorrectaConfigura el monitor a 9600 baudios
El módulo de relé reinicia el Arduino o se comporta de forma extrañaProblema de consumo/ruido o cableado deficienteMantén el cableado corto, asegúrate de tener conexiones sólidas de 5 V/GND, prueba los módulos individualmente

Mejoras

Fiabilidad y calidad de instalación

  • Añade una bandeja para sensor o monta el sensor en el punto más bajo donde el agua se acumularía primero.
  • Usa un segundo sensor de fuga en lógica en paralelo para cobertura de dos zonas, como uno bajo un fregadero y otro detrás de un electrodoméstico.
  • Añade un modo de alarma enclavada para que, una vez detectada una fuga, se requiera un reinicio manual incluso después del secado.
  • Coloca el Arduino y el relé en una pequeña carcasa, con el sensor en un cable que se extienda hasta el área supervisada.

Mejor comportamiento de control

  • Añade un botón de prueba manual para simular una fuga sin usar agua.
  • Añade un botón de silencio que silencie el zumbador pero mantenga el relé en estado de corte.
  • Registra conteos de eventos o marcas de tiempo por serie para que un estudiante pueda documentar ciclos de prueba repetidos.

Integración más segura en el mundo real

  • Usa el relé para controlar solo una válvula de baja tensión o interfaz de control, no cableado desconocido de alta potencia.
  • Sustituye el zumbador piezoeléctrico por un zumbador montado en panel para una alerta audible más clara.
  • Si más adelante se añade una válvula de corte real, elige una válvula que tenga un comportamiento a prueba de fallos claro y una tensión de control compatible.

Lista de verificación final

  • [ ] Usé Arduino UNO R3 (ATmega328P) + sensor de fuga de agua + módulo de relé de 1 canal + zumbador piezoeléctrico.
  • [ ] El sensor está cableado a A0, la entrada del relé a D8, el zumbador a D9.
  • [ ] Conecté todas las tierras juntas.
  • [ ] Guardé el sketch como water_leak_shutoff_relay.ino.
  • [ ] Ejecuté:
  • [ ] arduino-cli core update-index
  • [ ] arduino-cli core install arduino:avr
  • [ ] arduino-cli compile --fqbn arduino:avr:uno ./water_leak_shutoff_relay
  • [ ] arduino-cli upload --fqbn arduino:avr:uno --port <PORT> ./water_leak_shutoff_relay
  • [ ] Verifiqué las lecturas serie en estado seco.
  • [ ] Calibré LEAK_THRESHOLD_WET y LEAK_THRESHOLD_DRY si fue necesario.
  • [ ] Probé la detección de fuga con una pequeña cantidad de agua controlada.
  • [ ] Confirmé que el patrón del zumbador se activa durante una fuga.
  • [ ] Confirmé que el relé interrumpe la ruta de control de baja tensión prevista durante una fuga.
  • [ ] Sequé el sensor y verifiqué una recuperación limpia al estado normal.
  • [ ] Entiendo que esto es un prototipo educativo, no un sistema de seguridad certificado.

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Quiz rápido

Pregunta 1: ¿Qué placa microcontroladora se utiliza en el proyecto descrito?




Pregunta 2: ¿Qué sucede cuando el sistema detecta agua?




Pregunta 3: ¿Cuál es el tiempo aproximado de conmutación del relé tras detectar agua?




Pregunta 4: ¿Qué tipo de alarma local incluye el prototipo?




Pregunta 5: ¿Para qué caso de uso se menciona la protección bajo fregadero?




Pregunta 6: ¿Dónde se recomienda colocar el sensor en el caso de la lavadora?




Pregunta 7: ¿Qué aprende el usuario en el prototipo educativo de automatización?




Pregunta 8: ¿Qué módulo de relé se menciona en la descripción del proyecto?




Pregunta 9: ¿En qué ubicación se sugiere detectar fugas tempranas para una respuesta rápida de corte?




Pregunta 10: ¿Qué tipo de circuito se busca cortar cuando se detecta agua?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:
Scroll al inicio