Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Raspberry Pi: realizzare una mini stazione meteo

Una guida passo passo alla realizzazione di una piccola stazione meteo completa con la single board Raspberry Pi
Una guida passo passo alla realizzazione di una piccola stazione meteo completa con la single board Raspberry Pi
Link copiato negli appunti

Tramite Raspberry Pi è possibile realizzare i progetti più disparati. Nelle guide precedenti abbiamo descritto ad esempio come costruire un NAS fai da te oppure come convertire tale board in Android TV box. Quest'oggi vogliamo focalizzarci sulla realizzazione di una piccola stazione meteo. Cosi da monitorare i principali valori climatici presenti nella nostra zona geografica. Nel dettaglio questo i  tutorial andrà a concentrarsi sul setup software e daremo sempre per scontato che tutti i componenti hardware addizionali e il set di sensori sia adeguatamente connesso e funzionate.

Creare una weather station con Raspberry Pi non è un procedimento complesso ma richiede qualche conoscenza informatica oltre ad una certa dimestichezza con l'hardware addizionale per le rivelazioni meteorologiche. In ogni caso con un po d'impegno tutti possono ottenere un device simile.

Hardware necessario

Raspberry Pi

Ovviamente per costruire questo strumento dovremo acquistare Raspberry Pi. Consigliamo l'ultimo modello in commercio, inoltre si deve reperire anche un sensore modello BME280 che consente di registrare la temperature, la pressione ed altri dati climatici. Non dimentichiamo di fornici di una scheda microSD, per ospitare il sistema operativo e le applicazioni, di un mouse e testiera oltre che di un display.

Installare e configurare Raspberry Pi OS

Prima di tutto dobbiamo provvedere al flash del sistema operativo sulla microSD. Inseriamo quindi la scheda nel computer e scarichiamo il file ISO di Raspberry Pi OS, la distribuzione Linux sviluppata dalla Raspberry Pi Foundation.

A questo punto dobbiamo affidarci all'imaging tool chiamato Raspberry Pi Imager con cui installeremo Raspberry Pi OS nella microSD. Avviamo tale programma e dal pulsante "Choose OS" selezioniamo il media d'installazione della distribuzione. Successivamente tramite il tasto "Choose Storage" indichiamo all'applicativo la microSD da utilizzare e clicchiamo su "Write" per avviare il processo di flashing.

L'intero procedimento dovrebbe durare qualche minuto. Al suo termine dobbiamo inserire la microSD nel Raspberry Pi. A questo punto siamo pronti per connettere il dispositivo all'alimentazione elettrica, ricordandoci anche di collegare il router tramite cavo ethernet oltre ovviamente ad inserire i cavi di: mouse, tastiera e monitor.

Configurare Oracle Raspberry Pi Weather Station

La community di developer open source ha sviluppato in questi anni diversi progetti software che posso interagire con i sensori meteorologici e mostrare i risultati ottenuti in modo chiaro e semplice. Per questa guida abbiamo scelto di affidarci ad Oracle Raspberry Pi Weather Station. Si tratta di un bundle di programmi con cui trasformare Raspberry Pi in una piccola stazione meteo raccogliendo i dati dai vari add-on hardware installati sulla board ARM.

Prima di tutto scarichiamo il codice sorgente e gli script d'installazione direttamente dal repository di GitHub, nota piattaforma di code sharing, sfruttando questo comando da inserire nella shell:

git clone https://github.com/RaspberryPiFoundation/weather-station

Adesso provvediamo a reperire le librerie ed i tool necessari al corretto funzionamento di Oracle Raspberry Pi Weather Station:

sudo apt upgrade && sudo apt upgrade

sudo apt install -y python3-pip mariadb-server mariadb-client libmariadbclient-dev

sudo pip3 install RPi.bme280 mysqlclient

Oltre ad utilizzare APT (Advanced Packaging Tool), il gestore di pacchetti di riferimento di Raspberry Pi OS ed in genere di tutte le distribuzioni basate su Debian, abbiamo sfruttato un ulteriore package management system chiamato PIP, installato tramite il pacchetto python3-pip. Grazie a questo software possiamo ottenere alcuni programmi e librerie necessari ai nostri scopi come RPi.bme280, usata per gestire i sensori, ed il client di MySQL, relational database management system sfruttato per creare il database dove immagazzinare e rendere disponibili i dati raccolti.

Creare uno script Python per interfacciassi con i sensori

Siamo ora pronti per implementare uno script in Python che ci consenta di comunicare con i sensori e di impartire ordini. Apriamo dunque l'IDE di Python 3 recandoci sul menu di sistema, poi sulla sezione "Programming" ed infine selezioniamo il programma chiamato Python 3 (IDLE).

python 3 idle

Per generare un nuovo documento di testo clicchiamo nella sezione "File" presente nel menu dell'applicativo e poi su "New File".

Adesso ci verrà aperta una seconda finestra dove potremo incollare questo script:

import bme280
import smbus2
from time import sleep
port = 1
address = 0x77 # Adafruit BME280 address. Other BME280s may be different
bus = smbus2.SMBus(port)
bme280.load_calibration_params(bus,address)
while True:
bme280_data = bme280.sample(bus,address)
humidity = bme280_data.humidity
pressure = bme280_data.pressure
ambient_temperature = bme280_data.temperature
print(humidity, pressure, ambient_temperature)
sleep(1)

script python bme280

Ora salviamo il file e posizioniamolo nella directory:

~/pi/weather-station/bme280_sensor.py

Ovviamente se il vostro nome utente è diverso dal classico "pi" modificate il percorso nel modo appropriato. A questo punto siamo pronti per eseguire il test dello script appena generato. Apriamo la shell e digitiamo:

cd ~/weather-station

sudo bme280_sensor.py

a schermo dovrebbero comparire i dati rilevati dai sensori. Possiamo ad esempio soffiare sopra uno di essi per generare qualche variabile da rilevare riavviando lo script.

Salvare i dati della stazione meteo in un database

Ora dobbiamo generare un database in cui tenere salvati i dati registrati dai sensori tramite lo script. Digitiamo dunque tali comandi in bash:

sudo mysql

create user pi IDENTIFIED by 'miapassword';

grant all privileges on *.* to 'pi' with grant option;

create database weather;

use weather;

ora dovrebbe apparire un promt dove inserire tali istruzioni:

CREATE TABLE WEATHER_MEASUREMENT(
ID BIGINT NOT NULL AUTO_INCREMENT,
REMOTE_ID BIGINT,
AMBIENT_TEMPERATURE DECIMAL(6,2) NOT NULL,
CREATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ( ID )
);

Adesso possiamo modificare il nostro script in modo tale che salvi i dati nel database appena creato. Aggiungiamo quindi tale stringa di testo all'inizio del file:

import database

Vanno incollate queste due direttive poco dopo la sezione del file che inizia con "while True":

db = database.weather_database()

db.insert(ambient_temp)

Ora salviamo le modifiche ed apriamo il file chiamato credentials.mysql presente nella dirctory ~/weather-station tramite l'editor di testo nano:

sudo nano ~/weather-station/credentials.mysql

dobbiamo assicurarci che questo file contenga i dati seguenti:

{
"HOST": "localhost",
"USERNAME": "pi",
"PASSWORD": "my54cr4t",
"DATABASE": "weather"
}

Se necessario salviamo le modifiche con CTRL+O e chiudiamo il documento con CTRL+X.

Test della stazione meteo

A questo punto posizionate Raspberry Pi dove preferite, l'importante è che sia connesso alla rete e all'alimentazione, quindi eseguite manualmente la rilevazione avviando lo script Python.

Se preferite potete fare in modo che ogni volta che si avvia il device venga eseguito lo script cosi da generare dati ad intervalli prestabiliti.

Apriamo nuovamente il terminale per modificare il file chiamato autostart che si trova nella home directory:

sudo nano ~/.config/lxsession/LXDE-pi/autostart

Alla fine del documento aggiungiamo questa stringa:

sudo /usr/bin/python3 /home/pi/weather-station/bme280_sensor.py

Mentre per interrogare il database basta lanciare questi comandi:

sudo mysql

use weather;

select count(*) from WEATHER_MEASUREMENT;

database meteo

Ti consigliamo anche