Estación meteorológica online con Raspberry Pi

Han pasado dos añitos desde que comencé el proyecto de la estación meteorológica con Raspberry y por fin puedo decir que está completamente terminado aunque realmente o estuvo en septiembre de 2017 aunque ha estado inactivo un largo periodo de tiempo.

El proyecto
 
El proyecto me llevó mes y medio del verano de 2017 dedicándole de 3h a 4h todos los días debido a que nunca había programado en python, php o html. Tampoco había trabajado con bases de datos ni creado páginas web desde 0, por lo que gran parte del tiempo fue invertido en aprender a base de ensayo y error.

El parón y fallo de sensores
Antes de nada…
La estación estuvo funcionando ininterrumpidamente desde septiembre del 2017 a enero del 2018. Cada vez que se iba la luz en casa la estación se apagaba, y por ese entonces tenía que ejecutar manualmente los tres scripts que registran los datos y toman las imágenes. Entre que no estaba viviendo en Burgos donde está la estación por lo que no podía acceder al router facilmente y que comenzaron los exámenes en la carrera, apagué la estación hasta que en marzo volví e instalé un SAI arreglando este problema.
Tal y como puede verse en la siguiente gráfica, en mayo la estación volvió a apagarse, pero esta vez se debió a un cambio de router que dió bastantes problemas, coincidiendo también con fechas de exámenes aparqué el proyecto hasta hoy en día. La pereza es muy mala, y embarcarse en otros proyectos tampoco ayuda…

En cuanto al fallo de sensores:
El termómetro más preciso en es ds18b20 y este está respaldado por el DHT 22 que también mide la humedad relativa. Este último valor ha ido perdiendo fiabilidad a lo largo del tiempo, por lo que a día de hoy no es fiable. Esto se solucionará cambiándolo en un futuro, pero para ello hay que desmontar la garita.
El barómetro funcionaba a la perfección hasta hace un par de días en los que abrí la arqueta y dejó de funcionar, seguramente por algún mal contacto de los cables, por lo que temporalmente lo he quitado de las gráficas.

El proyecto
La idea era la construcción de una estación meteorológica en la terraza
de mi casa en Burgos, con sensores fiables, datos en tiempo real, almacenamiento de los datos
en una base de datos, acceso a ellos mediante una página web y todo esto
a bajo coste.

La base fundamental para hacer esto, fue:

Sensores y hardware:

Placa Raspberry Pi 3 (37€), un ordenador en miniatura, de bajo coste y
que permite la entrada y salida de sensores mediante pines. Fue un
regalo.
– Sensor de temperatura y humedad DHT 22 (3€)
– Termómetro ds18b20 (2€) -> Muy fiable y preciso
– Barómetro y termómetro bmp 280 (10€) -> Tambíen muy fiable
– Raspberry pi cam noir V2 (35€) -> Web cam en infrarrojo
– Pluviómetro por cable (15€)

Garita y demás
– Arqueta hermética para la raspberry
– Tubo de PVC para el mástil
– SAI

En total, me salió por unos 70€ – 80€, sin contar las horas que le dediqué.

El elegir la Raspberry Pi para hacer este proyecyo, es debido a la
facilidad de su uso, su interfaz intuitiva (linux), conexión a internet
por Wifi, ya que estará en la terraza, y posibilidad de albergar una
base de datos en ella.

Proceso

Los sensores
Lo primero de todo fue hacer el cableado, conectar los sensores
individualmente a la Raspberry Pi (a partir de ahora Raspi), y buscar y
modificar los programas de cada uno de ellos para que funcionen
correctamente.
Esta parte de programación, la de los sensores y la Raspi, fue hecha en Python.

Como cualqueira que haya hecho algo de informática sabrá, uno sabe cuando
empieza pero no cuando acaba, ya que aparecen problemas por todos lados.
Y este proyecto no estuvo exento de ellos. Si a esto le añadimos que mi
conocimiento de Python era escaso, y fui medio aprendiendo a medida que
programaba, queda claro el por qué me ha llevado tanto tiempo tener
todo listo.

Cuando todos los sensores funcionaban perfectamente
por separado, pasé a hacer un script que al ejecutarlo, compilase los
datos de cada uno de los sensores y los guardase en un archivo cada X
tiempo. Esto se hizo con una rutina propia de la Raspi (crontab).
La ultima actualización consistió tanto en incluir en el archivo “crontab” unas líneas para que estos scripts se ejecuten automáticamente cuando se encienda la Raspi como de otro script que borra cada 2h los posibles picos de >3000% de humedad que da el higrómetro aleatoriamente.

La base de datos
Para realizar esta parte, me decanté por usar MySQL. Ahí creando varias
tablas, guardé los datos asignándoles fecha y hora. Es muy interesante
esta opción, la de MySQL ya que tiene una tremenda potencia a la hora de
tratar y operar con datos, más rápido que tratar con ellos una vez
descargados en el programa principal.

El programa que lo gestiona, está escrito en php. Su función principal es la de acceder a
los datos de los sensores guardados, meterlos en la base de datos, y
disponerlos cuando el programa general los pida para subirlos a la
página web.

La página web
Por último, la parte bonita y fachada de todo el trabajo, la página web,
esta hospedada en un servidor Apache albergado en la Raspi y sacado fuera de la red local mediante el servicio de dominio gratuito llamado no-ip. Este te da el dominio que tu elijas, y le añades un extensión. Todas las páginas
que se ven estan guardadas en la propia Raspi en forma de un archivo
escrito en html, php y java.

Poco a poco voy mejorando la interfaz, ya que no tenía ni idea de html al comenzarla, y aún me cuesta
bastante meter varias gráficas en la misma página y que se vean bien,
pero vaya, tiempo al tiempo.

La garita
En cuanto la garita, esta está construida siguiendo las instrucciones de
un compañero del foro https://foro.tiempo.com/, con platillos de tiesto, pintados de blanco
lacado.

Le añadí, al igual que hace él, un pequeño ventilador, pero con el
“intento de mejora” de alimentarlo con una pequeña placa solar con un
pila, sacado de una de esas luces LED para el jardín. Al cabo de unos
pocos días dejó de funcionar, pero oye, la idea ahí queda.

El mástil y la arqueta
Al mástil de pvc, le añadí un par de escuadras, una para la garita y otra
para el pluviómetro. También, en la parte baja para mejor acceso, le
puse la arqueta donde está alojada la Raspi.

El mástil fue asegurado con abrazaderas metálicas y bridas a una columna ya existente en la valla de mi terraza.

Y un detalle del interior de la arqueta:

Lo que se ve encima de la arqueta, es una carcasa protectora y articulada
que apañé para albergar la cámara de la Raspi. La articulación está
hecha con piezas de la GoPro, permitiendo ajustar la altura y azimut
para apuntar más fácilmente y la carcasa con el recipiente de unos
cascos, con la tapa de metacrilato transparente. Si lo hubiese hecho hoy en día hubiese impreso en 3D una carcasa poniendo una ventana de metacrilato, pero en su día no disponí aún de la impresora 3D.

Como había bastantes calbes, unos 3 por sensor, para evitar que andasen
muchos cables por ahí pululando, usé un cable ethernet, que tiene 8
calbes interiores y todos van integrados en uno.

En resumen
La estación cuenta con un higrómetro, tres termómetros, un barómetro y un
pluviómetro. También cuenta con una web cam en infrarrojo (mejor
detección de nubes por la noche y más sensible para largas exposiciones
nocturnas e identificación de estrellas) que se actualiza cada pocos
segundos.
En las gráficas se muestran dos de los termómetros, el
del DHT 22 y el ds18b20. El primero de vez en cuando da un pico de
humedad bastante extraño, que aun no identifico su causa, puede que
cambiándolo por otro se arregle el problema. Estos datos se refrescan cada 5 minutos.

Por último, dejaros el enlace a la página web de la estación: http://meteodarma.ddns.net/
La página está optimizada para ordenadores, no para móviles, por lo que algunas cosas salen movidas de sitio…

¡Espero
que os guste el proyectillo, y ya iré comentando nuevas modificaciones!

2 comentarios

  1. Hola,
    muy buen trabajo,
    he pensado hacer algo con una raspberry que tengo en casa.
    He localizado los sensores que nombras, pero no sé como encontrar un pluviómetro que valga. ¿Sabes algún modelo concreto?

    Gracias.

    Saludos,
    Jose.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *