5. Monitoreo del Ambiente Doméstico

En este capítulo, utilizaremos Blynk para crear un monitor de ambiente doméstico. Puedes medir la temperatura, humedad e intensidad lumínica de una habitación usando el DHT11 y un fotoresistor. Al enviar estos valores a Blynk, podrás conocer el estado del ambiente de tu hogar a través de internet.

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

-

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_dht11.jpg

2. Editar el Tablero de Mandos

  1. Para registrar valores de humedad, crea un Datastream de tipo Virtual Pin en la página de Datastream. Configura el TIPO DE DATO a Double y el MIN y MAX a 0 y 100. También establece las unidades a Percentage, %.

    ../_images/sp220610_145748.png
  2. Luego crea un Datastream de tipo Virtual Pin para registrar la temperatura. Configura el TIPO DE DATO a Double, MIN y MAX a -30 y 50, y las unidades a Celsius, °C.

    ../_images/sp220610_145811.png
  3. También crea un Datastream de tipo Virtual Pin para registrar la intensidad lumínica. Utiliza el tipo de dato predeterminado - Integer, con MIN y MAX configurados a 0 y 1024.

    ../_images/sp220610_145834.png
  4. Ve a la página de Wed Dashboard, arrastra dos widgets Label y configura sus flujos de datos a V4 y V5 respectivamente, y arrastra un widget Gauge y configura el flujo de datos a V6. También en la configuración del widget, puedes activar Cambiar color según el valor y seleccionar el color apropiado para que el widget se vea mejor y más intuitivo.

../_images/sp220610_150400.png

3. Ejecutar el Código

  1. Abre el archivo 5.home_environment_monitoring.ino en la ruta 3in1-kit\iot_project\5.home_environment_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
  2. 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, por favor consulta 1.4 Conectando la placa R3 a Blynk.

  3. Tras seleccionar la placa y puerto correctos, haz clic en el botón Upoad.

  4. Abre el monitor Serial(configura la tasa de baudios a 115200) y espera a que aparezca 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 de 3 a 5 veces, por favor ten paciencia.

  5. Ahora, verás la temperatura ambiental actual, la humedad y la intensidad de luz en Blynk.

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

    ../_images/mobile_home.jpg

¿Cómo funciona?

Estas dos funciones se utilizan para obtener la temperatura, humedad e intensidad lumínica de la habitación.

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 e intensidad de luz 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();
    if(chk){
        Blynk.virtualWrite(V4,humidity);
        Blynk.virtualWrite(V5,temperature);
    }
    Blynk.virtualWrite(V6,light);
}