Midiendo la presión atmosférica con Raspberry Pi
- Sara Peña

- 26 ene 2022
- 2 Min. de lectura
Si queremos conocer y monitorizar la presión atmosférica Podemos hacerlo rápidamente con una Raspberry Pi y un sensor. En este post veremos todos los pasos que necesitarás para conseguirlo, además como siempre… almacenaremos las mediciones en una base de datos de MySQL y luego visualizaremos con preciosas gráficas los valores gracias a Grafana!

Usaremos un pequeño sensor de presión barométrica BMP180, con él podremos obtener la temperatura, la presión atmosférica e incluso la altitud!

El conexionado GPIO del BMP180 sería muy sencillo, con la Raspberry Pi obviamente apagada, conectamos del BMP180 la conexión VCC al Pin 1 (3.3v), GND a un puerto de tierra de la Raspberry Pi, el SCL al Pin 5 (GPIO03) o SCL1; y por último la conexión SDA irá al Pin 3 (GPIO02) o SDA1 de la Pi.
Entendemos que tenemos una Raspberry Pi funcional con Raspbian instalado, si no tenemos las conexiones I2C habilitadas, lo tenemos que hacer ejecutando
“sudo raspi-config” > Vamos a “Interfacing Options”, habilitamos “I2C” y reiniciamos la Raspberry Pi.

Ahora el código:
Como vemos este script es para el BME280, que también tendría sensor de humedad, el script es totalmente compatible, así que genial! l script y el valor de presión atmosférica lo almacene en una base de datos de MySQL, luego los datos los veo con Grafana que queda Así que si añadimos esto mismo al final del script conseguiremos almacenar la presión atmosférica en la BD:
import sys
import MySQLdb
db = MySQLdb.connect("SERVIDOR_MYSQL","USUARIO","CONTRASEÑA","BASE_DE_DATOS")
cursor = db.cursor()
cursor.execute("""INSERT INTO presion_atmosferica (presion) VALUES (%s) """,( pressure))
db.commit()
Creamos una tabla sencilla exáctamente igual que la tengo yo, que tiene 2 columnas, una para almacenar la presión y otra la fecha (que al no permitir NULL pues se autocompleta cada vez que se mete el valor de presión):
CREATE TABLE `presion_atmosferica` (
`presion` FLOAT NULL DEFAULT NULL,
`fecha` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
ROW_FORMAT=COMPACT
;

Y listo en Grafana, en un Dashboard que tengamos, super fácil añadir un panel de tipo Graph y personalizarlo a gusto, dedicarle 5 minutos que Grafana es super intuitivo, en mi caso tengo un conector MySQL que conecta contra la BD.
SELECT presion as value, "Presion" as metric, UNIX_TIMESTAMP(fecha) as time_sec FROM presion_atmosferica WHERE $__timeFilter(fecha) order by time_sec asc
Listo!!! Espero que os resulte interesante! Ya tenemos la presión atmosférica monitorizada! Perfecto para una estación meteorológica ? Éxito!




Comentarios