
Misurazione della pressione atmosferica con Raspberry Pi
Se vogliamo conoscere e monitorare la pressione atmosferica in modo economico… Come potresti non farlo… Questo è il tuo documento! Possiamo farlo rapidamente con un Raspberry Pi e un sensore che va a malapena oltre il 2 Euro! In questo post vedremo tutti i passaggi necessari per raggiungerlo, Anche come sempre… memorizzeremo le misure in un database MySQL e poi visualizzeremo i valori con bellissimi grafici grazie a Grafana!
Utilizzeremo un piccolo sensore di pressione barometrica BMP180, con esso possiamo ottenere la temperatura, pressione atmosferica e altitudine uniforme!
La connessione GPIO del BMP180 sarebbe molto semplice, con il Raspberry Pi ovviamente spento, ci colleghiamo dalla connessione BMP180 VCC al Pin 1 (3.3v), GND su una porta onshore Raspberry Pi, SCL a pin 5 (GPIO03) o SCL1; e infine la connessione SDA andrà al Pin 3 (GPIO02) o Pi SDA1.
Sappiamo di avere un Raspberry Pi funzionante con Raspbian installato, se non abbiamo le connessioni I2C abilitate, Dobbiamo farlo eseguendo
“sudo raspi-config” > Stiamo per “Opzioni di interfacciamento”, Abilitiamo “I2C” e riavvia il Raspberry Pi.
E ora il meraviglioso, grazie a Matt Hawkins, possiamo scaricare il suo script Python ed eseguirlo per ottenere i dati!!
[Codice sorgente]wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bme280.py
Python bme280.py[/Codice sorgente]
Come possiamo vedere questo script è per il BME280, che avrebbe anche un sensore di umidità, Lo script è completamente supportato, Così grande! Ora che ho detto, Ognuno deve trattare i dati come vuole, come al solito, E come già sai, Quello che faccio di solito è creare un'attività pianificata con cron che esegue lo script e memorizza il valore della pressione atmosferica in un database MySQL, poi vedo i dati con Grafana È molto bello, come sapete! Quindi, se aggiungiamo questo alla fine dello script, saremo in grado di memorizzare la pressione atmosferica nel DB:
[Codice sorgente]Importa sistema
importare MySQLdb
db = MySQLdb.connect("SERVIDOR_MYSQL","UTENTE","PAROLA CHIAVE","BASE_DE_DATOS")
cursore = db.cursore()
cursore.execute("""INSERIRE IN presion_atmosferica (Pressione) VALORI (%s) """,( pressione))
db.commit()[/Codice sorgente]
E come sempre, Nel caso fossi interessato, incollerò il testo necessario per creare la tabella esattamente come l'ho, ma non ha alcun mistero, Ha 2 Colonne, uno per memorizzare la pressione e l'altro la data (che non consentendo NULL si completa automaticamente ogni volta che viene impostato il valore di pressione):
[Codice sorgente]CREA TABELLA 'presion_atmosferica' (
'pressure' FLOAT NULL DEFAULT NULL,
'date' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='latin1_swedish_ci’
ENGINE=InnoDB
ROW_FORMAT=COMPATTO
;[/Codice sorgente]
E pronto a Grafana, in una Dashboard che abbiamo, super facile aggiungere un pannello di tipo grafico e personalizzarlo a proprio piacimento, Spendere 5 minuti che Grafana è super intuitivo, nel mio caso ho un connettore MySQL che si connette contro il DB e con questa Query ho quel bel grafo:
[Codice sorgente]SELECT pressione come valore, "Pressione" come metrico, UNIX_TIMESTAMP(dattero) COME time_sec DA presion_atmosferica DOVE $ __timeFilter(dattero) Ordina per time_sec ASC[/Codice sorgente]
Pronto!!! Spero che lo troviate interessante! Abbiamo già monitorato la pressione atmosferica! Perfetto per una stazione meteorologica o che? Successo!