Tutorial ESP32 35/55 - Monitor de plantas, suelo, temperatura y luz | Kit de aprendizaje IoT ESP32 de SunFounder
En este tutorial, construiremos un monitor de plantas utilizando el microcontrolador ESP32 del Kit de Aprendizaje de IoT de SunFounder. Este proyecto combina varios componentes para monitorear la humedad del suelo, la temperatura, la humedad y los niveles de luz. Al final de esta guía, tendrás un sistema completamente funcional que puede gestionar y mostrar estos parámetros críticos para el cuidado de las plantas. Para una explicación visual detallada, asegúrate de revisar el video (en el video a las 00:00).

Hardware Explicado
Los componentes principales utilizados en este proyecto incluyen el microcontrolador ESP32, el sensor DHT11, el sensor de humedad del suelo, el resistor dependiente de la luz (LDR) y un LCD para mostrar datos. El ESP32 sirve como el cerebro de la configuración, manejando el procesamiento de datos y las tareas de control. Cuenta con Wi-Fi y Bluetooth integrados, proporcionando opciones de conectividad para el monitoreo remoto.
El sensor DHT11 mide la temperatura y la humedad, mientras que el sensor de humedad del suelo detecta los niveles de humedad en el suelo. El LDR mide la intensidad de la luz ambiente, lo que permite obtener información sobre las condiciones de iluminación de la planta. Cada componente desempeña un papel crucial en garantizar la salud de la planta al proporcionar datos en tiempo real.
Detalles de la hoja de datos
| Fabricante | SunFounder |
|---|---|
| Número de pieza | DHT11 |
| Voltaje de lógica/entrada/salida | 3.3 V |
| Tensión de alimentación | 5 V |
| Corriente de salida (por canal) | 20 mA |
| Corriente de pico (por canal) | 50 mA |
| Orientación sobre la frecuencia PWM | N/A |
| Umbrales de lógica de entrada | 0.3 VCC (bajo), 0.7 VCC (alto) |
| Caída de tensión / RDS(on)/ saturación | N/A |
| Límites térmicos | 0°C a 50°C |
| Paquete | DIP |
| Notas / variantes | Compatible con DHT22 |
- Asegure niveles de voltage adecuados para cada componente (5V para el controlador del motor, 3.3V para los sensores).
- Utiliza resistencias de pull-down para los botones pulsadores para evitar entradas flotantes.
- Mantén el cableado ordenado para evitar confusiones y posibles cortocircuitos.
- Verifica las conexiones antes de encender el circuito para prevenir daños.
- Verifica el cableado del DHT11, ya que es sensible a las conexiones incorrectas.
Instrucciones de cableado

Para cablear los componentes, comienza conectando las líneas de alimentación y tierra. El ESP32 debe ser alimentado con una batería de litio, conectando el terminal positivo a la línea VCC y la tierra a la línea GND en la placa de pruebas. El pin de datos del sensor DHT11 se conecta aPIN 13, mientras su VCC va a la línea de 3.3V y GND a tierra. El sensor de humedad del suelo se conecta de manera similar: su pin de señal aPIN 14, VCC a 3.3V, y GND a tierra.
Para el LDR, conecta un pin a la línea de 3.3V y el otro aPIN 35, con una resistencia de 10k ohmios conectada desde el LDR a tierra. La pantalla LCD se conecta a la línea de 5V para la alimentación y utilizaSDAySCLpines conectados aPIN 21yPIN 22, respectivamente. Finalmente, conecte el botón pulsador aPIN 32con la resistencia de pull-down conectada a tierra, asegurando que lea bajo cuando no se presiona y alto cuando se presiona.
Ejemplos de código y tutoriales
El núcleo de nuestro programa comienza definiendo los pines para cada componente. Por ejemplo,DHTPINse asigna aPIN 13para el sensor DHT11, mientrasMOIS_PINestá programado paraPIN 14para el sensor de humedad. Esta organización ayuda a llevar un registro de qué sensor está conectado a qué pin.
#define DHTPIN 13 // Set the pin connected to the DHT11 data pin
#define MOIS_PIN 14 // Soil moisture module
#define LIGHT_PIN 35 // Photoresistor
A continuación, inicializamos el sensor DHT y la pantalla LCD dentro delsetup()función. Esto es crucial ya que prepara estos componentes para su funcionamiento. Asegurándose de llamardht.begin()es esencial para que el sensor DHT comience a leer valores correctamente.
void setup() {
Serial.begin(115200);
dht.begin(); // Initialize the DHT11
lcd.init(); // Initialize the LCD
lcd.backlight();
}
En elloop()en la función, leemos continuamente los valores de temperatura y humedad, mostrándolos en el LCD. Si se presiona el botón, se activa el motor para regar las plantas. Esta lógica utiliza la lectura digital del pin del botón para determinar si encender o apagar el motor.
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (digitalRead(BUTTON) == HIGH) {
digitalWrite(motor1A, HIGH); // Turn on water pump
} else {
digitalWrite(motor1A, LOW); // Turn off water pump
}
delay(2000);
}
Esta estructura de código permite un flujo claro de datos y control, asegurando que el monitor de la planta funcione sin problemas. Para más detalles, el código completo se carga debajo del artículo.
Demostración / Qué Esperar
Al completar la configuración y subir el código, el LCD debería mostrar las lecturas de temperatura y humedad alternativamente con los niveles de humedad y luz. Cuando se presiona el botón, la bomba de agua debería activarse, entregando agua a la planta. Asegúrese de que todas las conexiones estén seguras para evitar problemas como entradas flotantes o lecturas incorrectas (en el video a las 05:30).
El monitoreo de los valores mostrados en la pantalla LCD y el monitor serial ayudará a garantizar que el sistema funcione correctamente. Si encuentra problemas, verifique nuevamente el cableado y asegúrese de que todos los componentes estén alimentados correctamente.
Marcas de tiempo del video
- 00:00 Comenzar
- 2:23 Introducción del Proyecto
- 4:02 Página de docs
- 7:43 Controlador de motor de bomba 1-L293D
- 14:30 2-Pulsar botón para la bomba
- 16:35 sensor de temperatura y humedad 3-DHT11
- 19:26 Sensor de humedad 4-slild
- 21:43 Sensor de 5 luces
- 24:47 6-Sensor de Humedad del Suelo
- 26:01 código completo de monitoreo de planta Arduino
- 29:21 Demostración
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 13 // Configura el pin conectado al pin de datos DHT11.
#define MOIS_PIN 14 // Módulo de humedad del suelo
#define LIGHT_PIN 35 // Fotoresistor
#define motor1A 27 // Clavo de la bomba
#define motor2A 26 // Clavo de la bomba
#define BUTTON 32 // Botón
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
int page = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
// Inicializar el dht11
dht.begin();
lcd.init(); // inicializar el lcd
lcd.backlight();
lcd.clear();
// inicializar el pin digital como una salida.
pinMode(motor1A, OUTPUT);
pinMode(motor2A, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop() {
// ¡Leer la temperatura o la humedad toma alrededor de 250 milisegundos!
// Las lecturas del sensor también pueden tener hasta 2 segundos de "antigüedad" (es un sensor muy lento)
float humidity = dht.readHumidity();
// Leer la temperatura en Celsius (el valor predeterminado)
float temperature = dht.readTemperature();
// Verifica si alguna lectura falló y sal de inmediato (para intentar de nuevo).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
lcd.clear();
// Mostrar mensaje cada 2 segundos.
if ((page++) % 2) {
// Mostrar temperatura y humedad
lcd.setCursor(0, 0);
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("\xDF");
lcd.print("C");
} else {
// Mostrar los valores del sensor de humedad y luz
lcd.setCursor(0, 0);
lcd.print("Mois: ");
lcd.print(analogRead(MOIS_PIN));
lcd.setCursor(0, 1);
lcd.print("Light: ");
lcd.print(analogRead(LIGHT_PIN));
}
// Riegue la planta mientras mantiene el botón presionado.
Serial.println(digitalRead(BUTTON));
if (digitalRead(BUTTON) == HIGH) {
// Encienda la bomba de agua si se presiona el botón.
digitalWrite(motor1A, HIGH);
digitalWrite(motor2A, LOW);
} else {
// Apague la bomba de agua si el botón no está presionado.
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
}
delay(2000);
}
Common Course Links
Common Course Files
Cosas que podrías necesitar
-
AmazonasCompra LCD1602-I2C en Amazonamzn.to
-
eBayCompra LCD1602-I2C en eBay.ebay.us
-
AliExpressComprar 10 piezas de LCD1602-I2C en AliExpresss.click.aliexpress.com
Recursos y referencias
-
DocumentaciónTutorial ESP32 35/55 - Página de documento de SunFounder monitor de plantasdocs.sunfounder.com
Archivos📁
Archivo de Fritzing
-
Sensor de humedad y temperatura DHT11 (3 pines)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB -
Módulo LCD LCD1602-I2C con 4 cables
LCD1602-I2C.fzpz0.01 MB