Micro estación meteorológica

Fabrico una micro estación meteorológica con pocos materiales y extremadamente económicos (menos de 10 euros). Como base utilizo una placa Nodemcu ESP8266, que se programa como un Arduino y una pequeña placa con dos sensores de gran calidad (AHT+BMP280).

La intención es recoger algunos parámetros meteorológicos como temperatura, humedad y presión atmosférica, y poder visualizarlos a través de cualquier dispositivo conectado a Internet como un teléfono móvil o un pc.

Utilizo la plataforma Ardubridge.com como pasarela para enviar los datos a Windguru, Windy.com y WeatherUnderground, además de generar mi propio site personalizado en la misma plataforma. El código fuente a utilizar es realmente reducido, solo tengo que hacer la conexión con un sitio web, luego la plataforma envía los datos a las otras webs en nombre de mi estación.

Mi página personalizada en Ardubridge queda así de bien: ver micro estación meteorólogica.

Ejemplo del tamaño de la estación, recogida en su caja compacta y pegada con un imán de neodimio.

MATERIALES NECESARIOS

placa nodemcu esp8266 v3

Los materiales mínimos son la placa NodeMCU ESP8266 y la placa de sensores AHT20+BMP280. El resto de materiales como la caja de conexiones o los imanes de neodimio, son opcionales. Como cable USB de programación y alimentación, puedes reutilizar el cable de un viejo cargador de móvil que admita datos.

El tamaño de la placa de sensores es realmente pequeña, tan solo 20×20 mm, algo así como el tamaño de una uña.

ESQUEMA ELÉCTRICO

Explicación del esquema eléctrico: La placa NodeMcu podemos alimentarla por los pines VIN (+) y G (-) con 5v en corriente continua o con un simple cable micro USB y un cargador de teléfono móvil, que aplica la misma tensión 5v.

Desde los pines 3V (+) y G (-), sacamos una alimentación de 3,3v para la placa AHT20+BMP280. Yo utilizo habitualmente cables rojo y negro para alimentación en cc positivo y negativo.

Mediante los pines D1 (SCL) y D2 (SDA) conectamos con los pines del mismo nombre en la placa de sensores. Para los cables de comunicación de datos habitualmente utilizo cable morado, en este caso la comunicación es mediante protocolo I2C.

MONTAJE

Mecanizamos en la zona inferior de la caja de registro un agujero para pasar posteriormente el cable USB. Podemos hacer esta operación con taladro y broca, o con una pequeña lima. No te preocupes si el agujero es demasiado grande y tienes intención de poner tu estación en el exterior, este agujero se quedará en la zona inferior y no entrará agua.

Insertamos la placa principal dentro de la pequeña caja de registro, en nuestra caja seleccionada, del fabricante Famatel debo decir que entra como un guante. Ver siguiente fotografía.

estación meteorológica con NodeMcu esp8266

Posteriormente, para evitar problemas de cortocircuitos y conexiones indeseadas, insertamos una pequeña lámina de acetato transparente entre la placa principal y la placa de sensores.

Conectamos cable USB por un extremo a la placa NodeMCU, por el otro extremo a un cargador típico de teléfono móvil.

CONECTAR CON ARDUBRIDGE

Antes de cargar el código en nuestra placa, debemos darnos de alta en Ardubridge, dar de alta en el panel una estación nueva y obtener station id y station password.

Comenzaremos por darnos de alta en la zona FREE SIGNUP con nuestro nombre, email y password, recuerda verificar el email mediante click en el email recibido:

Una vez verificado el email, nos logueamos en la página. En el panel, damos de alta la nueva estación con Add Weather Station como en la siguiente imagen. En el formulario de alta de estación nos pedirán el API o station password, debemos inventarnos una para que solo nosotros podamos enviar datos en nombre de nuestra estación:

Una vez dada de alta la estación, veremos que se genera una fila nueva en la página principal del panel con la información principal de nuestra nueva estación. Uno de los datos principales es el status, para verificar si todo está sincronizando bien, inicialmente el status aparecerá como PENDING DATA en color rojo, cuando comencemos a enviar datos, cambiará a RECEIVING DATA en color verde.

En la parte izquierda veremos el station id que nos han asignado, que junto con el station pass, lo utilizaremos en el siguiente paso para cargar la programación y comenzar e enviar datos meteorológicos.

PROGRAMACIÓN

Es el momento de  conectar el cable USB a nuestra mini estación meteorológica y al PC. Abrir el entorno de programación ARDUINO IDE y cargar el código. Pero inicialmente debemos instalar las librerias para que todo funcione correctamente, la primera puedes descargarla desde el enlace que adjunto, el resto, desde la biblioteca de librerias del mismo ARDUINO IDE:

  • Ardubridge.h    (necesario para contactar con Ardubridge con el mínimo código posible)
  • ESP8266WiFi.h    (instalar desde biblioteca de librerias, necesario para conectar por wifi)
  • ESP8266HTTPClient.h    (instalar desde biblioteca de librerias, necesario para enviar datos por Internet)
  • Wire.h    (necesario para i2c)
  • SPI.h    (necesario para i2c)
  • Adafruit_Sensor.h    (librería para leer de forma más sencilla los sensores que tenemos)
  • Adafruit_BMP280.h    (necesario para sensor BMP280)
  • Adafruit_AHTx0.h    (necesario para sensor AHT20)

Si no sabes como instalar librerías, aquí te dejo un enlace donde lo explican de forma muy sencilla.

Posteriormente copiaremos el siguiente código fuente:

#include <Ardubridge.h>           // lib to send data to Ardubridge.com
#include <Wire.h>                 // lib i2c devices
#include <SPI.h>                  // lib also for 12c devices
#include <Adafruit_Sensor.h>      // unified library for sensors
#include <Adafruit_BMP280.h>      // lib temp and humidity
#include <Adafruit_AHTX0.h>       // lib temp and preassure

// Ardubridge library instance
Ardubridge ardubridge;

// Constants for BMP280 sensor
#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11 
#define BMP_CS 10

// Instances definition for I2C sensors
Adafruit_BMP280 bme;    // temp and preassure
Adafruit_AHTX0 aht;     // temp and humidity

// Timers for serial print info
unsigned long currentTime = millis();
unsigned long timer1 = 10000;    // time for print by serial monitor (10 seg)
unsigned long prev1 = 0;

// Meteo variables definition
float lectura_temperatura;
float lectura_presion;
float lectura_humedad;

void setup() {
  Serial.begin(9600);
  
  // ARDUBRIDGE LIBRARY - Configure the WiFi connection and the Ardubridge station
  ardubridge.setup("nombre_wifi", "password_wifi", "station_id", "station_pass", 3);

  // Checking I2C sensor AHT10
  if (!aht.begin()) {
  Serial.println("Could not find a valid AHT10 sensor, check wiring!");
  while (1);
  }

  // Checking I2C sensor BMP280
  if (!bme.begin()) {
    Serial.println("Could not find a valid BMP280 sensor, check wiring!");
    while (1);
  }
}

void loop() {
  // Reading sensors
  sensors_event_t humidity, temp;
  aht.getEvent(&humidity, &temp);
  lectura_temperatura = temp.temperature;           // read temp from aht10
  lectura_humedad = humidity.relative_humidity;     // read humidity from aht10
  lectura_presion = bme.readPressure() / 100;       // read preassure from bmp280

  // Show reading values by serial monitor each 10 sec (optional)
   if( millis() - prev1 > timer1 ){
      prev1 = millis();  
      Serial.println(" "); 
      Serial.print("Temperature: ");
      Serial.println(lectura_temperatura);
      Serial.print("Humidity: ");
      Serial.println(lectura_humedad);
      Serial.print("Pressure = ");
      Serial.println(lectura_presion);
      Serial.println(" "); 
  }

  // ARDUBRIDGE LIBRARY - Update the meteo variable values
  ardubridge.setTemperature(lectura_temperatura);
  ardubridge.setHumidity(lectura_humedad);
  ardubridge.setPressure(lectura_presion);
  //ardubridge.setWindDirection(5.0);
  //ardubridge.setWindSpeed(5.0);
  //ardubridge.setWindSpeedMin(5.0);
  //ardubridge.setWindSpeedMax(5.0);
  //ardubridge.setPrecipitation(5.0);
  //ardubridge.setUV(5.0);
  //ardubridge.setDewPoint(5.0);

  // ARDUBRIDGE LIBRARY - Call loop method to send the data.
  ardubridge.loop();
}

 

En la linea 35 hay cuatro parámetros que debemos sustituir, recuerda mantener las comillas actuales, solo modificamos el texto del interior:

  • Parámetro 1: nombre de tu wifi.
  • Parámetro 2: contraseña de tu wifi.
  • Parámetro 3: tu STATION ID (lo hemos obtenido en el paso anterior).
  • Parámetro 4: tu STATION PASS o API pass (lo hemos generado en el paso anterior).
  • Parámetro 5: número de minutos cada cuanto queremos enviar parámetros meteorológicos, por defecto 3, se recomienda no cambiar.

Como puedes comprobar con solo 85 lineas de código, tenemos nuestra estación lista para enviar nuestros parámetros meteorológicos a un montón de sitios web.

Además puedes modificar este código y añadir más sensores. En las lineas 75 a 81 puedes ver como hemos comentado las lineas porque no tenemos sensores para estos parámetros. Si tienes dichos sensores, puedes sustituir los valores fijos de los paréntesis por el nombre de la variables de lectura, de modo que puedes completar tu estación de forma modular.

Con estos pasos completados, ya puedes cargar el código en tu placa NodeMCU. Mientras la tengas conectada a tu PC con el IDE abierto, puedes ver por el monitor serie cada 10 segundos los estados de lectura y el momento de conectar con Ardubridge. Posteriormente solo hay que dejar nuestra mini estación conectada por USB a un cargador de teléfono móvil.

CONECTA CON WINDGURÚ, WINDY y WU

Con los pasos anteriores completados, el status de nuestra estación pasará pronto al modo RECEIVING DATA con el fondo en verde. A la derecha veremos SEE STATION para ver nuestra página personalizada con los datos que ya estamos enviando.

Puedes editar tu estación para añadir la latitud y longitud para que aparezca un mapa de localización, es fácil obtener estos datos simplemente abriendo google maps.

Es hora de conectar con Windgurú, Windy y WeatherUnderground.

Haremos click en ADD NEW LINK, nos llevará a un formulario con dos desplegables, uno para seleccionar nuestra estación y otro para seleccionar la página web con la que queremos enlazarla.

Tras elegir una de estas páginas, por ejemplo Windguru, nos aparecerán los datos que necesitamos para hacer el enlace y enlaces a las paginas donde debemos darnos de alta. Concretamente Windguru nos pide estos datos: Windguru ID, UID y API password. Con esos datos añadidos, estaremos enviando nuestros datos meteorológicos a Windguru y otros sitios en cuestión de minutos.

Por favor cualquier duda de programación, integración o relacionado con Ardubridge, escríbeme en el formulario de contacto de HenryFab ¡Muchas gracias!



Fabrica el mejor tornillo de banco con elementos básicos



Restauración de torno metal antiguo



Mini Torno Casero FULL METAL



Restauración de patinete antiguo