En este artículo aprenderás a utilizar un sensor para medir la humedad del suelo con la placa Arduino. Podrás utilizarlo para mantener un control adecuado de la humedad en nuestras plantas, y con él realizar un sistema de riego automático.
Tabla de Contenidos
El sensor de humedad de suelo (higrómetro)
El sensor que utilizaremos está compuesto por una sonda de dos electrodos y un módulo convertidor. Existen varios modelos de este sensor en el mercado, los que yo utilizaré en este ejemplo son los electrodos marcados con HW-080 y el convertidor HW-103. También puedes encontrarlo con el modelo YL-69. Es de los sensores más comunes para humedad de suelo que existen y son muy económicos, alrededor de los 30 pesos mexicanos (1.25 USD).
Gracias al convertidor, el sensor nos puede entregar dos tipos de señales: una digital o una analógica. La salida digital servirá para indicar “todo” o “nada”; es decir, mucha humedad o nada de humedad, y para elegir el umbral de esta decisión, el convertidor trae un pequeño potenciómetro. Como a nosotros nos gusta la precisión, utilizaremos la salida analógica, que nos entregará un valor de voltaje entre 0 y 5 V dependiendo de la cantidad de humedad detectada por el electrodo.
Como conectar el sensor de humedad de suelo a la placa Arduino
La conexión con nuestra placa Arduino es muy simple, si te fijas, el convertidor tiene dos lados, uno con cuatro pines y otro con dos. El lado de cuatro pines va hacia nuestra placa Arduino, y el lado de dos pines va hacia los electrodos. El significado de los pines se muestra a continuación.
Tenemos que conectar el pin VCC a la alimentación de 5 V, que en este caso puede ser de la misma placa Arduino (aunque puede ser de otra fuente, recordando conectar todas las tierras a un mismo nodo). El pin GND irá conectado a la terminar de tierra de la placa. Y si elegimos el modo de salida analógica, utilizaremos la salida nombrada como A0, esta la conectaremos a alguna de las entradas analógicas de la placa Arduino, como se muestra a continuación.
¿Cómo funciona el sensor de humedad de suelo?
Si estamos utilizando el sensor en modo analógico, la placa Arduino detectará el nivel de voltaje entregado por este, y lo convertirá en un número equivalente a la cantidad de humedad detectada entre 0 y 1023. Cuando el sensor detecta nada de humedad (seco) entrega un valor de 1023 y cuando detecta un valor de alta humedad entrega un valor de 0 (o cercano a 0).
Imaginen una recta entre 0 y 1023, entre más cercano estés del 1023 el sensor está más seco, entre más cercano al 0 el sensor está más húmedo.
Relación entre la cantidad de humedad y el valor de salida del sensor.
Cuando utilizamos la salida digital (D0), con el potenciómetro ajustamos el umbral de decisión, como si moviéramos una referencia dentro de la recta anterior. Si la lectura del sensor está por arriba de la referencia, entregará una salida “HIGH”, si está por debajo entregará una salida “LOW”.
¿Cuánta humedad necesita mi planta?
Es realmente subjetivo utilizar este sensor para mantener un monitoreo exacto de la humedad en el suelo (o en la tierra de una maceta), ya que la humedad se distribuye de manera distinta en la tierra, y dependiendo de donde esté colocado el sensor, tendremos una lectura u otra. Además dependerá de que tipo de planta es, cuanta humedad necesita, y si está a la sombra o al sol, etcétera.
Yo te recomiendo que utilices este sensor solamente como una referencia, y “calibres” la cantidad de agua con respecto a la lectura del sensor, para que puedas tomar una decisión de con que valor de lectura es necesario por ejemplo activar una bomba de agua para regar. Este sensor es perfecto para el simple hecho de mantener húmedas tus plantas y que no se te sequen por que se te olvidó regarlas 😉
¿Te está gustando este artículo?
Te invito a descargar totalmente gratis la Guía de Inicio en Arduino
Encontrarás mucha información extra, conceptos y sobre todo podrás llevarla contigo en todo momento
Una consideración técnica con el sensor de humedad de suelo
Este sensor mantiene un voltaje entre los dos electrodos, si te fijas, los electrodos son básicamente una placa donde circulará una corriente eléctrica, dependiendo de la humedad entre los electrodos, existirá un mayor o menor voltaje. Siempre que el sensor esté realizando una medición, una corriente eléctrica estará circulando entre las terminales, por lo que el contacto de los electrodos con la tierra húmeda, creará óxido con el tiempo, por lo que el electrodo irá degradándose. Te recomiendo que le des energía al sensor solamente cuando vas a realizar una lectura, no es necesario que cada 5 segundos leas la cantidad de humedad del suelo, por ejemplo, podrías realizar una medición cada hora. Para activar o desactivar la alimentación del sensor, puedes utilizar un relevador como lo vimos acá. Con esto incrementaremos la vida útil de nuestro sensor, especialmente del electrodo. Existe otro sensor de humedad de suelo que tiene una mayor vida útil, ya que funciona con un principio un poco distinto, es el sensor capacitivo de humedad de suelo
Programa para utilizar el sensor de humedad de suelo con Arduino
El programa para hacer funcionar el sensor es realmente simple. Primero conectaremos nuestro sensor con la placa Arduino como lo mostramos en una imagen anterior. Utilizaremos la salida analógica (A0) y lo conectaremos a la entrada analógica de nuestro Arduino (A0). El programa quedaría como sigue:
1 2 3 4 5 6 7 8 9 |
int SensorPin = A0; void setup() { Serial.begin(9600); } void loop() { int humedad = analogRead(SensorPin); Serial.println(humedad); delay(1000); } |
Declaramos una entrada llamada SensorPin
para la entrada analógica A0. Inicializamos el puerto serie, para poder visualizar las lecturas en el Monitor Serie. El programa básicamente realiza constantemente una lectura del sensor y posteriormente lo escribe en el puerto Serie. Agregamos un retardo, en este caso de 1 segundo, y luego esto se repite.
Al implementar este código deberemos ver algo como esto:
Como puedes observar, el sensor envía el dato de lectura del electrodo, en ese momento el electrodo estaba en el aire, por lo que nos entrega la lectura máxima (1023) indicando un ambiente seco.
Fácilmente podrías convertir los valores numéricos en valores porcentuales utilizando la función map()
.
Utilizando el sensor para encender un LED
En este ejemplo configuraremos una salida digital para encender o apagar un LED de acuerdo a la lectura obtenida. Con esto, simularemos por ejemplo que se enciende una bomba de agua, o cualquier otro dispositivo para realizar el control que tú desees.
El código quedaría como sigue.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
int SensorPin = A0; void setup() { pinMode(7,OUTPUT); Serial.begin(9600); } void loop() { int humedad = analogRead(SensorPin); Serial.println(humedad); if(humedad>=460) { digitalWrite(7,LOW); } else { digitalWrite(7,HIGH); } delay(1000); } |
Si observas, se decidió utilizar como parámetro de referencia cuando la lectura de la humedad fuera igual o mayor a 460, este nivel lo puedes seleccionar a como mejor te convenga, en este caso utilicé una pequeña maceta y le fui agregando agua hasta obtener el valor correspondiente a la humedad que quería lograr. En cuanto el sensor detecta un valor igual o mayor a 460 el LED se manda a encender (o a apagar, dependiendo de la lógica de tu actuador), cualquier otro valor por debajo de la referencia, el LED se apagaría. Esto se traduciría en si se detecta una cantidad de humedad igual o menor a la seleccionada, el LED se enciende; si se detecta un nivel de humedad mayor, el LED se apaga.
Finalmente nos quedó como se muestra a continuación:
¿Te gustaría ver un sistema de riego utilizando este sensor?
Que te ha parecido esta aplicación, si lo implementas compárteme tu proyecto, puedes enviarme una imagen y puedes enviarme cualquier comentario o duda que tengas al respecto. Me encantaría que me platicaras en donde utilizarás el sensor.
Recuerda visitar nuestras redes sociales
estaria bueno q fuera automatico con bomba sumergible, y regara u nos segundos y esperara, para no hacer charco y no podrir la planta, y si no hubiese humedad en un minuto, q te avise con un buzer, por si te olvidaras de la planta.
Hola Fer, muchas gracias por tu comentario! Te invito a revisar el siguiente artículo donde expliqué como hacer un datalogger con el sistema de riego. En este artículo utilizamos una bomba sumergible que riega durante unos segundos y vuelve a revisar la humedad para decidir si vuelve a regar o no. Solamente faltaría agregar el buzzer Próximamente haré un video para utilizar el buzzer de distintas maneras
Muy bien explicado, estoy por implementar un sistema de riego, cuando lo tenga te lo envío
Hola Dante, estaré encantado de ver tus resultados! Saludos!
Pues al parecer tienes mucha razón….. después de un mes poniendo mi sistema de riego en marcha, con un sistema de luces, bombas peristalticas……. va y resulta que en 2 días el sensor … el mismo que tienes chino en la primera foto, le sale una corrosión, y al lavarlo no queda nada de nada… nada metálico, por lo que ha dejado de funcionar, le daré energía unos segundos antes con un relee y se la quitare unos segundos luego, para evitar que este funcionando todo el dia como una pila … o comprare uno capacitivo….. Mi gozo en un pozo. Con lo bien que tenia montado el sistema que me metía los datos en una gráfica para poder consultarlo desde la web….
Hola Ignacio, me da gusto que tu proyecto esté marchando bien! Como lo mencionas, este tipo de sensores se va a oxidar pronto, es muy buena la idea que tienes de colocarle un relevador para energizarlo antes de cada lectura. Lo mejor sería adquirir uno capacitivo, y de igual manera utilizar el relevador, ya que esto te ahorrará energía, tiempo de vida, etc. Ojalá puedas compartirnos una imagen de tu proyecto, suena que funciona muy bien! Saludos!
Hola! Gracias por tu aporte. Te felicito por compartirlo. Pude tener una referencia mas clara sobre los rangos de medición, ya que cuando te los venden, ni idea tienen del rango.
Pude construir el mio hoy y reemplace los leds con un relej y una electrovalvula para el goteo. Asi q agradecio por tu aporte.
¡Muchas gracias por tu comentario! Si gustas enviarnos una foto de tu resultado (o video) con gusto lo puedo compartir con toda la comunidad :). Saludos!
Hola, ABRAHAMG. Magnífico tut tuto, pero tengo problemas para colocarlo en una placa D1-Mini Pro. Es posible? Cómo lo hago? Porqué lo instalo en esta placa, pero no hay manera que funcione (evidentemente seleccionando esta placa en la IDE de Arduino.)
Gracias por la atención y la ayuda. Salu2
Hola Jaume, gracias por tu pregunta, la verdad no he utilizado la D1-Mini-Pro, pero creo que solamente deberás ajustar los nombres de los pines para asegurarte que coincidan con los de tu placa. Espero que lo puedas solucionar, y si puedes, nos confirmes cómo lo lograste. Saludos!
Hola! Podrías ayudarme con la conexión de leds al circuito? Se que se hace parecido a la última foto, pero no sé hacerlo 🙁
Hola Karime, puedes enviarme cuál es la duda para apoyarte. Saludos!
yo tengo un pequeño problema si me podrian ayudar
Hola Javier, puedes escribir aquí mismo tu duda. Saludos!
un concepto de aplicación de medidor de humedad con Arduino uno R3 me podria ayudar con un articulo o libro
holaa, me encanto tu video pero podrias explicar mejor como se conecta la luz con el sensor de humedad soy principiante:(
Hola Javiera, gracias por tu comentario. No entiendo bien la pregunta de conectar la luz… ¿podrías explicarme más?