Sistema IoT de Monitoreo de Compostaje Inteligente con ESP32 y Sensores de Temperatura y Humedad
Este tutorial práctico explica paso a paso cómo automatizar y supervisar el proceso de compostaje orgánico mediante el uso de un microcontrolador ESP32 y sensores ambientales para optimizar la descomposición.
🌿 Introducción al Compostaje Inteligente con IoT
El compostaje es un proceso biológico aeróbico mediante el cual los microorganismos descomponen la materia orgánica para convertirla en un abono rico en nutrientes. Sin embargo, para que este proceso sea eficiente, es necesario mantener un control riguroso de variables críticas como la temperatura y la humedad. Si la temperatura sube demasiado o baja en exceso, la actividad microbiana se detiene. Lo mismo ocurre si el nivel de humedad no es el adecuado.
En este tutorial completo, aprenderás a construir un sistema IoT avanzado utilizando un módulo ESP32 y sensores especializados para supervisar tu pila de compostaje en tiempo real desde cualquier lugar del mundo. Este proyecto combina la electrónica de bajo costo con el poder del internet de las cosas.
Intermedio IoT ESP32
🛠️ Materiales y Componentes Necesarios
Antes de comenzar con el ensamblaje, asegúrate de reunir todos los componentes electrónicos y herramientas de trabajo necesarios para el proyecto.
| Componente | Descripción | Cantidad |
|---|---|---|
| --- | --- | --- |
| ESP32 NodeMCU | Microcontrolador con WiFi y Bluetooth integrado | 1 |
| Sensor DS18B20 | Sensor de temperatura sumergible con carcasa de acero inoxidable | 1 |
| --- | --- | --- |
| Resistencia 4.7kΩ | Resistencia de pull-up para el bus OneWire del DS18B20 | 1 |
| Sensor DHT22 / AM2302 | Sensor digital de temperatura y humedad ambiental | 1 |
| --- | --- | --- |
| Protoboard y Cables | Cables de conexión tipo Dupont (macho-macho y macho-hembra) | 1 set |
| Caja Estanca IP65 | Carcasa de protección para la electrónica frente a la intemperie | 1 |
| --- | --- | --- |
| Fuente de Alimentación | Adaptador de corriente USB de 5V o panel solar con batería 18650 | 1 |
📐 Arquitectura del Sistema IoT
Para entender cómo se comunican los dispositivos en este proyecto, es útil visualizar el flujo de datos desde los sensores hasta la interfaz de usuario final.
El flujo de trabajo es el siguiente:
🔌 Conexiones de Hardware y Diagrama Eléctrico
El montaje del circuito debe realizarse con precaución para evitar cortocircuitos. A continuación se detallan las conexiones que debes realizar entre el ESP32 y los sensores.
Conexión del sensor DS18B20 (Temperatura interna)
El sensor DS18B20 utiliza el protocolo OneWire. Sus tres pines son:
- Rojo (VCC): Conectarse a 3.3V del ESP32.
- Negro o Blanco (GND): Conectarse a GND del ESP32.
- Amarillo o Azul (Datos): Conectarse al pin digital GPIO 4 del ESP32. Además, debes colocar una resistencia de 4.7kΩ entre el pin de datos y VCC.
Conexión del sensor DHT22 (Humedad y temperatura ambiental)
El sensor DHT22 cuenta con cuatro pines (o tres si viene en módulo con placa)
- VCC: Conectarse a 3.3V o 5V (preferiblemente 3.3V).
- GND: Conectarse a GND.
- DATA: Conectarse al pin digital GPIO 15 del ESP32.
💻 Programación del ESP32
Para programar el ESP32 utilizaremos el entorno de desarrollo Arduino IDE. Asegúrate de tener instaladas las librerías necesarias para el manejo del ESP32, el protocolo MQTT (como PubSubClient), y las librerías de los sensores (DHT sensor library y OneWire).
A continuación se muestra el código completo optimizado para conectar tu ESP32, leer los sensores y enviar la información mediante MQTT.
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Configuración de Red WiFi
const char* ssid = "TU_SSID_WIFI";
const char* password = "TU_CONTRASEÑA_WIFI";
// Configuración del Servidor MQTT
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);
// Definición de Pines y Sensores
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE (50)
char msg[MSG_BUFFER_SIZE];
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Conectando a ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi conectado");
Serial.println("Dirección IP: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
while (!client.connected()) {
Serial.print("Intentando conexión MQTT...");
String clientId = "ESP32CompostClient-";
clientId += String(random(0xffff), HEX);
if (client.connect(clientId.c_str())) {
Serial.println("conectado");
} else {
Serial.print("falló, rc=");
Serial.print(client.state());
Serial.println(" reintentando en 5 segundos");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
dht.begin();
sensors.begin();
setup_wifi();
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
unsigned long now = millis();
if (now - lastMsg > 10000) {
lastMsg = now;
// Lectura de Sensores
sensors.requestTemperatures();
float tempCompost = sensors.getTempCByIndex(0);
float humAmb = dht.readHumidity();
float tempAmb = dht.readTemperature();
if (isnan(humAmb) || isnan(tempAmb) || tempCompost == DEVICE_DISCONNECTED_C) {
Serial.println("Error al leer los sensores!");
return;
}
// Publicar datos MQTT
snprintf (msg, MSG_BUFFER_SIZE, "%.2f", tempCompost);
client.publish("compost/sensor/temp_interna", msg);
snprintf (msg, MSG_BUFFER_SIZE, "%.2f", humAmb);
client.publish("compost/sensor/humedad_amb", msg);
snprintf (msg, MSG_BUFFER_SIZE, "%.2f", tempAmb);
client.publish("compost/sensor/temp_amb", msg);
Serial.println("Datos enviados al broker MQTT exitosamente.");
}
}
TU_SSID_WIFI y TU_CONTRASEÑA_WIFI con las credenciales de tu red inalámbrica antes de compilar y cargar el código en la placa ESP32.
📊 Configuración del Panel de Control (Dashboard)
Una vez que el dispositivo está enviando datos al Broker MQTT, necesitas visualizarlos de forma gráfica. Puedes utilizar plataformas gratuitas o de código abierto como Node-RED, Blynk, o ThingsBoard.
Fases ideales del compostaje a monitorizar:
- Fase Mesófila (15°C - 45°C): Inicio del proceso, proliferación de bacterias que descomponen azúcares.
- Fase Termófila (45°C - 65°C): Temperatura óptima donde se eliminan patógenos y semillas de malas hierbas.
- Fase de Enfriamiento y Maduración: La temperatura desciende y se estabiliza cerca de la temperatura ambiente.
❓ Preguntas Frecuentes (FAQ)
¿Qué pasa si el sensor DS18B20 se moja completamente con el líquido del compost?
El sensor DS18B20 con carcasa de acero inoxidable está diseñado para ser sumergible y resistente a la corrosión moderada. Sin embargo, se recomienda revisar periódicamente el sellado de silicona si se utiliza en entornos muy ácidos.¿Puedo alimentar este sistema con energía solar?
Sí, puedes conectar un panel solar de 5V junto con un módulo de carga TP4056 y una batería recargable de Ion de Litio (18650) para lograr un funcionamiento completamente autónomo en el jardín.🎉 Conclusión
Has construido con éxito un sistema IoT completo para supervisar las condiciones físicas de tu pila de compostaje. Con esta herramienta podrás tomar decisiones informadas sobre cuándo voltear el abono o cuándo añadir agua, acelerando significativamente el proceso de descomposición y obteniendo un humus de excelente calidad.
Tutoriales relacionados
- Control Inteligente de Niveles en Depósitos de Agua con ESP32 y Blynk 💧intermediate20 min
- Domótica Personalizada: Control de Acceso con Reconocimiento Facial y ESP32-CAMintermediate30 min
- Sistema IoT de Detección Temprana de Fugas de Agua con ESP32 y Notificaciones Pushintermediate20 min
- Sistema IoT de Mitigación de Humedad en Armarios Inteligentes con ESP32intermediate8 min
- Control Inteligente de Acceso a Puertas con RFID y Notificaciones en Tiempo Real usando ESP32intermediate20 min
Comentarios (0)
Aún no hay comentarios. ¡Sé el primero!