Crear tu propia estación meteorológica con Python
Esta es la introccuión de una serie de posts en los que se va a mostrar como leer datos de sensores tanto digitales como analógicos, procesarlos, enviarlos a una base de datos y mostrarlos en tu web. Todo el proceso está diseñado para ser modular y poder añadir nuevos sensores, o eliminarlos, con facilidad por ello cada sensor tendrá su propia clase en Python, su propio modelo en el back-end (Laravel) y su propia tabla en la base de datos.
Sensores y componentes
Se pueden registrar una gran variedad de parámetros. En este caso vamos a registrar un total de 18 parámetros parámetros. Los sensores a usar y datos que recoge cada uno son los siguientes:
- SHT31: Lectura de temperatura y humedad. Se usarán dos. Uno para registrar datos y otro para los sensores de gas.
- TSL2561: Intensidad de luz visible e infrarroja.
- BMP180: Presión atmosférica y temperatura.
- MS-WH-SP-WS02: Kit de veleta, anemómetro, pluviometro y carcasa para sensor de temperatura. Se puede usar cualqueir otro modelo, suelen tener el mismo funcionamiento.
- MQ2: Sensor de gas para GPL, propano, hidrógeno, alcohol, humo y metano.
- MQ3: Sensor de gas para Alcohol y Benceno.
- MQ4: Sensor de gas para metano y GPL.
- MQ5: Sensor de gas para GPL, metano.
- MQ7: Sensor de gas para hidrógeno y monóxido de carbono.
- MQ8: Sensor de gas para hidrógeno.
- MQ9: Sensor de gas para monóxido de carbono y GPL.
- MQ135: Sensor de gas para Acetona, tolueno y alcohol.
A parte de estos sensores se está usando otros componentes como son una Raspberry pi 3 modelo B con Raspbian y una alimentación externa S-50-5 para los sensores de gas que consumen mucha electricidad.
Lenguajes a utilizar
- Python: Usado para leer los sensores, procesar los datos y enviarlos al servidor.
- PHP (Laravel): Guardar los datos en la base de datos y pedirlos para mostrarlos en la web.
- SQL: Se usa una base de datos mysql pero se puede usar cualquier otro. Mantiene almacenado los registros de todos los sensores.
- Java Script: Procesar los datos que verá el usuario y mostrar gráficas de cada parámetro.
- html y css: Se va comentar lo mínimo ya que cada un es libre de mostrarlo como guste.
Costes
Esta es una estación de bajo presupuesto en el que los sensores a usar pueden llegar a ser algo impreciso como es en el caso de los sensores MQ pero vale la pena debido a que el coste total por mi parte han sido de 344.61€ mientras que una profesional cuesta miles de euros y no es tan versatil como la que vamos a montar. Podemos ver en la tabla de precios todo lo que se va a usar para este proyecto:
Nombre | Cant. | Pieza | Envío | Aduanas | Total |
---|---|---|---|---|---|
PCB Adafruit Perma-Proto | 2 | 9.91€ | 1.58€ | 0€ | 21.40€ |
Raspberry Pi 3 Plus | 1 | 38.95€ | 3.30€ | 0€ | 42.25€ |
Pack cable puentes 120 uds. | 2 | 5.49€ | 0€ | 0€ | 10.98€ |
Adaptado RJ12 Hembra | 2 | 0.37€ | 0€ | 0€ | 0.74€ |
Resistencia 4,7 Kohm | 1 | 0.02€ | 0€ | 0€ | 0.02€ |
ADC ADS1115 | 3 | 1.52€ | 1.17€ | 0€ | 5.73€ |
BMP180 GY68 | 1 | 0.39€ | 0.97€ | 0€ | 1.36€ |
MS-WH-SP-WS02 | 1 | 38.87€ | 36.72€ | 32.11€ | 107.70€ |
TSL2561 GY-2561 | 1 | 3.80€ | 1.18€ | 0€ | 4.98€ |
SHT31-D | 2 | 2.36€ | 0.97€ | 0€ | 5.69€ |
Micro SD 8GB | 1 | 4.00€ | 0€ | 0€ | 4.00€ |
Cargador 5V 2.5A | 1 | 4.00€ | 0€ | 0€ | 4.00€ |
Alimentador S-50-5 de Leadstar | 1 | 15.99€ | 0€ | 0€ | 15.99€ |
Tarro de cristal | 1 | 0.75€ | 0€ | 0€ | 0.75€ |
Cinta de aluminio | 2 | 2.00€ | 0€ | 0€ | 4.00€ |
Cable extra 30 metros | 1 | 7.00€ | 0€ | 0€ | 7.00€ |
Servidor compartido (1 año) | 1 | 53.00€ | 0€ | 0€ | 53.00€ |
Dominio pabloduran.es | 1 | 10.00€ | 0€ | 0€ | 10.00€ |
Estructura metálica | 1 | 30.00€ | 0€ | 0€ | 30.00€ |
Pack sensores MQ 9 uds. | 1 | 11.71€ | 3.37€ | 0€ | 15.07€ |
Total | 263.30€ | 49.26€ | 32.11€ | 344.67€ |