Sommario:

Monitoraggio della temperatura e dell'umidità con Raspberry Pi: 6 passaggi (con immagini)
Monitoraggio della temperatura e dell'umidità con Raspberry Pi: 6 passaggi (con immagini)

Video: Monitoraggio della temperatura e dell'umidità con Raspberry Pi: 6 passaggi (con immagini)

Video: Monitoraggio della temperatura e dell'umidità con Raspberry Pi: 6 passaggi (con immagini)
Video: Controllo di temperatura con un Raspberry Pi e Amazon AWS 2024, Dicembre
Anonim
Monitoraggio della temperatura e dell'umidità tramite Raspberry Pi
Monitoraggio della temperatura e dell'umidità tramite Raspberry Pi
Monitoraggio della temperatura e dell'umidità tramite Raspberry Pi
Monitoraggio della temperatura e dell'umidità tramite Raspberry Pi

L'estate sta arrivando e chi non ha un condizionatore d'aria dovrebbe essere pronto a controllare manualmente l'atmosfera all'interno. In questo post descrivo il modo moderno di misurare i parametri più importanti per il comfort umano: temperatura e umidità. Questi dati raccolti vengono inviati al cloud e lì elaborati.

Sto usando una scheda Raspberry Pi 1 e il sensore DHT22. Puoi fare lo stesso su qualsiasi computer dotato di Internet, GPIO e Python. Anche il sensore DHT11 più economico funziona bene.

Passaggio 1: preparazione dell'hardware

Preparazione dell'hardware
Preparazione dell'hardware
Preparazione dell'hardware
Preparazione dell'hardware

Cominciamo dall'inizio, dato che non usavo il mio Raspberry Pi da molto tempo.

Avremo bisogno:

  • Scheda Raspberry Pi (o altra piattaforma orientata all'IoT).
  • Scheda SD o microSD (a seconda della piattaforma).
  • 5V/1A tramite micro-USB.
  • Cavo LAN, che fornisce la connessione Internet.
  • Display HDMI, display RCA o porta UART (per abilitare SSH).

Il primo passo è scaricare Raspbian. Ho scelto la versione Lite, poiché utilizzerò SSH invece del display. Le cose sono cambiate dall'ultima volta che l'ho fatto: ora c'è un ottimo software di masterizzazione chiamato Etcher, che funziona perfettamente e ha un design straordinario.

Dopo che la masterizzazione dell'immagine è stata completata, ho inserito la scheda SD nel mio Pi, collegato la LAN e i cavi di alimentazione e, dopo un po', il mio router ha registrato il nuovo dispositivo.

Passaggio 2: abilitazione di SSH

Abilitazione di SSH
Abilitazione di SSH
Abilitazione di SSH
Abilitazione di SSH
Abilitazione di SSH
Abilitazione di SSH

SSH è disabilitato per impostazione predefinita. Posso utilizzare il convertitore UART-USB o semplicemente collegare un display per accedere alla shell e abilitare SSH.

Dopo il riavvio, sono finalmente entrato. Per prima cosa, aggiorniamo:

sudo apt update && sudo apt upgrade -y

Ora colleghiamo questo nuovo dispositivo al Cloud.

Passaggio 3: installazione di Cloud4RPi

Installazione di Cloud4RPi
Installazione di Cloud4RPi

Ho deciso di provare la piattaforma cloud chiamata Cloud4RPi, progettata per IoT.

Secondo i documenti, abbiamo bisogno dei seguenti pacchetti per farlo funzionare:

sudo apt install git python python-pip -y

La libreria client può essere installata con un unico comando:

sudo pip install cloud4rpi

Ora abbiamo bisogno di un codice di esempio per assicurarci che funzioni.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python git clone https://gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv e/minimal.py minimal.py && rmdir -re

Ho deciso di eseguire minimal.py, ma non mi piacciono i dati falsi. Fortunatamente, ho notato un modo semplice per rendere reali i dati diagnostici in questo esempio. Aggiungi un'altra importazione alla sezione delle importazioni:

dall'importazione rpi *

Quindi elimina queste funzioni che forniscono dati falsi (ora li definisce rpi.py):

def cpu_temp():

return 70 def ip_address(): return '8.8.8.8' def host_name(): return 'hostname' def os_name(): return 'osx'

Ora abbiamo bisogno di un token, che permetta a Cloud4RPi di collegare i dispositivi con gli account. Per ottenerne uno, crea un account su cloud4rpi.io e premi il pulsante Nuovo dispositivo in questa pagina. Sostituisci la stringa _YOUR_DEVICE_TOKEN_ nel file minimal.py con il token del tuo dispositivo e salva il file. Ora siamo pronti per il primo lancio.

python minimal.py

Apri la pagina del dispositivo e verifica che i dati siano presenti.

Passiamo ora ai dati del mondo reale.

Passaggio 4: collegamento del sensore

Collegamento del sensore
Collegamento del sensore

Avremo bisogno:

  • Sensore di umidità DHT22 o DHT11
  • Resistenza di pull-up (5-10 KΩ)
  • fili

Il sensore DHT22 misura contemporaneamente temperatura e umidità. Il protocollo di comunicazione non è standardizzato, quindi non è necessario abilitarlo in raspi-config: un semplice pin GPIO è più che sufficiente.

Per acquisire i dati, utilizzerò la fantastica libreria di Adafruit per i sensori DHT, ma potrebbe non funzionare così com'è. Una volta ho riscontrato uno strano ritardo costante nel codice, che non funzionava per il mio hardware, e dopo due anni la mia richiesta di pull è ancora in sospeso. Ho anche cambiato le costanti di rilevamento della scheda perché il mio Raspberry Pi 1 con BCM2835 è stato sorprendentemente rilevato come Raspberry Pi 3. Vorrei che fosse vero… Pertanto, consiglio di utilizzare il fork. Se riscontri problemi con esso, prova il repository originale, forse funziona per qualcuno, ma io non sono uno di loro.

git clone https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Poiché la libreria è scritta in C, richiede la compilazione, quindi sono necessari i pacchetti build-essential e python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Durante l'installazione dei pacchetti, collegare il DHT22 come mostrato nell'immagine.

E prova:

cd ~python -c "importa Adafruit_DHT come d; stampa d.read_retry(d. DHT22, 4)"

Se vedi qualcosa come (39.2000076293945, 22.600000381469727), dovresti sapere che questa è l'umidità in percentuale e la temperatura in Celsius.

Ora, assembliamo tutto insieme!

Passaggio 5: invio delle letture del sensore al cloud

Invio delle letture del sensore al cloud
Invio delle letture del sensore al cloud

Userò il minimal.py come base e aggiungerò l'interazione DHT22 al suo interno.

cd cloud4rpi-raspberrypi-python

cp minimal.py ~/cloud_dht22.py cp rpi.py ~/rpi.py cd vi cloud_dht22.py

Poiché DHT22 restituisce sia la temperatura che l'umidità in una singola chiamata, li memorizzo globalmente e li aggiorno solo una volta in una richiesta, supponendo che il ritardo tra di loro sia superiore a 10 secondi. Considera il seguente codice, che acquisisce i dati DHT22:

import Adafruit_DHT

temp, hum = None, None last_update = time.time() - 20 def update_data(): global last_update, hum, temp if time.time() - last_update > 10: hum, temp = Adafruit_DHT.read_retry(Adafruit_DHT. DHT22, 4) last_update = time.time() def get_t(): update_data() return round(temp, 2) se temp non è Nessun altro Nessuno def get_h(): update_data() return round(hum, 2) se hum non lo è Nessun altro Nessuno

Inserisci questo codice dopo le importazioni esistenti e modifica la sezione delle variabili in modo che utilizzi le nuove funzioni:

variabili = {

'DHT22 Temp': { 'type': 'numeric', 'bind': get_t }, 'DHT22 Humidity': { 'type': 'numeric', 'bind': get_h }, 'CPU Temp': { 'type ': 'numeric', 'bind': cpu_temp } }

Premi il pulsante rosso per avviare il trasferimento dei dati:

python cloud_dht22.py

Quindi puoi controllare la pagina del dispositivo.

Puoi lasciarlo così com'è, ma preferisco avere un servizio per tutto. Ciò garantisce che lo script sia sempre in esecuzione. Creazione di un servizio con lo script completamente automatizzato:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Avvio del servizio:

sudo service cloud4rpi start

E controllandolo:

pi@raspberrypi:~ $ sudo service cloud4rpi status -l

● cloud4rpi.service - demone Cloud4RPi Caricato: caricato (/lib/systemd/system/cloud4rpi.service; abilitato) Attivo: attivo (in esecuzione) da Mer 2017-05-17 20:22:48 UTC; 1min fa PID principale: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 /usr/bin/python /home/pi/cloud_dht22.py17 maggio 20:22:51 raspberrypi python[560]: pubblicazione iot -hub/messages: {'type': 'config', 'ts': '2017-05-17T20…y'}]} 17 maggio 20:22:53 raspberrypi python[560]: pubblicazione iot-hub/messages: {'type': 'data', 'ts': '2017-05-17T20:2…40'}}17 maggio 20:22:53 raspberrypi python[560]: pubblicazione iot-hub/messages: {'type': 'sistema', 'ts': '2017-05-17T20….4'}}

Se tutto funziona come previsto, possiamo andare avanti e utilizzare le capacità della piattaforma Cloud4RPi per manipolare i dati.

Passaggio 6: grafici e allarmi

Grafici e allarmi
Grafici e allarmi
Grafici e allarmi
Grafici e allarmi
Grafici e allarmi
Grafici e allarmi

Prima di tutto, tracciamo le variabili per vedere come cambiano. Questo può essere fatto aggiungendo un nuovo pannello di controllo e inserendo i grafici richiesti al suo interno.

Un'altra cosa che possiamo fare qui è impostare un avviso. Questa funzione consente di configurare l'intervallo di sicurezza per una variabile. Non appena l'intervallo viene superato, invia una notifica e-mail. Nella pagina di modifica del Pannello di controllo, puoi passare ad Avvisi e configurarne uno.

Subito dopo, l'umidità nella mia stanza ha iniziato a diminuire rapidamente senza alcun motivo evidente e l'allarme è arrivato presto.

Puoi utilizzare Cloud4RPi gratuitamente con qualsiasi hardware in grado di eseguire Python. Per quanto mi riguarda, ora so sempre quando accendere l'umidificatore e posso persino collegarlo a un relè per il controllo remoto tramite Cloud4RPi. Sono pronto per il caldo! Benvenuta estate!

Consigliato: