Mesurant la pressió atmosfèrica amb Raspberry Pi

Si volem conèixer i monitorar la pressió atmosfèrica de una forma barata… com no… aquest és el teu document! Podem fer ràpidament amb una Raspberry Pi y un sensor que a penas pasa de los 2 euros! En aquest post verem tots els passos que necessitarem per conseguirlo, a més com siempre… emmagatzemarem les medicions en una base de dades de MySQL i després visualitzarem amb precioses gràfiques els valors gràcies a Grafana!

 

Usaremos un pequeño sensor de presión baromètrica BMP180, amb ell podremos obtenir la temperatura, la presión atmosfèrica e fins i tot l'altitud!

 

La connexió GPIO del BMP180 seria muy sencillo, con la Raspberry Pi obviament apagada, conectamos del BMP180 la connexió VCC al Pin 1 (3.3v), GND a un port de tierra de la Raspberry Pi, el SCL al Pin 5 (GPIO03) o SCL1; i per l'últim la connexió SDA irà al Pin 3 (GPIO02) o SDA1 de la Pi.

 

Entendem que tenemos una Raspberry Pi funcional con Raspbian instalado, si no tenemos las connexions I2C habilitades, Ho tenemos que hacer executando

 

“sudo raspi-config” > Anem a “Interfacing Options”, habilitem “I2C” i reiniciem la Raspberry Pi.

 

I ara el maravillós, gràcies a Matt Hawkins, podremos descargarnos su script de Python y executarlo para obtenir los datos!!

[sourcecode]wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bme280.py

python bme280.py[/sourcecode]

 

Com veiem aquest script és per al BME280, que també tindria sensor d'humitat, l'script és totalment compatible, així que genial! Ara com hem dit, cada un ha de tractar les dades com vulgui, com sempre, i com ja sabeu, jo el que acostumo a fer és crear una tasca programada amb cron que executi l'script i el valor de pressió atmosfèrica el guardi en una base de dades de MySQL, després les dades les veig amb Grafana que queda xulíssim com ja sabeu! Així que si afegim això mateix al final de l'script aconseguirem emmagatzemar la pressió atmosfèrica a la BD:

[sourcecode]import sys
import MySQLdb
db = MySQLdb.connect("SERVIDOR_MYSQL","USUARIO","CONTRASEÑA","BASE_DE_DATOS")
cursor = db.cursor()
cursor.execute("""INSERT INTO presion_atmosferica (presio) VALUES (%s) """,( pressió))
db.commit()[/sourcecode]

 

I com sempre, per si us interessa us enganxo el text que necessiteu per crear la taula exactament igual que la tinc jo, però vaja que no té cap misteri, té 2 columnes, una per emmagatzemar la pressió i una altra la data (que en no permetre NULL doncs s'autocompleta cada vegada que s'introdueix el valor de pressió):

[sourcecode]CREATE TABLE `presio_atmosferica` (
`presio` FLOAT NULL DEFAULT NULL,
'fecha' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE =' latin1_swedish_ci’
ENGINE = InnoDB
ROW_FORMAT = COMPACT
;[/sourcecode]

 

I llest a Grafana, en un Dashboard que tinguem, super fàcil afegir un panell de tipus Graph i personalitzar-lo al gust, dedicar-hi 5 minuts que Grafana és super intuïtiu, en el meu cas tinc un connector MySQL que connecta contra la BD i amb aquesta Query tinc aquesta gràfica tan xula:

[sourcecode]SELECT presio as value, "Presion" as metric, UNIX_TIMESTAMP(data) as time_sec FROM presio_atmosferica WHERE $__timeFilter(data) order by time_sec asc[/sourcecode]

 

Llist!!! Espero que os resulte interessant! Ja tenim la pressió atmosfèrica monitoritzada! Perfecto para una estación meteorológica o que? Éxito!

 

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!

Novetats de Nakivo 7.4

28 de May de 2018