Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT

Componentes y materiales

Aplicaciones y servicios online

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!

Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT
Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT

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).

Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT

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.

Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT

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.

Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT

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).

Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT
Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT
Sistema Automático de Riego para Plantas de Oficina con Arduino, WiFi e IFTTT

¿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

  1. Fertilizantes: Ciencia, Producción y Futuros Sostenibles
  2. Construye un Spybot controlado por Bluetooth con Arduino
  3. FlickMote: Mando IR por gestos para Smart Home
  4. TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
  5. Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
  6. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  7. Soluciones de Alimentación Optimizadas para Proyectos Arduino
  8. Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
  9. Evaluación de la salud de plantas con TinyML: Guía práctica
  10. Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
  11. Construye un volante joystick personalizado con Arduino para gaming