Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT
Componentes y materiales
- 1x Arduino Due
- 1x Andium Anduino WiFi
- 1x Arduino Zero
- 1x Sensor capacitivo de humedad de suelo
Aplicaciones y servicios online
- Arduino IDE
- IFTTT
- Adafruit IO
Sobre el proyecto
Motivación
En Andium nos mudamos a una oficina nueva y la llenamos de plantas. Se nos olvidó regarlas y en una semana se marchitaron. Fallamos. Somos una empresa IoT, ¡nuestras plantas deberían estar conectadas! Antes de que sea tarde, monté una solución con el shield anduinoWiFi e IFTTT. ¡Démosles voz a las plantas!


Primeros pasos
Si tienes pulgar verde ya dejaste de leer. Si necesitas que tus plantas pidan agua digitalmente, estás en el lugar correcto.
Necesitas: Arduino Due o Zero, shield anduinoWiFi (u otro WiFi compatible con Adafruit IO), sensor capacitivo de humedad de suelo y un vaso de agua (dáselo a la planta al terminar).

Sensor de humedad
El sensor capacitivo tiene tres hilos: 3.3V (rojo), GND (negro), señal (azul) a pin analógico A1. No sumerjas por encima de la línea blanca; la parte superior no tolera humedad.

Calibración del sensor capacitivo
Registra lectura en seco y sumergido (hasta la línea blanca) en agua. Obtienes umbrales 0‑100% humedad relativa.
Ejecuta este sketch y anota valores (ejemplo: dryVal=807, wetVal=415):
int inputPin = A1;
void setup() { Serial.begin(115200); delay(3000); }
void loop() {
Serial.print("Raw val: "); Serial.println(readHumidity()); delay(3000);
}
int readHumidity() { return analogRead(inputPin); }
Sketch principal
#include <WiFi101.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include "AnduinoLCD.h"
#define WLAN_SSID "Andium"
#define WLAN_PASS "maybeitsjustpassword"
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "tu_usuario"
#define AIO_KEY "tu_clave_AIO"
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Adafruit_MQTT_Publish humidityVal = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/officePlants");
AnduinoLCD LCD = AnduinoLCD(ST7735_CS_PIN, ST7735_DC_PIN, ST7735_RST_PIN);
int inputPin = A1;
const int dryVal = 807;
const int wetVal = 415;
int humidity = 0, humidityPrev = 0, relHumidity = 0;
void setup() {
Serial.begin(115200); delay(3000);
connectToWiFi(); connectToAdafruit();
LCD.begin(); LCDinit();
}
void loop() {
if (!mqtt.ping(3)) { if (!mqtt.connected()) connect(); }
humidity = readHumidity();
char b[4]; String str = String(humidity);
for (int i=0; i=0) mqtt.disconnect(); Serial.println(F("Retrying...")); delay(1000);
}
Serial.println(F("Adafruit IO Connected!"));
}
void displayHumidity(int humidity, int humidtyPrev) {
LCD.setTextColor(ST7735_BLACK); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(5); LCD.print(humidityPrev); LCD.setTextSize(2); LCD.print("%");
LCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(5); LCD.print(humidity); LCD.setTextSize(2); LCD.print("%");
}
void connectToWiFi() {
delay(10); Serial.print(F("Connecting to ")); Serial.println(WLAN_SSID);
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(F(".")); }
Serial.println(F("WiFi connected!"));
}
void connectToAdafruit() { connect(); }
void LCDinit() {
LCD.setBacklight(ON); LCD.fillScreen(ST7735_BLACK); LCD.showBanner();
LCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(0,40); LCD.print("Humidity: ");
}
int readHumidity() {
int sensorVal = analogRead(inputPin);
relHumidity = map(sensorVal, dryVal, wetVal, 0, 100);
Serial.println("relHumidity"); Serial.print(relHumidity);
return relHumidity;
}
Instala librerías: WiFi101, Adafruit_MQTT, AnduinoLCD. Sustituye dryVal y wetVal por tus valores calibrados. La función map() convierte a 0‑100% humedad relativa.

Cada 10 min publicamos la humedad. Ahora usemos IFTTT para avisar cuando baje de 20%.
Umbral IFTTT
Configuré un applet: si humedad relativa < 20%, la planta tuitea pidiendo agua (@andiumPlants).



¿Qué sigue?
¡Tu imaginación! ¿Cómo más dar voz a las plantas? Consigue un anduinoWiFi y un sensor de suelo y empieza a crear.
Código
Anduino
Librería Arduino para shield Andium(Anduino). Convierte tu Arduino en AndiumNode. github.com/andium/Anduino
Proceso de manufactura
- Fertilizantes: Ciencia, Producción y Futuros Sostenibles
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Evaluación de la salud de plantas con TinyML: Guía práctica
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
- Construye un volante joystick personalizado con Arduino para gaming