Sensor de humedad del suelo
Smart Plant: Sensor de humedad de suelo..
El año pasado comencé a ocupar mi carpa de cultivo indoor para plantar vegetales de consumo y de paso implementar un sistema de control usando IoT. Para esto me incliné por arduino por la facilidad de programación y aprendizaje en la creación de prototipos. El sistema funciona muy bien pero de a poco he ido iterando componentes y mejorando el sistema para llegar a algo que me deje tranquilo. Advertencia, estoy recién comenzando.
En este post no voy a describir todo el proceso ni cada una de las partes que estoy ocupando, sino que me voy a enfocar en un componente particular, el sensor de humedad de suelo.
Sensor de humedad resistivo.
Existen variedad de sensores de humedad de suelo en el mercado, capacitivos y resistivos. En mi caso, por simpleza y costo, decidí utilizar el sensor de humedad de suelo resistivo. Estos son extremadamente baratos, es posible comprarlos por aliexpress y son muy fiables dado que funcionan midiendo la capacidad de conducción de electricidad del medio en el que se insertan. En fácil, son dos fierros que miden que tanta corriente pasa por el suelo donde están enterrados.
En aliexpress un sensor de humedad resistivo cuesta alrededor de USD$1.5 dolares, incluso algunos se pueden encontrar por menos de USD$1.
El problema de estos sensores, es que su durabilidad es extremdamente limitada. Luego de instalar mi sensor y tenerlo instalado en mi huerta por 10 días, este comenzó a entregar lecturas extrañas. Al revisarlo, encontré que estaba corroído y que pronto iba a estar inutilizable. Al leer un poco por la red, me llamó la atención que siendo uno de los sensores mayormente utilizados, muy pocos reportan su corta durabilidad.
Solución DIY
Luego de buscar un poco, alguién en un foro sugería la utilización de grafito y la fabricación propia para tener un sensor de alta durabilidad. El concepto detrás del sensor y corta duración es el proceso químico que hay detrás de la forma de sensar la húmedad. Al funcionar el sensor en la tierra y en humedad, midiendo constantemente la cantidad de corriente que se transmite por el suelo, las capas de metal que componen el sensor tienden a la corrosión. Para medios húmedos como es el caso de plantas de macetero, la corrosión es muy rápida, es por esto su corta utilidad.
Dado esto, es que fabriqué mi propia versión del sensor de húmedad. Utilicé lapices gráfito comprados en el supermercado, con un groso del grafito de 3 mm. El resultado fue el siguiente:
El costo de fabricar este sensor es casi nulo. Los 3 lapices cuestan casi USD$3 y utilicé sólo 1. Para los cables utilicé cables dupont los cuales deben costar USD$0.1 sino menos. Y teoricamente, la durabilidad del sensor es ilimitada ya que el grafito no se corroe como el metal.
Mejorando la solución DYI.
Lamentablemente la desición de utilizar cables dupont para los cables de alimentación del sensor no fue buena. A los 15 días aprox y por excesiva manipulación de mi parte se cortó uno de los cables dupont.
Esto dió pié a mejorar los cables de alimentación. Fue así que generé una nueva iteración del componente, esta vez, utilizando cable de red CAT5E. El resultado fue el siguiente:
Veremos si esta versión dura más tiempo que la anterior.
En el intertanto, la huerta ya está comenzando a entregar frutos.
Calibración del Sensor.
La calibración del sensor es otra historia. Si se quiere ser detallado, hay un protocolo estricto a seguir.
Por ahora me encuentro secando tierra para calibrar mi sensor, pero eso ya da para otro post.
A modo de registro, dejo el código que estoy ocupando la calibración de este tipo de sensores.
/*
Script for the calibration of Soil Moisture Sensor
Last modified: 01/07/2025
Working with Arduino Uno R4 wifi
Sensors used: Custom Soil Moisture sensor made out of lead from a pencil.
Any resistive soil moisture sensor can be used. Before the lead pencil one
I used one from aliexpress:
https://www.aliexpress.com/item/1005006344637182.html
*/
#define moistSensorPin A0 // Pin for moisture sensor
/*
* Soil Moisture Sensor:
* ----------------------
* Output of sensor is either 0 (water) or 1023 (air) by theory.
*
* Must be calibrated with this script to be able to read extreme conditions
* and validate that 0 is water and 1023 is air.
*
* Calibration with small pot with soil
*
* 256 = full in water
* 1021 = full in empty air
*/
// Setting up the script
void setup()
{
Serial.begin(9600);
}
// Recurrent loop of the script
void loop()
{
// Variable to store ADC value
// ADC varies based on voltage( 0 to 1023 )
int moistureLevel;
// analogRead function returns the integer 10 bit integer (0 to 1023)
// Read pin A0 where moisture sensor is connected
moistureLevel = analogRead(moistSensorPin);
// Print text in serial monitor
Serial.println("Moisture Value: ");
// Print analog value in serial monitor
Serial.println(moistureLevel);
//Set a delay of 2 seconds to space the reading
delay(5000);
}