viernes, 3 de agosto de 2018

Estación meteorológica APRS vía Wifi por menos de 6€

Hace tiempo estuve mirando precios de una estación meteorológica, y la verdad es que están relativamente caras para las prestaciones que ofrecen. Lo único que necesitaría es que me mida temperatura, presión atmosférica, y si acaso % de humedad.

Trasteando en proyectos de domótica con los pequeños, pero potentísimos módulos ESP8266, encontré alguna información para realizar una sencilla mini estación metereológica por menos de 6€. La cual podría medir temperatura, presión atmosférica, y % de humedad ambiental.  Por si esto fuera poco, a través de nuestra wiffi, podríamos subir estas mediciones en tiempo real a internet mediante diversas plataformas: APRS aprs.fi y CWOP http://wxqa.com/ Todo esto sin la necesidad de estar conectada a un PC, ya que lleva todo el software incluido en su CPU, y envía los datos vía wifi.

También es posible enviarnos esas medidas a nuestro móvil, o realizar cualquier desarrollo que se nos pudiera ocurrir. El proyecto es 100% customizable a nuestras necesidades ya que se basa en software de código abierto creado por F4GOH, y mejorado por IU5HKU Marco (muchas gracias Marco por tu ayuda en este proyecto). A nivel de hardware, se le puede poner panel solar y pila para alimentación autónoma, hacerle una caja de madera tipo estación meteo profesional, etc... Eso será en la versión 2.0 que publicaré más adelante.

Hardware necesario

Empezaremos por lo básico, que es la estación metereológica vía wiffi con envío de información a los servidores mencionados. Para ello solamente necesitamos el siguiente hardware:

- Módulo ESP8266 NODEMCU:

Este pequeño módulo de desarrollador consta de la placa ESP8266. Además trae un puerto de programación microUSB con chip CP2102 o CH340G, botones de reset, led de placa, y regulador de voltaje. También tiene pines fácilmente accesibles para todas las entradas y salidas. Todo ello por unos 3€ envío incluido. Existen varias versiones en el mercado, la mía es la V2.0 del fabricante AMICA. Existe la V3.0 que supongo valdrá también, pero no estoy seguro.

Existe la versión ESP8266 pelada, sin extras, que es más barata, pero necesitaríamos un programador UART para programarla, hay que soldar los pines minúsculos a mano, usar una placa protoboard, ponerle botón para flashear, etc.. No compensa por ahorrarnos 1'5€, sinceramente.

Ojo!, necesitaremos un cable Micro-USB a USB normal, para alimentarlo y programarlo. El del móvil valdría.


- Sensor de temperatura, humedad, y presión BME280:

Esta minúscula plaquita incluye sensor de temperatura, humedad, y presión. Todo en uno por 2€ puesto en casa.



Una vez realizada la compra vía eBay, o plataformas orientales de venta online, vamos a programar el NODEMCU con el correspondiente software. Pero antes, unas sencillas instrucciones de como se cablean los módulos entre sí.

Cableado entre módulos

El cableado entre el sensor y la CPU es de lo más sencillo.
Primero debemos soldar 4 pines que trae el módulo BME280, ya que viene la placa por un lado, y los pines por otro. Son las únicas soldaduras que habría que hacer si usamos cables hembra de prototipos. Sino podemos cablearlo soldando pin a pin con cables finos normales.







Una vez soldado el sensor procedemos a cablear los pines de la siguiente manera:

NODEMCU      BME280
  pin   3v3            pin VIN
  pin   gnd            pin GND
  pin   D1             pin SCL
  pin   D2             pin SDA



Con estas conexiones nuestra estación meteorológica ya estaría preparada para subirle el software correspondiente y funcionar. No necesita nada más.

Programando la placa ESP8266 NODEMCU

Para ello vamos a utilizar el IDE de Arduino, importando unas librerías especiales para la programación del módulo ESP8266. El IDE de Arduino es un software que nos permite programar, y subir nuestro propio software a los diversos chips que soporta, que son muchos aparte de Arduino.

El IDE de Arduino contiene bastantes ejemplos para cada plataforma de desarrollo, y es bastante sencillo de utilizar. En este caso nos vamos a centrar en la estación meteorológica con el ESP8266, pero que sepas que se usa para programar muchos chips, y placas distintas.

Paso 1
Nos descargamos el IDE de Arduino aquí: https://www.arduino.cc/en/main/software
Teniendo en cuenta el sistema operativo que utilizamos en nuestro PC.
Lo instalamos en nuestro PC, y lo ejecutamos.

Paso 2
Nada más abrir, vamos a importar las librerías que nos hacen falta para los módulos ESP8266:
Pulsamos en "file" y luego "setings" y añadimos la siguiente url para importarnos las librerías:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Y pulsamos OK.



Paso 3
Nos vamos al gestor de tarjetas:


Buscamos por la palabra ESP, marcamos la librería para ESPxxx y pulsamos INSTALAR. Con esto ya tenemos que tener cargadas nuestra librerías para el ESP8266.

Paso 4
Vamos al despegable de "tarjetas" y nos aparecen un montón que empiezan por ESP-xxxx.
En este punto debemos escoger la nuestra que sería la "Generic ESP8266 module", y dentro de esta escogemos la "NODEMCU 1.0 (ESP-12E Module)". Si no te aparecen tarjetas ESP8266, retrocede a los pasos anteriores antes de avanzar más.

Paso 5
Ahora tan sólo es conectar nuestra placa al ordenador con el cable USB y comprobar si funciona. Al conectarla miramos que puerto COM nos ha asignado nuestro sistema operativo. En windows en el administrador de dispositivos, y en linux ejecutando dmseg en un terminal (en la ultima línea nos dice el puerto asignado al USB insertado).
Los parámetros de configuración que debemos poner son:


Paso 6 
Para probar si realmente nuestra placa funciona y está lista para ser programada, entramos en Archivos/Ejemplos/ESP y allí hay un ejemplo muy simple de programa que se llama blink. Esta rutina hace parpadear el led de test de nuestra placa. Lo cargamos, y le damos a la flecha de arriba para que lo suba al módulo ESP. Si todo es correcto, el led azul de nuestra placa comenzará a parpadear cada segundo. Si no, no sigas, y repasa los pasos anteriores, porque alguna configuración o conexión debe estar mal. Una vez este sencillo test funcione, estamos listos para el siguiente paso.

Paso 7
Ahora cargaremos dos librerías imprescindibles para que nuestro software meteo funcione:
NTP time es una librería para que el módulo sepa la hora exacta para realizar sus mediciones.
https://github.com/SensorsIot/NTPtimeESP

BME280 es la librería de gestión de los sensores de nuestra estación meteo.
https://github.com/sparkfun/SparkFun_BME280_Arduino_Library

En estas webs pulsamos el botón verde "Clone or Download" y "Download in ZIP". Nos lo descargamos en formato comprimido .ZIP.

Paso 8
Vamos al IDE de Arduino, y en apartado administrar librerías, pulsamos "cargar librería en ZIP".
Se suben ambas al IDE, y ya tenemos todo listo para cargar el software a nuestro ESP8266.

Paso 9
Ahora solamente tenemos que cargar el archivo .ino (te lo envío a tu e-mail) y lo subimos a nuestro módulo ESP8266. Si todo es correcto, nos indicará el IDE abajo, en letras naranja, 100% software cargado.

Paso 10
Para ponerlo en funcionamiento y configurar nuestra estación meteo, abrimos el terminal de Arduino (un botón muy pequeño a la derecha del todo de la pantalla), y escribimos la letra m enviando este comando al módulo. En seguida nos aparece el menú de configuración:

Configurando nuestra estación meteorológica

Pulsamos m desde el terminal de arduino, putty, o similar.

Config menu
0 Quit menu (Salir del menú)
1 format file system (Formatear todos los valores)
2 config wifi access point (Configurar la wifi de conexión)
3 config weather station (Configurar la estación meteorológica)
4 test ntp (Test de la hora NTP)
5 test bme 280 (Test del sensor BME280)
6 test server upload (Test de subida de datos al servidor)
7 print weather data logger (historic) (Sacar por terminal un histórico de mediciones)
8 create and erase weather data logger (Crear y borrar el log de mediciones)

Paso 1
Pulsamos 2 y enter, configurando los parámetros de la wifi a la que nos vamos a conectar. Ya sabes SSID y pasword.

Paso 2
Pulsamos 3 y enter. Configuramos nuestra estación meteorológica con los siguientes parámetros:

Indicativo (FWxxxx para indicativos CWOP)
                 (Radioaficionados utilizar el ssid -13 para aprs.fi)
Latitud      ej:4759.75N
Longitud   ej: 00012.21E
Server a donde enviaremos nuestras tramas ej: rotate.aprs.net
Intervalo de envío (recomendable cada 10 minutos o más, nunca menos)

Si eres radioaficionado con licencia en vigor, y sueles usar aprsdroid, has de editar el código fuente y donde pone pass 12345, has de poner tu pass id de aprs:
En la línea
sprintf(login, "user %s pass 12345 vers VERSION ESP8266", station.callsign)

Luego compilas, y grabas el código en el ESP como se indicó anteriormente.
Si no eres radioaficionado, puedes usar un indicativo gratuito que te otorguen en CWOP http://wxqa.com/ que llevaría el formato FWxxxx

Paso 3
Pulsamos 4 para ver que progresivamente aparece la hora y aumenta cada segundo.
Paso 4
Pulsamos 5 para ver las mediciones de nuestro sensor y que son más menos correctas
Paso 5
Pulsamos 6 y vemos si se realiza el envío de la trama al servidor configurado. Si el server acepta la trama no sucederá nada, pero si la rechaza, nos aparecerá el motivo de dicho rechazo para poder tracear el problema si lo hubiera.



Ahora solamente nos queda entrar en la web aprs.fi y verificar que aparecemos en el mapa y que los valores mostrados son correctos.

Podemos desconectar la estación del PC, y conectarla a cualquier cargador de móvil o USB que tenga energía, y nuestra estación meteo funcionará por si sola. Por cierto, el software también tiene un webserver. Si introduces la IP en un navegador, puedes ver los valores de la estación meteorológica vía web.

Espero que os haya gustado este sencillo proyecto. A disfrutarlo! Cualquier mejora que se os ocurra no dudéis en comentarla y documentarla. Todo es mejorable, entre todos!.

5 comentarios:

  1. Muchas gracias Antonio, a la espera de la version 2.0 con algun sensor más, como veleta, pluviometro, uv.... seria bueno poder subir los datos tambien a weather underground, ya que es uno de los mayores servers del mundo.

    73

    ResponderEliminar
  2. Antonio, muy buen artículo. Sigue en la brecha animando a la gente a cacharrear.
    Un abrazo.

    ResponderEliminar
  3. El fichero .ino os lo envío yo por mail. El colega Marco IU5HKU está trabajando en el software para poder subir los datos también a weather underground. Gracias por seguir este post. Iré actualizando. Saludos.

    ResponderEliminar
  4. Olá, António !
    Já encomendei o material para o teu projecto...
    Obrigado, 73's !
    José Melo - CT4TX

    ResponderEliminar