Sommario:

Sistema di monitoraggio del clima interno basato su Raspberry Pi: 6 passaggi
Sistema di monitoraggio del clima interno basato su Raspberry Pi: 6 passaggi

Video: Sistema di monitoraggio del clima interno basato su Raspberry Pi: 6 passaggi

Video: Sistema di monitoraggio del clima interno basato su Raspberry Pi: 6 passaggi
Video: Raspberry Pi 5: Piccolo ma... INFIAMMABILE 😂 2024, Novembre
Anonim
Sistema di monitoraggio del clima interno basato su Raspberry Pi
Sistema di monitoraggio del clima interno basato su Raspberry Pi

Leggi questo blog e costruisci il tuo sistema in modo da poter ricevere avvisi quando la tua stanza è troppo secca o umida.

Che cos'è un sistema di monitoraggio del clima interno e perché ne abbiamo bisogno?

I sistemi di monitoraggio del clima interno forniscono una rapida occhiata alle statistiche chiave relative al clima come la temperatura e l'umidità relativa. Essere in grado di vedere queste statistiche e ricevere avvisi sul telefono quando la stanza è troppo umida o asciutta può essere molto utile. Utilizzando gli avvisi, è possibile intraprendere le azioni rapide necessarie per ottenere il massimo comfort nella stanza accendendo il riscaldamento o aprendo le finestre. In questo progetto vedremo come utilizzare Simulink per:

1) importare le statistiche climatiche (temperatura, umidità relativa e pressione) dal Sense HAT al Raspberry Pi

2) visualizzare i dati misurati sulla matrice LED 8x8 del Sense HAT

3) progettare un algoritmo per decidere se l'umidità interna è "buona", "cattiva" o "brutta".

4) registrare i dati sul cloud e inviare un avviso se i dati sono classificati come "brutti" (troppo umidi o secchi).

Forniture

Raspberry Pi 3 Modello B

CAPPELLO Raspberry Pi Sense

Passaggio 1: software necessario

Software necessario
Software necessario

Hai bisogno di MATLAB, Simulink e selezionare Add-Ons per seguire e costruire il tuo sistema di monitoraggio del clima interno.

Apri MATLAB con accesso amministratore (fai clic con il pulsante destro del mouse sull'icona MATLAB e seleziona Esegui come amministratore). Seleziona Componenti aggiuntivi da MATLAB Toolstrip e fai clic su Ottieni componenti aggiuntivi.

Cerca qui i pacchetti di supporto con i loro nomi elencati di seguito e "Aggiungi".

un. Pacchetto di supporto MATLAB per hardware Raspberry Pi: acquisisci input e invia output a schede Raspberry Pi e dispositivi collegati

B. Pacchetto di supporto Simulink per hardware Raspberry Pi: esegui modelli Simulink su schede Raspberry Pi

C. RPi_Indoor_Climate_Monitoring_System: modelli di esempio necessari per questo progetto

Nota: durante l'installazione, segui le istruzioni sullo schermo per configurare il tuo Pi in modo che funzioni con MATLAB e Simulink.

Passaggio 2: porta i dati del sensore su Raspberry Pi usando Simulink

Porta i dati del sensore su Raspberry Pi usando Simulink
Porta i dati del sensore su Raspberry Pi usando Simulink

Per coloro che non hanno familiarità con Simulink, è un ambiente di programmazione grafico che viene utilizzato per modellare e simulare sistemi dinamici. Dopo aver progettato il tuo algoritmo in Simulink, puoi generare automaticamente il codice e incorporarlo su un Raspberry Pi o altro hardware.

Digita quanto segue nella finestra di comando MATLAB per aprire il primo modello di esempio. Useremo questo modello per portare i dati di temperatura, pressione e umidità relativa nel Raspberry Pi.

>rpiSenseHatBringSensorData

I blocchi LPS25H Pressure Sensor e HTS221 Humidity Sensor provengono dalla libreria Sense HAT in Simulink Support Package per le librerie hardware Raspberry Pi.

I blocchi di ambito provengono dalla libreria Sink nelle librerie Simulink. Per assicurarti che il tuo modello sia configurato correttamente, fai clic sull'icona a forma di ingranaggio nel tuo modello Simulink. Passare a Implementazione hardware > Impostazioni scheda hardware > Risorse hardware di destinazione.

Nota – Non è necessario configurare se hai seguito le istruzioni di configurazione durante l'installazione del pacchetto di supporto Simulink per Raspberry Pi. L'indirizzo del dispositivo viene automaticamente popolato con quello del tuo Pi.

Assicurati che l'indirizzo del dispositivo qui corrisponda all'indirizzo IP che senti all'avvio del tuo Pi. Potrebbe essere necessario riaccendere il Pi con un auricolare collegato al jack per ascoltare l'indirizzo del dispositivo.

Fare clic su OK e premere il pulsante Esegui come mostrato di seguito. Assicurati che il tuo Pi sia fisicamente connesso al PC tramite cavo USB o sia sulla stessa rete Wi-Fi del tuo PC.

Quando premi il pulsante Esegui in modalità esterna, Simulink genera automaticamente il codice C equivalente al tuo modello e scarica un eseguibile sul Raspberry Pi. Entrambi i blocchi di ambito sono configurati per aprirsi una volta che il modello inizia a essere eseguito. Quando Simulink ha finito di distribuire il codice sul Raspberry Pi, vedrai i dati di pressione, temperatura e umidità relativa sugli oscilloscopi come mostrato di seguito.

Nota: il codice è in esecuzione sul Raspberry Pi e stai visualizzando i segnali effettivi attraverso i blocchi dell'oscilloscopio Simulink, proprio come faresti se avessi un oscilloscopio collegato all'hardware stesso. I valori di temperatura dei due sensori sono leggermente discosti l'uno dall'altro. Sentiti libero di scegliere quello che riflette più da vicino la temperatura effettiva nella tua stanza e usalo nelle sezioni successive. In tutti i test con il Sense HAT che abbiamo avuto, i valori di temperatura del sensore di umidità HTS221 erano più vicini alla temperatura effettiva nella stanza. Con ciò abbiamo visto le basi su come inserire i dati del sensore dal Sense HAT nel Raspberry Pi.

Passaggio 3: visualizzare i dati del sensore sulla matrice LED 8x8

Visualizza i dati del sensore sulla matrice LED 8x8
Visualizza i dati del sensore sulla matrice LED 8x8
Visualizza i dati del sensore sulla matrice LED 8x8
Visualizza i dati del sensore sulla matrice LED 8x8

In questa sezione, vedremo come la parte di visualizzazione visiva di questo progetto è stata aggiunta all'ultimo modello. Gli elementi Sense HAT utilizzati in questa sezione sono il sensore di umidità (per ottenere umidità relativa e temperatura), il sensore di pressione, la matrice LED e il joystick. Il joystick viene utilizzato per selezionare quale sensore vogliamo visualizzare.

Per aprire il prossimo modello di esempio, digita quanto segue nella finestra di comando di MATLAB.

> rpiSenseHatDisplay

Il blocco Joystick proviene dalla libreria Sense HAT. Ci aiuta a portare i dati del joystick nel Raspberry Pi, proprio come hanno fatto i blocchi del sensore di pressione e umidità nell'esempio precedente. Per ora, stiamo usando il blocco Test Comfort per visualizzare "buono" (quando il valore del blocco è 1) sulla matrice LED. Verrà visualizzato "cattivo" quando il valore del blocco è 2 o "brutto" quando il valore è 3 o 4. Nella sezione successiva, vedremo l'algoritmo effettivo che decide se l'umidità interna è buona, cattiva o brutta. Esploriamo il blocco Selector facendo doppio clic su di esso. I blocchi funzione MATLAB vengono utilizzati per integrare il codice MATLAB all'interno del modello Simulink. In questo caso stiamo introducendo SelectorFcn indicato di seguito.

funzione [valore, stato]= SelectorFcn(JoyStickIn, pressione, umidità, temperatura, ihval)

JoyStickCount persistente

se è vuoto (JoyStickCount)

JoyStickCount = 1;

fine

se JoyStickIn == 1

JoyStickCount = JoyStickCount + 1;

se JoyStickCount == 6

JoyStickCount = 1;

fine

fine

cambia JoyStickCount

caso 1 % Visualizzazione della temperatura in C

valore = temperatura;

Stato = 1;

caso 2 % Visualizzazione pressione in atm

valore = pressione/1013.25;

Stato = 2;

caso 3 % Visualizza umidità relativa in %

valore = umidità;

Stato = 3;

caso 4 % Visualizzazione della temperatura in F

valore = temperatura*(9/5)+32;

Stato = 4;

case 5 % Visualizza buono/cattivo/brutto

valore = ihval;

Stato = 5;

altrimenti % Non visualizzare/Mostra 0

valore = 0;

Stato = 6;

fine

Le istruzioni switch-case sono generalmente utilizzate come meccanismo di controllo della selezione. Nel nostro caso, vogliamo che l'input del joystick sia il controllo di selezione e selezioniamo i dati successivi da visualizzare ogni volta che viene premuto il pulsante del joystick. Per questo, impostiamo un ciclo if che incrementa la variabile JoyStickCount ad ogni pressione di un pulsante (il valore di JoyStickIn è 1 se viene premuto un pulsante). Nello stesso ciclo, per assicurarci di scorrere solo tra le cinque opzioni fornite sopra, abbiamo aggiunto un'altra condizione che ripristina il valore della variabile a 1. Usando questo, selezioniamo quale valore verrà visualizzato sulla matrice LED. Il caso 1 sarà l'impostazione predefinita poiché definiamo JoyStickCount per iniziare da 1, e questo significa che la matrice LED visualizzerà la temperatura in gradi Celsius. La variabile Stato viene utilizzata dal blocco dati Scroll per capire quale valore del sensore è attualmente visualizzato e quale unità deve essere visualizzata. Ora che sappiamo come selezionare il sensore giusto da visualizzare, diamo un'occhiata a come funziona il display effettivo.

Visualizzazione di caratteri e numeri

Per visualizzare sulla matrice LED Sense HAT, abbiamo creato matrici 8x8 per:

1) tutti i numeri (0-9)

2) tutte le unità (°C, A, % e °F)

3) punto decimale

4) alfabeti dalle parole buono, cattivo e brutto.

Queste matrici 8x8 sono state utilizzate come input per il blocco 8x8 RGB LED Matrix. Questo blocco accende i LED corrispondenti a quegli elementi sulla matrice che hanno valore 1 come mostrato di seguito.

Scorrimento del testo

Il blocco dati Scroll nel nostro modello scorre le stringhe che possono essere lunghe fino a 6 caratteri. Il valore di 6 è stato scelto poiché è la stringa più lunga che produrremo in questo progetto, ad esempio 23,8 °C o 99,1 °F. Nota, qui °C è considerato un carattere. La stessa idea può essere estesa anche a stringhe di scorrimento di altre lunghezze.

Ecco una-g.webp

www.element14.com/community/videos/29400/l/gif

Per visualizzare una stringa di 6 caratteri ciascuno sulla matrice 8x8, abbiamo bisogno di un'immagine di dimensioni 8x48 in totale. Per visualizzare una stringa lunga al massimo 4 caratteri, dovremo creare una matrice 8x32. Ora vediamo l'intera inazione premendo il pulsante Esegui. La visualizzazione predefinita sulla matrice LED è il valore della temperatura in °C. Il blocco Scope mostrerà lo stato e il valore dal blocco Selector. Premere il pulsante joystick sul Sense HAT e tenerlo premuto per un secondo per verificare che il valore passi all'uscita del sensore successiva e ripetere questo processo fino a raggiungere il valore di stato 5. Per osservare l'algoritmo che passa attraverso tutti i casi della categorizzazione dell'umidità interna, cambia il valore del blocco Test Comfort su qualsiasi numero compreso tra 1 e 4. Nota come la modifica del valore di un blocco sul modello Simulink cambia immediatamente il modo in cui il codice si comporta sull'hardware. Questo può essere utile in situazioni in cui si desidera modificare il comportamento del codice da una posizione remota. Con ciò abbiamo visto gli elementi chiave dietro l'aspetto della visualizzazione del sistema di monitoraggio del clima. Nella prossima sezione impareremo come completare il nostro sistema di monitoraggio del clima interno.

Passaggio 4: progettare un algoritmo in Simulink per decidere se l'umidità interna è "buona", "cattiva" o "brutta"

Progetta un algoritmo in Simulink per decidere se l'umidità interna è "buona", "cattiva" o "brutta"
Progetta un algoritmo in Simulink per decidere se l'umidità interna è "buona", "cattiva" o "brutta"

Per capire se la tua stanza è troppo umida/secca o per sapere quale livello di umidità interna è considerato confortevole, ci sono diversi metodi. Utilizzando questo articolo, abbiamo stabilito una curva di area per collegare l'umidità relativa interna e le temperature esterne come mostrato sopra.

Qualsiasi valore di umidità relativa in quest'area significa che la tua stanza è in un ambiente confortevole. Ad esempio, se la temperatura esterna è di -30 °F, è accettabile qualsiasi valore di umidità relativa inferiore al 15%. Allo stesso modo, se la temperatura esterna è di 60 ° F, è accettabile qualsiasi umidità relativa inferiore al 50%. Per classificare l'umidità interna in massimo comfort (buono), comfort medio (cattivo) o troppo umido/secco (brutto), sono necessarie la temperatura esterna e l'umidità relativa. Abbiamo visto come portare l'umidità relativa nel Raspberry Pi. Quindi, concentriamoci sul portare la temperatura esterna. Digita quanto segue nella finestra di comando MATLAB per aprire il modello:

> rpiOutdoorWeatherData

Il blocco WeatherData viene utilizzato per portare la temperatura esterna della tua città (in K) utilizzando https://openweathermap.org/. Per configurare questo blocco, è necessaria una chiave API dal sito web. Dopo aver creato il tuo account gratuito su questo sito web, vai alla pagina del tuo account. La scheda Chiavi API mostrata di seguito fornisce la chiave.

Il blocco WeatherData richiede l'inserimento del nome della tua città in un formato specifico. Visita questa pagina e inserisci il nome della tua città, quindi il simbolo della virgola seguito da 2 lettere per indicare il paese. Esempi: Natick, USA e Chennai, IN. Se la ricerca restituisce un risultato per la tua città, utilizzalo nel blocco WeatherData in quel formato specifico. Nel caso in cui la tua città non sia disponibile, usa una città vicina le cui condizioni meteorologiche sono più vicine alle tue. Ora fai doppio clic sul blocco WeatherData e inserisci il nome della tua città e la tua chiave API dal sito web.

Premi Esegui su questo modello Simulink per verificare che il blocco possa portare la temperatura della tua città nel Raspberry Pi. Vediamo ora l'algoritmo che decide se l'umidità interna è buona, cattiva o brutta. Digita quanto segue nella finestra di comando MATLAB per aprire il prossimo esempio:

>rpiseHatIHval

Potresti aver notato che manca il blocco Test Comfort del modello precedente e un nuovo blocco chiamato FindRoom Comfort fornisce il blocco ihval al selettore. Fare doppio clic su questo blocco per aprire ed esplorare.

Stiamo usando il blocco WeatherData per portare la temperatura esterna. Il sottosistema dei limiti di umidità rappresenta il grafico dell'umidità relativa rispetto alla temperatura esterna che abbiamo visto sopra. A seconda della temperatura esterna, verrà visualizzato il valore limite massimo di umidità. Apriamo il blocco funzione DecideIH MATLAB facendo doppio clic su di esso.

Se il valore dell'umidità relativa supera il limite massimo di umidità, il segno sarà positivo in base al modo in cui stiamo sottraendo i dati, il che implica che la stanza è troppo umida. Stiamo emettendo un 3 (brutto) per questo scenario. Il motivo alla base dell'utilizzo di numeri anziché di stringhe è che è facile da visualizzare sui grafici e da cui creare avvisi. Il resto delle classificazioni nella funzione MATLAB si basa su criteri arbitrari che abbiamo trovato. Quando la differenza è inferiore a 10 viene classificato comfort massimo e quando è inferiore a 20 è comfort medio e al di sopra è troppo asciutto. Sentiti libero di eseguire questo modello e controlla il livello di comfort della tua stanza.

Passaggio 5: registra i dati sul clima interno e i dati categorizzati sul cloud

Registra i dati sul clima interno e i dati categorizzati sul cloud
Registra i dati sul clima interno e i dati categorizzati sul cloud

In questa prossima sezione vedremo come registrare i dati sul cloud. Per aprire questo esempio, digita quanto segue nella finestra di comando di MATLAB.

> rpiSenseHatLogData

In questo modello, la parte di visualizzazione del modello di esempio precedente viene intenzionalmente rimossa poiché non è necessario che il sistema di monitoraggio mostri le statistiche durante la registrazione dei dati e l'invio di avvisi. Utilizziamo ThingSpeak, una piattaforma IoT open source gratuita che include l'analisi MATLAB, per l'aspetto della registrazione dei dati. Abbiamo scelto ThingSpeak poiché esistono modi diretti per programmare Raspberry Pi e altre schede hardware a basso costo per inviare dati a ThingSpeak utilizzando Simulink. Il blocco ThingSpeak Write proviene dal pacchetto di supporto Simulink per la libreria hardware Raspberry Pi e può essere configurato utilizzando la chiave API Write dal tuo canale ThingSpeak. Di seguito sono fornite istruzioni dettagliate su come creare il canale. Per registrare continuamente i dati sul cloud, vuoi che il tuo Pi funzioni indipendentemente da Simulink. Per questo, puoi premere il pulsante "Distribuisci nell'hardware" nel tuo modello Simulink.

Crea il tuo canale ThingSpeak

Chi non ha un account può registrarsi sul sito di ThingSpeak. Se hai un account MathWorks, hai automaticamente un account ThingSpeak.

  • Una volta effettuato l'accesso, puoi creare un canale andando su Canali > I miei canali e facendo clic su Nuovo canale.
  • Tutto ciò di cui hai bisogno è un nome per il canale e nomi per i campi che registrerai come mostrato di seguito.
  • L'opzione Mostra posizione canale richiede la latitudine e la longitudine della tua città come input e può mostrare la posizione all'interno del canale su una mappa. (I valori di esempio usati qui sono per Natick, MA)
  • Quindi premi Salva canale per completare la creazione del tuo canale.

4a. Avvisa se i dati sono classificati come "brutti"

Per completare il nostro sistema di monitoraggio del clima interno, dobbiamo vedere come ricevere avvisi basati sui dati cloud. Questo è fondamentale perché, senza di esso, non sarai in grado di intraprendere le azioni necessarie per modificare il livello di comfort nella stanza. In questa sezione vedremo come ricevere una notifica sul telefono ogni volta che i dati cloud indicano che la stanza è troppo umida o secca. Raggiungeremo questo obiettivo utilizzando due servizi: IFTTT Webhooks e ThingSpeak TimeControl. IFTTT (acronimo di If this, then that) è un servizio online in grado di gestire eventi e attivare azioni in base agli eventi.

Passaggi per configurare i webhook IFTTT

Nota: provali su un computer per ottenere i migliori risultati.

1) Crea un account su ifttt.com (se non ne hai uno) e crea una Nuova Applet dalla pagina Le mie Applet.

2) Fare clic sul pulsante blu "questo" per selezionare il servizio di attivazione.

3) Cerca e scegli Webhook come servizio.

4) Selezionare Ricevi una richiesta Web e fornire un nome per l'evento.

5) Selezionare Crea trigger.

6) Seleziona "quello" nella pagina successiva e cerca le notifiche.

7) Selezionare invia una notifica dall'app IFTTT.

8) Inserisci il nome dell'evento che hai creato nel passaggio 2 di IFTTT e seleziona crea azione.

9) Continua fino a raggiungere l'ultimo passaggio, rivedi e premi Fine.

10) Vai su https://ifttt.com/maker_webhooks e fai clic sul pulsante Impostazioni nella parte superiore della pagina.

11) Vai all'URL nella sezione Informazioni account.

12) Inserisci qui il nome del tuo evento e fai clic su "Test It".

13) Copia l'URL nell'ultima riga per usi futuri (con la chiave).

Passaggi per configurare ThingSpeak TimeControl

1) Seleziona App> Analisi MATLAB

2) Fare clic su Nuovo nella pagina successiva e selezionare Attiva email da IFTTT e fare clic su Crea.

I pezzi importanti qui nel codice del modello sono:

ID canale: inserisci il tuo canale ThingSpeak che contiene le informazioni sulla "valori umidità interna".

IFTTTURL: inserisci l'URL copiato dalla sezione precedente Passaggio 13.

readAPIKey – Chiave di invio della sezione ThingSpeak Channel. Action – quella che agisce sull'ultimo valore. Modificalo come segue per attivare gli avvisi.

3) Sul sito web di ThingSpeak, fare clic su App > TimeControl.

4) Selezionare Ricorrente e scegliere una frequenza temporale.

5) Fare clic su Salva TimeControl.

Ora MATLAB Analysis viene eseguito automaticamente ogni mezz'ora e invia un trigger al servizio IFTTT Webhooks se il valore è maggiore o uguale a 3. Quindi l'app del telefono IFTTT avviserà l'utente con una notifica come mostrato all'inizio di questa sezione.

Passaggio 6: conclusione

Con ciò abbiamo visto tutti gli aspetti importanti di come costruire il proprio sistema di monitoraggio del clima. In questo progetto, abbiamo visto come utilizzare Simulink per:

  • programmare un Raspberry Pi per importare dati da Sense HAT. Evidenzia - Visualizza i dati in Simulink poiché il codice è ancora in esecuzione sul Raspberry Pi.
  • costruire il display visivo del sistema di monitoraggio del clima interno. Evidenzia - Cambia il modo in cui il tuo codice si comporta sull'hardware da Simulink.
  • progettare l'algoritmo del sistema di monitoraggio del clima interno.
  • registra i dati dal Raspberry Pi sul cloud e crea avvisi dai dati registrati.

Quali sono alcuni dei cambiamenti che faresti a questo sistema di monitoraggio del clima interno? Si prega di condividere i tuoi suggerimenti tramite commenti.

Consigliato: