Sensores de lluvia para Arduino

En este art铆culo aprenderemos a usar el sensor de lluvia con Arduino. Estos sensores se denominan a menudo de forma diferente: de lluvia, de agua, de nieve, pluvi贸metro, etc.

Si bien hay varios modelos, siempre se trata del mismo sensor, una placa con un circuito impreso en forma de serpentina y dos conectores. El sensor se conecta muy聽 f谩cilmente al Arduino, el c贸digo para trabajar con estos sensores es simple y el son de bajo coste, lo que los hace ideales para proyectos sencillos en Arduino Uno, Mega, Nano.

C贸mo funciona el sensor de lluvia arduino

El sensor de lluvia en los proyectos de Arduino te permite detectar y responder a las gotas de humedad, por ejemplo activando una alarma. Estos sistemas se utilizan mucho en dom贸tica, la industria automotriz, los sistemas hogare帽os de riego y en otras 谩reas de nuestra vida cotidiana. En este art铆culo veremos el trabajo con el m贸dulo ya preparado, que puede adquirirse f谩cilmente en cualquier tienda online especializada.

M贸dulo sensor de lluvia

Como dijimos anteriormente hay varios modelos. Lo m谩s habitual es conseguir en las tiendas alguno de estos 3 modelos de sensor de lluvia para Aruino: FC-37, YL-83 y MH-RD. Basicamente son iguales, s贸lo var铆an unos mil铆metros sus dimensiones y sus colores, pero trabajan exactamente igual.

El m贸dulo del sensor consta de dos partes:

  • Placa PCB con superficie niquelada, con resistencia a la oxidaci贸n y conductividad el茅ctrica. De hecho, el sensor es una simple resistencia variable, cerrada por el agua en diferentes lugares, que causa un cambio en la resistencia.
  • La segunda parte del sensor es un comparador dual (normalmente LM393, pero son posibles las variantes LM293 y LM193). Su tarea principal es convertir el valor del sensor en una se帽al anal贸gica de 0 a 5 voltios.
  • Tambi茅n se puede conseguir el sensor con un rel茅 de 12 voltios en lugar del comparador dual. En este caso se podr铆a utilizar directamente sin intervenci贸n de una placa arduino, abriendo o cerrando el rele ante la presencia de agua.

El sensor est谩 alimentado por 5V, que se puede arrancar f谩cilmente desde cualquier placa Arduino. Normalmente, el m贸dulo sensor tiene dos salidas:

  • Anal贸gico. El valor recibido por el controlador oscilar谩 entre 0 y 1023. Donde 0 – todo est谩 inundado o hay un aguacero, el sensor est谩 muy h煤medo, 1023 – tiempo seco, el sensor est谩 seco (en algunos sensores hay valores opuestos, 1023 – humedad m谩xima, 0 – sequedad m谩xima).
  • Digital. Salida de alto (5V) o bajo voltaje si se excede alg煤n umbral. El nivel de umbral es regulado por una resistencia de corte.

Conexi贸n del detector de lluvia al arduino

Para conectar el sensor al Arduino necesitar谩s una placa (UNO, Mega, Nano o cualquier otra) y el propio sensor. Si deseas comprobar la intensidad de la precipitaci贸n, se recomienda colocar el sensor en 谩ngulo y no en posici贸n horizontal, para que las gotas acumuladas fluyan hacia abajo. sensor de lluvia arduino conexion

Diagrama de conexi贸n del m贸dulo del sensor de lluvia al arduino:

  • VCC (power input) – debe ser el mismo para el circuito Arduino conectado en voltaje y corriente. Es decir, en este caso, 5V;
  • GND – conexi贸n a tierra;
  • AO – salida anal贸gica;
  • DO – salida digital.

La salida anal贸gica se conecta a un pin anal贸gico de microcontrolador, por ejemplo al A1. La salida digital se conecta a uno de los pines digitales. El voltaje puede ser suministrado desde la salida de 5V de la placa Arduino y la tierra est谩 conectada a GND.

[su_note]Al conectar los sensores de lluvia en proyectos reales, es necesario proteger la parte electr贸nica del m贸dulo de la entrada de humedad. Tambi茅n se deben proteger los conectores del sensor con aislamatic, silicona o algo similar.[/su_note]

Si tu proyecto trabaja con tensiones el茅ctricas de 110v o 220v es muy importante aislar ambos circuitos para evitar descargas el茅ctricas. Si no tienes nociones b谩sicas de electricidad te recomendamos estos cursos de electricidad que te servir谩n para trabajar en Arduino con tensiones altas.

Sensores de lluvia y Arduino: Ejemplos

Ejemplo de lectura del sensor

En este esquema simplemente leemos los valores del sensor y los mostramos en el monitor del puerto serie. Realice un experimento y compruebe c贸mo cambia el valor cuando toque el sensor con las manos h煤medas o secas. Puede mojar el sensor con una rociador -simulando lluvia- y luego secarlo con un pa帽o seco.

#define PIN_ANALOG_RAIN_SENSOR A1  // Entrada anal贸gica para la se帽al del sensor lluvia
#define PIN_DIGITAL_RAIN_SENSOR 5  // Entrada digital para la se帽al del sensor de lluvia
 
void setup(){
   Serial.begin(9600);
}
void loop(){
   int sensorValue = analogRead(PIN_ANALOG_RAIN_SENSOR); // Leer datos del puerto anal贸gico
   Serial.print("Analog value: "); 
   Serial.println(sensorValue); // Salida de valor anal贸gico al monitor de puerto
 
   sensorValue = digitalRead(PIN_DIGITAL_RAIN_SENSOR); // Leer datos del puerto digital
   Serial.print("Digital value: "); 
   Serial.println(sensorValue); // Salida del valor digital al monitor del puerto
 
   delay(1000); // Retardo entre mediciones
}

Ejemplo de un proyecto de alarma de lluvia

Considere un ejemplo usando una alarma audible como un zumbador conectado en la salida digital D6. Si lo desea, puede conectar un rel茅 en lugar de una alarma y realizar varias operaciones con la apertura de la red. En el esquema transferiremos los datos recibidos al monitor de puerto a trav茅s de la interfaz UART.

Esquema para proyecto con alarma

El siguiente es un c贸digo de prueba que activa la se帽al ac煤stica en la salida digital 6 mencionada anteriormente, con un retardo de tiempo, para evitar falsas alarmas en caso de contacto accidental del agua con el sensor. El trabajo se implementa a trav茅s de una variable, que se actualiza cada segundo y act煤a como un umbral – curCounter. La alarma se activa cuando el valor transmitido desde el sensor es inferior a 300. El retardo entre la detecci贸n de humedad y la se帽al de sonido es de poco m谩s de 30 segundos.

#define PIN_RAIN_SENSOR A1  // Entrada anal贸gica para la se帽al del sensor de lluvia
#define PIN_ALERT 6         // Salida digital para se帽alizaci贸n
#define MAX_COUNTER 30      // Valor umbral para el contador
#define ALERT_LEVEL 300     // Valor umbral para contador
 
int curCounter= 0; // Contador "Statistics", que aumenta en 1 cada segundo tras la activaci贸n del sensor
 
void setup(){
   Serial.begin(9600);
   pinMode(PIN_ALERT, OUTPUT);
   pinMode(PIN_RAIN_SENSOR, INPUT); // No tiene que especificarlo porque es el valor por defecto
}
void loop(){
   int sensorValue = analogRead(PIN_RAIN_SENSOR);
   Serial.println(sensorValue); // Valor de salida al monitor de puerto
   delay(300); // short delay 
 
   // Si hay motivos suficientes para activar una alarma
   if (curCounter >= MAX_COUNTER){
      digitalWrite(PIN_ALERT, HIGH);  // Alarma activada
      curCounter = MAX_COUNTER;       // Protecci贸n contra desbordamiento variable
   }
 
   // Determinar el nivel de humedad
   if (sensorValue < ALERT_LEVEL){
      // Una vez m谩s, aseg煤rate de que todo est茅 h煤medo, aumenta el contador
      curCounter++;                 
   }else { 
      // La intensidad de las precipitaciones no supera el umbral
      digitalWrite(PIN_ALERT, LOW); // Desactivar alarma
      curCounter = 0; // Contador a cero
   }
   
   delay(1000); // Retardo entre mediciones
}

En resumen

Los sensores de lluvia se pueden utilizar en un arduino para crear dispositivos que respondan a la aparici贸n de humedad en forma de gotas. Entre las ventajas del m贸dulo podemos mencionar su sencillez, comodidad y econom铆a.

Es muy f谩cil conectar el sensor – con la ayuda de salidas anal贸gicas o digitales. Para obtener el valor en el croquis, se utiliza la funci贸n est谩ndar analogRead (o digitalRead para pin digital). Con estos valores se puede activar una alarma u otros dispositivos externos por medio de un rel茅.

Seguramente te interesen otros sensores para usar en tus proyectos de Arduino. Puedes ver mas tutoriales con ejemplos de uso de algunos de ellos: