#376IntermedioIoT

ESP32 Riego IoT de Plantas (Sensor + Bomba)

Que la bomba arranque sola cuando la tierra de la maceta se seque, y mira la humedad del suelo en directo en el móvil. Este proyecto es la guía paso a paso de la plantilla IoT Humedad del suelo + bomba de la app, con un ESP32, un sensor de humedad del suelo, un relé y una mini bomba de agua. Ve a Taller › Dispositivos › Añadir dispositivo; Ohmi prepara el código con tu clave de dispositivo. El código de aquí es un ejemplo: la clave y el Wi-Fi son de relleno.

0.0(0)
ESP32 Riego IoT de Plantas (Sensor + Bomba)
Si no quieres que tus plantas pasen sed mientras estás fuera, este proyecto es para ti. El sensor mide la humedad de la tierra; cuando baja del umbral que elijas, un relé enciende la bomba y la apaga cuando la tierra ya está bastante húmeda. La humedad se va guardando en un gráfico en tu móvil, y desde ahí también cambias el umbral o pones en marcha la bomba. La bomba funciona con sus propias pilas y no con la placa, así aprendes a separar el agua de la electrónica y a cablear con seguridad.
IoT · control remotoTu primer dispositivo es gratis

Controla este dispositivo desde la app

Conecta tu ESP32 o Raspberry Pi Pico W al wifi, enciéndelo y apágalo desde el móvil y mira las lecturas en directo. Ohmi prepara el código; tú solo pones los datos de tu wifi y lo subes.

Plantilla en la app: Humedad del suelo + bomba

  • ¿Dónde está en la app?Añade un dispositivo nuevo desde la pestaña Herramientas o en Taller › Dispositivos y elige esta plantilla.
  • Librería de ArduinoAbre el Gestor de librerías en el Arduino IDE, busca BlueGraysIoT e instálala.
Descarga la app gratis

El plan gratis incluye 1 dispositivo, 1 gráfica y 24 horas de historial. Con Premium tienes más dispositivos, más gráficas y un historial más largo.

Diagrama del circuito

ESP32 Riego IoT de Plantas (Sensor + Bomba) - Circuit

Código fuente

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   ESP32 Riego IoT de Plantas (Sensor + Bomba)
4// ─────────────────────────────────────────
5// La plantilla IoT "Humedad del suelo + bomba" de la app BlueGrays: el
6// sensor de humedad del suelo mide cada 2 segundos y envía el valor a la
7// app, el relé enciende la bomba cuando la humedad baja del umbral de
8// riego y la apaga 10 puntos por encima; también controlas la bomba y el
9// umbral desde el móvil. Ohmi prepara el código real en la app con tu
10// propia clave de dispositivo (Taller › Dispositivos › Añadir
11// dispositivo); el código de aquí es un ejemplo, la clave del dispositivo
12// y los datos del Wi-Fi son de relleno. Gestor de bibliotecas:
13// BlueGraysIoT (con sus dependencias). La placa solo se conecta a redes
14// Wi-Fi de 2,4 GHz. El relé se activa con LOW. Seguridad: alimenta la
15// bomba con su propio portapilas (4 x AA), no desde la placa; mantén la
16// placa, el relé y las pilas lejos del agua, en una caja cerrada; no hagas
17// funcionar la bomba en seco.
18//
19// Pines:
20//   GPIO34 -> Sensor de humedad del suelo AO
21//   3V3, GND -> Sensor de humedad del suelo VCC, GND
22//   GPIO26 -> Módulo de relé IN
23//   5V, GND -> Módulo de relé VCC, GND
24//   Relé COM -> portapilas (+), NO -> bomba (+), bomba (-) -> portapilas (-); la bomba usa sus
25//   propias 4 x AA
26//   Pico W: sensor de humedad AO GP26, relé IN GP15
27
28/*
29 * Humedad del suelo + bomba · BlueGrays IoT
30 * BlueGrays · bluegrays.com
31 * No compartas este código: contiene la clave de tu dispositivo y la contraseña del Wi-Fi.
32 */
33
34#include <BlueGraysIoT.h>
35
36const char *DEVICE_KEY = "TU_CLAVE_DE_DISPOSITIVO";
37const char *WIFI_NAME = "TU_RED_WIFI";
38const char *WIFI_PASSWORD = "TU_CONTRASENA_WIFI";
39
40BlueGraysIoT bg(DEVICE_KEY);
41
42const int RELAY_PIN = 26;
43const bool RELAY_ACTIVE_LOW = true;  // la mayoría de los módulos de relé se activan con LOW
44void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
45const int SOIL_PIN = 34;
46const int SOIL_DRY = 3200;  // lectura en tierra seca
47const int SOIL_WET = 1300;  // lectura en tierra húmeda
48int threshold = 30; bool pump = false; unsigned long lastReadMs = 0;
49
50void setup() {
51  Serial.begin(115200);
52  pinMode(RELAY_PIN, OUTPUT);
53  setRelay(false);
54  analogReadResolution(12);
55  bg.onSwitch("pompa", [](bool on) { pump = on; setRelay(on); });
56  bg.onNumber("esik", [](float v) { threshold = (int)v; });
57  bg.setDeadband("toprak", 1.0);
58  bg.setDebug(Serial);
59  bg.setLanguage(BG_LANG_EN);
60  bg.begin(WIFI_NAME, WIFI_PASSWORD);
61}
62
63void loop() {
64  bg.loop();  // evita aquí los delay() largos
65  if (millis() - lastReadMs >= 2000) {
66    lastReadMs = millis();
67    int pct = constrain(map(analogRead(SOIL_PIN), SOIL_DRY, SOIL_WET, 0, 100), 0, 100);
68    bg.send("toprak", pct);
69    // Enciende la bomba por debajo del umbral y apágala 10 puntos por encima
70    if (pct < threshold && !pump) { pump = true; setRelay(true); bg.send("pompa", true); }
71    if (pct > threshold + 10 && pump) { pump = false; setRelay(false); bg.send("pompa", false); }
72  }
73}
74

Preguntas frecuentes

¿Puedo subir a la placa el código de esta página tal cual?

Puedes, pero no se conectará: la clave del dispositivo y los datos del Wi-Fi son de relleno. En la app ve a Taller › Dispositivos › Añadir dispositivo y elige la plantilla Humedad del suelo + bomba; Ohmi prepara el código con tu clave, el nombre de tu red y tu contraseña. Copia ese código y súbelo. Después puedes ver el código completo en Dispositivo › Código y clave.

¿Funciona también con una Pico W?

Sí. Al añadir el dispositivo elige Pico W como placa; el código es el mismo y solo cambian los pines y los valores de calibración: el sensor de humedad va al GP26 (una entrada analógica) y el relé al GP15. En Arduino IDE instala el paquete "pico" desde el Gestor de placas. El circuito y la foto de esta página se hicieron con un ESP32.

¿Por qué la bomba lleva sus propias pilas?

La corriente que consume la bomba y el ruido de su motor pueden reiniciar la placa. Por eso la bomba se alimenta con un portapilas de 4 x AA y solo pasa por los terminales COM y NO del relé; no tiene ningún cable unido a la placa. Mantén la placa, el relé y el portapilas lejos del agua, en una caja cerrada, y que los empalmes no se mojen. La bomba solo debe funcionar sumergida; en seco se calienta y se estropea en pocos minutos. Quita las pilas mientras colocas la manguera o sacas la bomba del agua.

¿Cuándo funciona la bomba y qué pasa si la enciendo a mano?

La placa mide la humedad cada 2 segundos. Cuando baja del Umbral de riego de la app (al principio 30 %) la bomba se enciende, y se apaga 10 puntos por encima del umbral; ese margen evita que se encienda y apague sin parar. También puedes tocar a mano el interruptor Bomba, pero manda la regla automática: si la apagas con la tierra por debajo del umbral, vuelve a encenderse en 2 segundos, y si la enciendes con la tierra 10 puntos por encima, se apaga enseguida. Ajusta el umbral a tu maceta.