domingo, 18 de diciembre de 2016

Estación meteorológica casera

Este es un proyecto que, aunque oficialmente lo publico hoy, llevo ya algún tiempo realizando artículos sobre varios sensores que miden parámetros como la temperatura, la presión o la humedad relativa. En las fuentes de este artículo incluiré todos aquellos que guardan relación con este proyecto.

La idea es realizar una estación meteorológica que mida parámetros como los ya mencionados y que sean accecibles a través de internet.

Inicialmente, voy a medir la temperatura, la humedad relativa, la presión atmosférica y la altitud utilizando un DHT22 y un BMP180. Será controlado por un módulo ESP8266 y subirá los datos obtenidos a la plataforma thinger.io

El esquema es el siguiente:

Para controlar el módulo BMP180 uttilizamos la librería Adafruit BMP085 Library y la instalaremos desde el Gestor de Librerías del IDE de Arduino.


El código completo es el siguiente:

#include <ESP8266WiFi.h> // ESP8266
#include <ThingerESP8266.h> // thinger.io
#include "DHT.h" //Sensor DHT
#include <Wire.h> // I2C
#include <Adafruit_BMP085.h> // Sensor BMP180

// thinger.io
// Parámetros del dispositivo ESP8266

#define username "USERNAME"
#define deviceId "DEVICE_ID"
#define deviceCredential "DEVICE_CREDENTIAL"

// Parámetros de nuestra red wifi
#define wifi_ssid "SSID"
#define wifi_password "PASSWORD"

// Parámetros del sensor DHT11
#define dht_pin D7 // GPIO13
#define dht_type DHT22 // Seleccionamos el sensor
DHT dht(dht_pin, dht_type);

// Declaramos un objeto de la clase Adafruit_BMP085
Adafruit_BMP085 bmp;
// Declaramos un objeto de la clase ThingerESP8266
ThingerESP8266 thing(username, deviceId, deviceCredential);

void setup() {
  Wire.pins(D2, D3);
  Wire.begin(D2, D3); //Inicializa I2C en NodeMCU
  bmp.begin(); // Inicializamos el BMP180

  thing.add_wifi(wifi_ssid, wifi_password);
  thing["sensores"] >> [](pson & out) {
    out["dht_humedad"] = dht.readHumidity();
    out["dht_temperatura"] = dht.readTemperature();
    out["bmp180_presion"] = bmp.readPressure();
    out["bmp180_temperatura"] = bmp.readTemperature();
    out["bmp180_altitud"] = bmp.readAltitude(101500);   
  };
}

void loop() {
  thing.handle();
}


Con respecto a otros artículos, la única novedad es la utilización de la libreria de Adafruit BMP085 que utiliza los siguientes métodos para obtener los diferentes parámetros:
  • Para medir la presión: bmp.readPressure()
  • Para medir la temperatura: bmp.readTemperature()
  • Para medir la altitud: bmp.readAltitude(101500)
El resultado obtenido es el siguiente:


Como pueden comprobar, he configurado el dashboard de tal forma que muestra cuatro de los cinco parámetros obtenidos ya que no se visualiza la valor de temperatura obtenido por el BMP180.


Fuentes:

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.