6. Monitor de Plantas

El propósito de este proyecto es crear un sistema inteligente de riego que detecte la temperatura actual, humedad, intensidad de luz y humedad del suelo, y muestre estos datos en Blynk.

Tan pronto como actives el interruptor de conmutación en Blynk Cloud, la bomba comenzará a funcionar y las plantas serán hidratadas.

Componentes Necesarios

Para este proyecto, necesitamos los siguientes componentes.

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa SunFounder R3

BUY

Protoboard

BUY

Módulo ESP8266

BUY

Cables Puente

BUY

Resistencia

BUY

Fotoresistor

BUY

Sensor de Humedad y Temperatura DHT11

-

Módulo de Humedad del Suelo

BUY

Módulo Controlador de Motor L9110

-

Bomba Centrífuga

-

1. Construir el Circuito

Nota

El módulo ESP8266 requiere una alta corriente para proporcionar un entorno operativo estable, así que asegúrate de que la batería de 9V esté conectada.

../_images/wiring_6_plant_monitor_bb.png

2. Editar el Tablero de Mandos

  1. Los flujos de datos creados en los proyectos anteriores deben guardarse y se utilizarán también en este proyecto.

  2. Para registrar la humedad del suelo, crea otro Datastream de tipo Virtual Pin en la página de Datastream. Configura el TIPO DE DATO a Integer y el MIN y MAX a 0 y 1024.

    ../_images/sp220610_155221.png
  3. Ahora ve a la página de Wed Dashboard, arrastra 2 widgets Label y configura sus flujos de datos a V4 y V5 respectivamente; arrastra 2 widgets Gauge y configura sus flujos de datos para mostrar V6 y V7 respectivamente; y finalmente arrastra un widget Interruptor y configura su flujo de datos a V0.

    ../_images/sp220610_155350.png

3. Ejecutar el Código

Abre el archivo 6.plant_monitoring.ino en la ruta 3in1-kit\iot_project\6.plant_monitoring, o copia este código en Arduino IDE.

Nota

  • Aquí se utiliza la DHT sensor library, puedes instalarla desde el Library Manager.

    ../_images/lib_dht11.png
  1. Sustituye el Template ID, Device Name y Auth Token por los tuyos. También necesitas ingresar el ssid y la password del WiFi que estás utilizando. Para tutoriales detallados, consulta 1.4 Conectando la placa R3 a Blynk.

  2. Después de seleccionar la placa y puerto correctos, haz clic en el botón Upoad.

  3. Abre el monitor Serial(configura la tasa de baudios a 115200) y espera un aviso como una conexión exitosa.

    ../_images/2_ready.png

    Nota

    Si aparece el mensaje ESP is not responding al conectar, sigue estos pasos.

    • Asegúrate de que la batería de 9V esté conectada.

    • Restablece el módulo ESP8266 conectando el pin RST a GND durante 1 segundo, luego desenchúfalo.

    • Presiona el botón de reset en la placa R3.

    A veces, puede ser necesario repetir la operación anterior 3-5 veces, por favor ten paciencia.

  4. De vuelta en Blynk, verás la temperatura actual, humedad, intensidad de luz y humedad del suelo. Puedes permitir que la bomba riegue las plantas si es necesario haciendo clic en el widget de Control de Botón.

    ../_images/sp220610_155350.png
  5. Si quieres usar Blynk en dispositivos móviles, consulta ¿Cómo usar Blynk en dispositivos móviles?.

    ../_images/mobile_plant.jpg

¿Cómo funciona?

Este BLYNK_WRITE hace que el widget Switch de Blynk inicie la bomba cuando está ENCENDIDO y la apague cuando está APAGADO.

BLYNK_WRITE(V0)
{
    if(param.asInt()==1){
        digitalWrite(pumpA,HIGH);
    }else{
        digitalWrite(pumpA,LOW);
    }
}

Estas tres funciones se utilizan para obtener la temperatura ambiental actual, humedad, intensidad de luz y humedad del suelo.

int readMoisture(){
    return analogRead(moisturePin);
}

int readLight(){
    return analogRead(lightPin);
}

bool readDHT() {

    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
    humidity = dht.readHumidity();
    // Read temperature as Celsius (the default)
    temperature = dht.readTemperature();

    // Check if any reads failed and exit early (to try again).
    if (isnan(humidity) || isnan(temperature)) {
        Serial.println("Failed to read from DHT sensor!");
        return false;
    }
    return true;
}

Con el Timer de Blynk, la temperatura ambiente, humedad, intensidad de luz y humedad del suelo se obtienen cada segundo y se envían al flujo de datos en Blynk Cloud, desde donde los widgets muestran los datos.

void myTimerEvent()
{
    bool chk = readDHT();
    int light = readLight();
    int moisture = readMoisture();
    if(chk){
        Blynk.virtualWrite(V4,humidity);
        Blynk.virtualWrite(V5,temperature);
    }
    Blynk.virtualWrite(V6,light);
    Blynk.virtualWrite(V7,moisture);
}