Sommario:
- Passaggio 1: selezione delle parti, strumenti e materiali
- Passaggio 2: collegamento del nostro hardware
- Passaggio 3: collegare tutto: configurare il Pi
- Passaggio 4: software/codice
- Passaggio 5: il recinto
Video: Stazione meteorologica RPi con sito Web reattivo: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Per un progetto scolastico abbiamo dovuto realizzare un dispositivo IoT con un sito Web per visualizzare le informazioni raccolte in modo piacevole. Ho scelto di realizzare una stazione meteorologica alimentata da un Raspberry Pi 3 con Flask per il sito Web reattivo, MySQL (MariaDB) per il mio database e uno script Python per raccogliere informazioni con tutti i miei sensori. Mi ci sono volute circa 2 settimane dall'inizio alla fine per il completamento.
Siamo stati incoraggiati a creare un'istruzione per condividere i nostri progressi con il resto della comunità fai-da-te, quindi eccolo qui!
Passaggio 1: selezione delle parti, strumenti e materiali
Per prima cosa avevo bisogno di capire che tipo di sensori erano essenziali per una stazione meteorologica. Ho deciso che volevo misurare tutti i seguenti dati:
- Temperatura
- Pressione dell'aria
- Umidità
- Velocità del vento
- Indice UV
Ecco tutti gli strumenti, i materiali e le parti che ho usato
Parti:
- DHT22/AM2302 per letture di temperatura e umidità. (15 euro)
- Adafruit BMP280 per pressione barometrica e temperatura. (12 euro)
- Adafruit SI1145 per la misurazione dell'Indice UV. (10 euro)
- Anemometro analogico Adafruit per misurare la velocità del vento (50 EUR)
- Un MCP3008 per convertire segnali analogici in digitali.
- Resistenza da 10kOhm come pull-up per il mio AM2302.
- Un adattatore da 9V per "alimentare" l'anemometro
- Un adattatore 5V per il Raspberry Pi
- Raspberry Pi 3 (qualsiasi Pi dovrebbe essere sufficiente)
Materiali:
Un contenitore di plastica per riporre tutto e renderlo resistente alla pioggia
Utensili:
- Saldatore e stagno
- Multimetro
- Silicone
- un po' di nastro
Quindi, in totale, tutti i sensori mi sono costati circa 85 euro, che è piuttosto ripido, ma volevo davvero includere un misuratore di velocità del vento adeguato, quindi penso che ne valga la pena.
Puoi trovare un elenco più dettagliato con i negozi in cui puoi acquistare tutto, nel pdf qui sotto:)
Passaggio 2: collegamento del nostro hardware
Ovviamente dovremo collegare i nostri sensori al nostro Raspberry Pi. Sopra puoi vedere lo schema fritzing che puoi seguire per collegare tutto correttamente.
Sullo schema puoi vedere che una batteria da 9 V viene utilizzata come fonte di alimentazione per il nostro anemometro, questo è correttamente utilizzato solo per i test poiché non durerà troppo a lungo, puoi sostituire la batteria da 9 V per qualsiasi fonte di alimentazione da 7-12 V scegliere.
I nostri sensori SI1145 e BMP280 saranno entrambi controllati utilizzando il protocollo I2C poiché è il più semplice da utilizzare e richiede meno cavi.
L'anemometro sullo schema è mostrato come un LDR qui poiché ha un cablaggio praticamente identico all'anemometro e non sono riuscito a trovare un vero anemometro da mettere sul mio schema fritzing:)
Passaggio 3: collegare tutto: configurare il Pi
Prima di tutto, dobbiamo assicurarci di essere connessi a Internet.
Per fare ciò nel terminale puoi andare al tuo file wpa_supplicant eseguendo il seguente comando:sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Nel file puoi aggiungere questo:
network={ssid= "Your_Wifi_SSID" psk="Your_Wifi_Password" key_mgmt=WPA-PSK
}
Puoi anche scegliere di impostare il tuo indirizzo IP su statico per un accesso più facile in futuro. Per farlo devi andare al file dhcpcd.conf eseguendo questo comando:sudo nano /etc/dhcpcd.conf
Aggiungi questo nel file:
interfaccia wlan0static ip_address=192.168.0.100/24
Quindi ci assicureremo che i pacchetti già installati sul nostro Pi siano completamente aggiornati:
sudo apt-get update && sudo apt-get upgrade
Potrebbe volerci un po' di tempo, quindi non preoccuparti
Dovrai abilitare il protocollo I2C e SPI all'interno di raspi config.puoi farlo eseguendo questo comando:
sudo raspi-config
Quindi vai alle opzioni di interfaccia e abilita entrambi, I2C e SPI
Per prima cosa devi creare una directory in cui vuoi inserire il tuo progetto (lo chiameremo "stazione meteorologica"):
cd ~mkdir weatherstationcd weatherstation
Quindi impostiamo il nostro ambiente virtuale python3:
python3 -m pip install --upgrade pip setuptools wheel virtualenvpython3 -m venv --system-site-packages envsource env/bin/activatepython -m pip install mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf
Quindi dovremo installare alcuni altri pacchetti necessari per far funzionare tutto correttamente:
sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3
Ora creeremo il nostro database:
Tuttavia, dobbiamo ancora configurare il nostro database. Puoi farlo eseguendo il file code/sql che si trova nella cartella "sql" in questo modo:
sudo mariadb < sql/db_init.sql
La query sql creerà le tabelle di cui abbiamo bisogno e anche alcuni utenti per rendere il nostro database un po' più sicuro.
Questo inserirà anche alcuni dati della cronologia di esempio nel nostro database per assicurarci che il nostro sito Web visualizzi tutto correttamente quando non sono ancora stati raccolti dati reali.
Per installare Adafruit_GPIO e MyPyDHT dovrai fare alcune altre cose. Prima torna alla tua cartella di utilizzo e poi:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py install
cd..git clone --recursive https://github.com/freedom27/MyPyDHTsudo python3 setup.py install
Passaggio 4: software/codice
Dobbiamo impostare il back-end per la stazione meteorologica, che include:
- Un database mariadb per memorizzare le letture dei miei sensori e alcune altre cose minori- Un servizio flask per l'esecuzione del sito Web.- Un altro servizio che esegue il file Python che legge tutti i sensori. Sopra puoi vedere la mia configurazione del database molto semplice. La tabella degli utenti è inutile, ma siccome volevo un sistema di login perchè io (anche se tutti i dati sono uguali per tutti gli utenti) ho deciso di includerlo nel mio database.
Puoi andare avanti e clonare il codice del mio progetto da Github nella cartella del tuo progetto. Vai alla cartella dell'utente ed esegui: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/
Quindi vai alla cartella conf in weatherstation e tutti i file nella cartella.
Cambia tutte le occorrenze di "USERNAME" con il tuo nome utente
Dovrai anche copiare entrambi i file.service su systemd e testarli in questo modo:
sudo cp conf/weatherstation-*.service /etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl start weatherstation-flask.servicesudo systemctl start weatherstation-sensor.service
sudo systemctl status weatherstation-*
Dobbiamo quindi modificare la configurazione di nginx.
sudo cp conf/nginx /etc/nginx/sites-available/weatherstationsudo rm /etc/nginx/sites-enabled/defaultsudo ln -s /etc/nginx/sites-available/weatherstation /etc/nginx/sites-enabled/weatherstationsudo systemctl riavviare nginx.servicesudo systemctl stato nginx.service
Se tutto è andato bene dovresti essere in grado di eseguire questo e ottenere un po' di html stampato nel terminale:
wget -qO - localhost
Tutto dovrebbe funzionare bene ora. Puoi navigare fino all'indirizzo IP del tuo Raspberry Pi che abbiamo impostato all'inizio ed essere accolto con una schermata di accesso.
Passaggio 5: il recinto
Ora che tutto funziona, dobbiamo mettere tutto in qualcosa.
Ho scelto una semplice scatola di plastica con un coperchio trasparente. L'anemometro è montato sopra di essa, così come un minuscolo contenitore secondario che contiene i sensori DHT22 e BMP280.
Questi sensori sono montati all'interno di un contenitore separato perché devono essere all'aria aperta (senza essere piovuti addosso), ma il lampone pi non ha bisogno di esserlo.
Come puoi vedere ho aggiunto del silicone intorno ai bordi per renderlo impermeabile. Ho anche praticato dei fori nel contenitore superiore per far entrare aria fresca.
Spero che la mia guida su come costruire una stazione meteorologica ti sia piaciuta, potrebbe essere un po' ruvida dato che è la prima volta che scrivo una guida come questa, ma spero che ti sia piaciuta comunque:)
Consigliato:
Uovo interattivo - Reattivo al suono e reattivo ai colpi: 4 passaggi
Interactive Egg - Sound Reactive e Knock Reactive: ho realizzato l' "Uovo interattivo" come un progetto per la scuola, dove dovevamo realizzare un concept e un prototipo. L'uovo risponde a un forte rumore con rumori di uccelli e se lo colpisci abbastanza forte 3 volte, si apre per alcuni secondi. È il primo
Striscia LED controllata da sito Web/WiFi con Raspberry Pi: 9 passaggi (con immagini)
Striscia LED controllata da sito Web/WiFi con Raspberry Pi: Background: Sono un adolescente e negli ultimi anni ho progettato e programmato piccoli progetti di elettronica, oltre a partecipare a concorsi di robotica. Di recente stavo lavorando all'aggiornamento della configurazione della mia scrivania e ho deciso che una bella aggiunta
Stazione meteorologica ESP8266 che visualizza i dati su un sito Web: 7 passaggi
Stazione meteorologica ESP8266 che visualizza i dati su un sito Web: Nota: parti di questo tutorial potrebbero essere disponibili in formato video sul mio canale YouTube - Tech Tribe. In questo tutorial, mostrerò come creare una stazione meteorologica che invii direttamente i dati al tuo sito Web . Pertanto, avrai bisogno del tuo dominio (Es:
Stazione meteorologica RPi e orologio digitale: 4 passaggi (con immagini)
Stazione meteorologica RPi e orologio digitale: questo è un progetto facile e veloce da realizzare e un bel display da mostrare. Visualizza sia l'ora, le condizioni meteorologiche che la temperatura. E se ti piace quello che vedi, seguimi su Instagram e Twitter (@Anders644PI) per stare al passo con quello che faccio. Il c
Tutorial IO del driver Web Utilizzo di un sito Web live ed esempi di lavoro: 8 passaggi
Esercitazione IO del driver Web utilizzando un sito Web attivo ed esempi di lavoro: Tutorial IO del driver Web utilizzando un sito Web attivo ed esempi funzionanti Ultimo aggiornamento: 26/07/2015 (Ricontrolla spesso mentre aggiorno queste istruzioni con maggiori dettagli ed esempi) SfondoHo avuto di recente una sfida interessante presentata a me. Avevo bisogno di