En este artículo vamos a integrar Blynk con la Estación Meteorológica Casera publicada en el blog hace unos días. El esquema será el mismo pero en vez de utilizar thinger.io para mostrar los resultados utilizaremos Blynk:
Debemos añadir una nueva librería denominada SimpleTimer
que se utiliza para realizar una acción cada x milisengundos. Como no es una librería oficial tendremos que ir a su repositorio en GitHub, descargamos la librería en formato
.zip y la incluimos en el IDE de Arduino.
Para ello
hacemos click en Programa - Incluir librería - Añadir librería .ZIP y
seleccionamos el fichero desscargado. Este se descomprimirá en nuestra
carpeta libraries de Arduino automáticamente.
El código completo es el siguiente:
#include <SimpleTimer.h>
#include <ESP8266WiFi.h> // ESP8266
#include <BlynkSimpleEsp8266.h> //Blync
#include "DHT.h" //Sensor DHT
#include <Wire.h> // I2C
#include <Adafruit_BMP085.h> // Sensor BMP180
// Blynk
char auth[] = "5952699ea85e48518c6aa89e1ebc9d8d";
#define BLYNK_PRINT Serial
// Red WiFi
char ssid[] = "WLAN_E17C";
char pass[] = "ced0ccb58c84e525e35f";
// Sensor DHT11
#define dht_pin D7 // GPIO13
#define dht_type DHT22 // Seleccionamos el sensor
DHT dht(dht_pin, dht_type);
// Medida de la presión atmosférica
Adafruit_BMP085 bmp;
// Objeto timer de la clase SimpleTimer
SimpleTimer timer;
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
// Establecemos un intervalo de 1 segundo
timer.setInterval(1000L, enviarValores);
Wire.pins(D2, D3);
Wire.begin(D2, D3); //Inicializa I2C en NodeMCU
bmp.begin(); // Inicializamos el BMP180
}
void enviarValores() {
// Lectura de humedad y temperatura
float h = dht.readHumidity();
float t = dht.readTemperature();
// Lectura de presión y altura
float p = bmp.readPressure();
float a = bmp.readAltitude(101500);
// Asignamos los valores a los pins virtuales
Blynk.virtualWrite(8, a);
Blynk.virtualWrite(9, p/1000); // Ver nota
Blynk.virtualWrite(10, t);
Blynk.virtualWrite(11, h);
}
void loop() {
Blynk.run();
timer.run();
}
Nota: he dividido entre 1.000 el valor de la presión porque el valor máximo que nos permite el Gauge es de 9999:
Utilizamos "pins virtuales" para enviar información al servidor de Blynk, en este caso, los valores medidos por los sensores. Para mostrarlos utilizamos componentes Gauge aunque se pueden utilizar Label, Graph, LCD, etc. Los datos los enviamos al servidor cada segundo utilizando el objeto timer de la clase SimpleTimer. El resultado obtenido es el siguiente:
Para configurar cada uno de estos widget utilizamos los siguientes parámetros:
Fuentes:
Enlaces:
- GitHub: SimpleTimer library for Arduino
- Arduino Playground: SimpleTimer Library for Arduino
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.