Taula de continguts:

Sistema de vigilància del clima interior basat en Raspberry Pi: 6 passos
Sistema de vigilància del clima interior basat en Raspberry Pi: 6 passos

Vídeo: Sistema de vigilància del clima interior basat en Raspberry Pi: 6 passos

Vídeo: Sistema de vigilància del clima interior basat en Raspberry Pi: 6 passos
Vídeo: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, De novembre
Anonim
Sistema de vigilància del clima interior basat en Raspberry Pi
Sistema de vigilància del clima interior basat en Raspberry Pi

Llegiu aquest bloc i creeu el vostre propi sistema perquè pugueu rebre alertes quan la vostra habitació estigui massa seca o humida.

Què és un sistema de vigilància del clima interior i per què el necessitem?

Els sistemes de control del clima interior ofereixen una mirada ràpida a estadístiques clau relacionades amb el clima, com ara la temperatura i la humitat relativa. Poder ser útil per veure aquestes estadístiques i rebre alertes al telèfon quan la sala sigui massa humida o seca. Mitjançant les alertes, podeu fer les accions ràpides necessàries per aconseguir el màxim confort a l'habitació, encenent l'escalfador o obrint les finestres. En aquest projecte, veurem com utilitzar Simulink per:

1) introduïu les estadístiques climàtiques (temperatura, humitat relativa i pressió) del Sense HAT al Raspberry Pi

2) mostra les dades mesurades a la matriu LED de 8x8 del Sense HAT

3) dissenyeu un algorisme per decidir si la humitat interior és "Bona", "Mala" o "Fea".

4) registreu les dades al núvol i envieu una alerta si les dades es classifiquen com a "lletges" (massa humides o seques).

Subministraments

Raspberry Pi 3 Model B.

Raspberry Pi Sense HAT

Pas 1: cal programari

Cal programari
Cal programari

Necessiteu MATLAB, Simulink i seleccioneu complements per seguir i construir el vostre propi sistema de control de clima interior.

Obriu MATLAB amb accés d'administrador (Feu clic amb el botó dret a la icona MATLAB i seleccioneu Executa com a administrador). Seleccioneu Complements a la barra d'eines MATLAB i feu clic a Obtén complements.

Cerqueu aquí els paquets d'assistència amb els noms que es mostren a continuació i "Afegiu-los".

a. Paquet de suport MATLAB per a maquinari Raspberry Pi: adquiriu entrades i envieu sortides a plaques Raspberry Pi i dispositius connectats

b. Paquet d'assistència Simulink per al maquinari Raspberry Pi: executeu models Simulink a les plaques Raspberry Pi

c. RPi_Indoor_Climate_Monitoring_System: Exemples de models necessaris per a aquest projecte

Nota: durant la instal·lació, seguiu les instruccions que apareixen a la pantalla per configurar el vostre Pi perquè funcioni amb MATLAB i Simulink.

Pas 2: porteu les dades del sensor a Raspberry Pi mitjançant Simulink

Porteu les dades del sensor a Raspberry Pi mitjançant Simulink
Porteu les dades del sensor a Raspberry Pi mitjançant Simulink

Per a aquells que no estiguin familiaritzats amb Simulink, és un entorn de programació gràfica que s’utilitza per modelar i simular sistemes dinàmics. Un cop hàgiu dissenyat l'algorisme a Simulink, podeu generar codi automàticament i inserir-lo en un Raspberry Pi o en un altre maquinari.

Escriviu el següent a la finestra d’ordres de MATLAB per obrir el primer model d’exemple. Utilitzarem aquest model per introduir dades de temperatura, pressió i humitat relativa al Raspberry Pi.

> rpiSenseHatBringSensorData

Els blocs Sensor de pressió LPS25H i Sensor d’humitat HTS221 són de la biblioteca Sense HAT del paquet de suport Simulink per a les biblioteques de maquinari Raspberry Pi.

Els blocs d’àmbit provenen de la biblioteca Sinks de les biblioteques Simulink. Per assegurar-vos que el vostre model està configurat correctament, feu clic a la icona d'engranatge del vostre model Simulink. Aneu a Implementació de maquinari> Configuració de la placa de maquinari> Destinació de recursos de maquinari.

Nota: no heu de configurar si heu seguit les instruccions de configuració mentre instal·leu el paquet de suport Simulink per a Raspberry Pi. L'adreça del dispositiu s'omple automàticament a la del vostre Pi.

Assegureu-vos que l’adreça del dispositiu coincideixi amb l’adreça IP que escolteu quan arrenca el Pi. És possible que hàgiu de tornar a alimentar el Pi amb un auricular connectat a la presa per escoltar l’adreça del dispositiu.

Feu clic a D'acord i premeu el botó Executa com es mostra a continuació. Assegureu-vos que el Pi estigui connectat físicament al PC mitjançant un cable USB o que estigui a la mateixa xarxa Wi-Fi que el vostre PC.

Quan premeu el botó Executa en mode extern, Simulink genera automàticament el codi C equivalent al vostre model i descarrega un executable al Raspberry Pi. Els dos blocs d’abast es configuren per obrir-se una vegada que el model comença a executar-se. Quan Simulink acabi de desplegar el codi al Raspberry Pi, veureu les dades de pressió, temperatura i humitat relativa als àmbits, tal com es mostra a continuació.

Nota: el codi s’executa al Raspberry Pi i esteu visualitzant els senyals reals a través dels blocs d’abast Simulink, tal com ho faria si teniu un oscil·loscopi connectat al propi maquinari. El valor de la temperatura dels dos sensors està lleugerament allunyat l’un de l’altre. No dubteu a triar la que reflecteixi més de prop la temperatura real de la vostra habitació i utilitzeu-la a les seccions següents. En totes les proves amb el Sense HAT que teníem, els valors de temperatura del sensor d’humitat HTS221 eren més propers a la temperatura real de l’habitació. Amb això, hem vist els conceptes bàsics sobre com incorporar dades del sensor del Sense HAT al Raspberry Pi.

Pas 3: mostra les dades del sensor a la matriu LED de 8x8

Mostra les dades del sensor a la matriu LED 8x8
Mostra les dades del sensor a la matriu LED 8x8
Mostra les dades del sensor a la matriu LED 8x8
Mostra les dades del sensor a la matriu LED 8x8

En aquesta secció, veurem com s’ha afegit la part visual d’aquest projecte al darrer model. Els elements Sense HAT que s’utilitzen en aquesta secció són el sensor d’humitat (per obtenir humitat i temperatura relativa), el sensor de pressió, la matriu LED i el joystick. El joystick s’utilitza per seleccionar quin sensor volem mostrar.

Per obrir el següent model d’exemple, escriviu el següent a la finestra d’ordres de MATLAB.

> rpiSenseHatDisplay

El bloc Joystick és de la biblioteca Sense HAT. Ens ajuda a portar les dades del joystick al Raspberry Pi, tal com van fer els blocs de sensors de pressió i humitat de l’exemple anterior. De moment, fem servir el bloc Test Comfort per mostrar "bo" (quan el valor del bloc és 1) a la matriu LED. Es mostrarà "dolent" quan el valor del bloc és 2 o "lleig" quan el valor és 3 o 4. A la secció següent, veurem l'algorisme real que decideix si la humitat interior és bona, dolenta o lletja. Explorem el bloc Selector fent doble clic damunt. Els blocs de funcions MATLAB s’utilitzen per integrar el codi MATLAB dins del vostre model Simulink. En aquest cas, introduïm SelectorFcn a continuació.

function [valor, estat] = SelectorFcn (JoyStickIn, pressió, humitat, temperatura, ihval)

JoyStickCount persistent

si és buit (JoyStickCount)

JoyStickCount = 1;

final

si JoyStickIn == 1

JoyStickCount = JoyStickCount + 1;

si JoyStickCount == 6

JoyStickCount = 1;

final

final

canvia JoyStickCount

cas 1% Temperatura de visualització en C

valor = temp;

Estat = 1;

caixa 2% Pressió de visualització en atm

valor = pressió / 1013,25;

Estat = 2;

cas 3% Mostra la humitat relativa en%

valor = humitat;

Estat = 3;

caixa 4% Temperatura de visualització en F

valor = temp * (9/5) +32;

Estat = 4;

caixa 5% Mostra bona / dolenta / lletja

valor = ihval;

Estat = 5;

altrament% No mostrar / mostrar 0

valor = 0;

Estat = 6;

final

Les sentències de cas entre majúscules s’utilitzen generalment com a mecanisme de control de selecció. En el nostre cas, volem que l’entrada del joystick sigui el control de selecció i seleccionem les dades següents que es mostraran cada vegada que es prem el botó del joystick. Per a això, configurem un bucle if que incrementa la variable JoyStickCount amb cada botó premut (el valor JoyStickIn és 1 si es prem un botó). Al mateix bucle, per assegurar-nos que només circulem entre les cinc opcions indicades anteriorment, hem afegit una altra condició que restableix el valor de la variable a 1. Mitjançant això, seleccionem quin valor es mostrarà a la matriu LED. El cas 1 serà el predeterminat, ja que definim JoyStickCount per començar a 1, i això significa que la matriu LED mostrarà la temperatura en centígrads. La variable d'estat la fa servir el bloc de dades de desplaçament per entendre quin valor del sensor es mostra actualment i quina unitat s'hauria de mostrar. Ara que ja sabem seleccionar el sensor adequat per visualitzar, vegem com funciona la pantalla real.

Visualització de caràcters i números

Per mostrar a la matriu LED Sense HAT, hem creat matrius de 8x8 per:

1) tots els números (0-9)

2) totes les unitats (° C, A,% i ° F)

3) punt decimal

4) alfabets de les paraules bo, dolent i lleig.

Aquestes matrius de 8x8 es van utilitzar com a entrada al bloc de matriu LED de 8x8 RGB. Aquest bloc il·lumina els LED corresponents a aquells elements de la matriu que tenen un valor 1 com es mostra a continuació.

Desplaçament del text

El bloc de dades de desplaçament del nostre model es desplaça per cadenes que poden tenir fins a 6 caràcters. Es va triar el valor de 6 ja que és la cadena més llarga que generarem en aquest projecte, per exemple, 23,8 ° C o 99,1 ° F. Tingueu en compte que aquí ° C es considera un caràcter. La mateixa idea es pot estendre també a les cadenes de desplaçament d'altres longituds.

Aquí teniu un-g.webp

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

Per mostrar una cadena de 6 caràcters cadascun a la matriu 8x8, necessitem una imatge de mida 8x48 en total. Per mostrar una cadena que tingui un màxim de 4 caràcters, haurem de crear una matriu de 8x32. Ara vegem la inacció completa prement el botó Executa. La visualització per defecte de la matriu LED és el valor de temperatura en ° C. El bloc Abast mostrarà l'estat i el valor del bloc Selector. Premeu el botó del joystick del Sense HAT i manteniu-lo premut durant un segon per verificar que el valor canvia a la següent sortida del sensor i repetiu aquest procés fins que arribi al valor de l'estat de 5. Per observar l'algorisme que canvia en tots els casos de classificació de la humitat interior canvieu el valor del bloc Test Comfort a qualsevol número entre l'1 al 4. Fixeu-vos en què canviar el valor d'un bloc al model Simulink canvia immediatament la forma en què el codi es comporta al maquinari. Això pot ser útil en situacions en què es vulgui canviar el comportament del codi des d'una ubicació remota. Amb això hem vist els elements claus darrere de l’aspecte de visualització del sistema de control del clima. A la següent secció aprendrem com completar el nostre sistema de control del clima interior.

Pas 4: dissenyar un algorisme a Simulink per decidir si la humitat interior és "bona", "dolenta" o "lletja"

Dissenyeu un algorisme a Simulink per decidir si la humitat interior és "bona", "dolenta" o "lletja"
Dissenyeu un algorisme a Simulink per decidir si la humitat interior és "bona", "dolenta" o "lletja"

Per comprendre si la vostra habitació és massa humida / seca o per saber quin nivell d'humitat interior es considera còmode, hi ha diversos mètodes. Mitjançant aquest article, vam establir una corba d’àrea per connectar la humitat relativa interior i les temperatures exteriors, tal com es mostra més amunt.

El valor d’humitat relativa d’aquesta zona significa que la vostra habitació es troba en un entorn còmode. Per exemple, si la temperatura exterior és de -30 ° F, qualsevol valor d’humitat relativa inferior al 15% és acceptable. De la mateixa manera, si la temperatura exterior és de 60 ° F, qualsevol humitat relativa inferior al 50% és acceptable. Per classificar la humitat interior en màxima comoditat (bona), confort mitjà (dolenta) o massa humida / seca (lletja), necessiteu temperatura exterior i humitat relativa. Hem vist com aportar humitat relativa al Raspberry Pi. Per tant, centrem-nos en la temperatura exterior. Escriviu el següent a la finestra d’ordres de MATLAB per obrir el model:

> rpiOutdoorWeatherData

El bloc WeatherData s’utilitza per obtenir temperatura externa de la vostra ciutat (en K) mitjançant https://openweathermap.org/. Per configurar aquest bloc, necessiteu una clau API del lloc web. Després de crear el vostre compte gratuït en aquest lloc web, aneu a la pàgina del compte. La pestanya de claus API que es mostra a continuació us proporciona la clau.

El bloc WeatherData necessita l’entrada del nom de la vostra ciutat en un format específic. Visiteu aquesta pàgina i introduïu el nom de la vostra ciutat i el símbol de la coma seguit de 2 lletres per indicar el país. Exemples: Natick, EUA i Chennai, IN. Si la cerca retorna un resultat per a la vostra ciutat, utilitzeu-lo al bloc WeatherData en aquest format específic. En cas que la vostra ciutat no estigui disponible, utilitzeu una ciutat veïna les condicions meteorològiques de la qual siguin més properes a la vostra. Ara feu doble clic al bloc WeatherData i introduïu el nom de la vostra ciutat i la vostra clau API des del lloc web.

Premeu Executar en aquest model Simulink per comprovar que el bloc pot portar la temperatura de la vostra ciutat al Raspberry Pi. Ara vegem l'algoritme que decideix si la humitat interior és bona, dolenta o lletja. Escriviu el següent a la finestra d'ordres de MATLAB per obrir el següent exemple:

> rpisenseHatIHval

És possible que hagueu notat que falta el bloc Test Comfort del model anterior i que un bloc nou anomenat FindRoom Comfort proporciona el bloc ihval al Selector. Feu doble clic sobre aquest bloc per obrir-lo i explorar-lo.

Estem utilitzant el bloc WeatherData per augmentar la temperatura exterior. El subsistema Límits d’humitat representa el gràfic d’humitat relativa vs temperatura exterior que hem vist més amunt. Depenent de la temperatura exterior generarà el valor límit màxim d'humitat. Obrim el bloc de funcions DecideIH MATLAB fent doble clic a sobre.

Si el valor d'humitat relativa supera el límit màxim d'humitat, el signe serà positiu segons la manera en què restem les dades, la qual cosa implica que l'habitació és massa humida. Estem produint un 3 (lleig) per a aquest escenari. La raó per la qual s’utilitzen els números en lloc de les cadenes és que es pot mostrar fàcilment als gràfics i crear alertes des de. La resta de classificacions de la funció MATLAB es basen en criteris arbitraris que hem elaborat. Quan la diferència és inferior a 10, es classifica com a màxim confort i, quan és inferior a 20, és de confort mitjà i, per sobre, és massa sec. No dubteu a executar aquest model i comproveu el nivell de confort de la vostra habitació.

Pas 5: registreu les dades climàtiques interiors i les dades classificades al núvol

Registre de dades climàtiques interiors i dades classificades al núvol
Registre de dades climàtiques interiors i dades classificades al núvol

En aquesta següent secció veurem com registrar dades al núvol. Per obrir aquest exemple, escriviu el següent a la finestra d'ordres de MATLAB.

> rpiSenseHatLogData

En aquest model, la part de visualització del model d’exemple anterior s’elimina a propòsit, ja que no necessitem que el sistema de monitorització mostri les estadístiques mentre es registren dades i s’envien alertes. Estem utilitzant ThingSpeak, una plataforma IoT de codi obert gratuïta que inclou analítiques MATLAB, per a l’aspecte del registre de dades. Vam triar ThingSpeak, ja que hi ha maneres directes de programar Raspberry Pi i altres plaques de maquinari de baix cost per enviar dades a ThingSpeak mitjançant Simulink. El bloc ThingSpeak Write prové del paquet de suport Simulink per a la biblioteca de maquinari Raspberry Pi i es pot configurar mitjançant la clau API API del canal ThingSpeak. A continuació es proporcionen instruccions detallades sobre com crear el canal. Per registrar contínuament dades al núvol, voleu que el vostre Pi funcioni independentment de Simulink. Per a això, podeu prémer el botó "Implementa al maquinari" al model Simulink.

Creeu el vostre propi canal ThingSpeak

Aquells que no tinguin cap compte es poden inscriure al lloc web de ThingSpeak. Si teniu un compte de MathWorks, tindreu automàticament un compte de ThingSpeak.

  • Un cop hàgiu iniciat la sessió, podeu crear un canal anant a Canals> Els meus canals i fent clic a Canal nou.
  • Tot el que necessiteu és un nom per al canal i noms per als camps que registrareu tal com es mostra a continuació.
  • L'opció Mostra la ubicació del canal necessita la latitud i la longitud de la vostra ciutat com a entrada i pot mostrar la ubicació dins del canal en un mapa. (Els valors d’exemple que s’utilitzen aquí són per a Natick, MA)
  • A continuació, premeu Desa el canal per acabar de crear el vostre canal.

4a. Alerta si les dades es classifiquen com a "lletges"

Per completar el nostre sistema de control del clima interior, hem de veure com rebre alertes basades en dades del núvol. Això és fonamental perquè, sense ella, no podreu fer les accions necessàries per canviar el nivell de confort a l'habitació. En aquesta secció, veurem com rebre una notificació al telèfon sempre que les dades del núvol indiquin que l’habitació és massa humida o seca. Ho aconseguirem utilitzant dos serveis: IFTTT Webhooks i ThingSpeak TimeControl. IFTTT (significa If this, then that) és un servei en línia que pot gestionar esdeveniments i activar accions basades en els esdeveniments.

Passos per configurar els webhooks IFTTT

Nota: Proveu-los a l'ordinador per obtenir els millors resultats.

1) Creeu un compte a ifttt.com (si no en teniu) i creeu un nou applet des de la pàgina Els meus applets.

2) Feu clic al botó blau "això" per seleccionar el servei d'activació.

3) Cerqueu i seleccioneu Webhooks com a servei.

4) Seleccioneu Rebre una sol·licitud web i proporcioneu un nom per a l'esdeveniment.

5) Seleccioneu crea activador.

6) Seleccioneu "que" a la pàgina següent i cerqueu notificacions.

7) Seleccioneu enviar una notificació des de l'aplicació IFTTT.

8) Introduïu el nom de l'esdeveniment que heu creat al pas 2 d'IFTTT i seleccioneu Crea acció.

9) Continueu fins arribar a l'últim pas, reviseu i premeu Finalitzar.

10) Aneu a https://ifttt.com/maker_webhooks i feu clic al botó Configuració a la part superior de la pàgina.

11) Aneu a l'URL de la secció Informació del compte.

12) Introduïu el nom de l'esdeveniment aquí i feu clic a "Prova-ho".

13) Copieu l'URL a l'última línia per a un ús futur (amb la clau).

Passos per configurar ThingSpeak TimeControl

1) Seleccioneu Aplicacions> Anàlisi MATLAB

2) Feu clic a Nou a la pàgina següent i trieu Trigger Email des d’IFTTT i feu clic a Crea.

Les peces importants aquí al codi de plantilla són:

Identificador de canal: introduïu el vostre canal ThingSpeak que tingui la informació de "val humitat interior".

IFTTTURL: introduïu l'URL copiat de la secció anterior Pas 13.

readAPIKey: tecla Enter de la secció ThingSpeak Channel. Action: la que actua sobre l'últim valor. Canvieu-lo pel següent per activar alertes.

3) Al lloc web de ThingSpeak, feu clic a Aplicacions> Control de temps.

4) Seleccioneu Recurrent i trieu una freqüència de temps.

5) Feu clic a Save TimeControl.

Ara MATLAB Analysis s’executa automàticament cada mitja hora i envia un activador al servei IFTTT Webhooks si el valor és superior o igual a 3. A continuació, l’aplicació telefònica IFTTT avisarà l’usuari amb una notificació tal com es mostra al començament d’aquesta secció.

Pas 6: Conclusió

Amb això hem vist tots els aspectes importants de com construir el vostre propi sistema de control del clima. En aquest projecte, hem vist com es pot utilitzar Simulink per:

  • programa un Raspberry Pi per incorporar dades de Sense HAT. Ressaltar: visualitzeu les dades a Simulink ja que el codi encara s’executa al Raspberry Pi.
  • construir la pantalla visual del sistema de vigilància del clima interior. Ressaltat: canvieu el comportament del vostre codi al maquinari des de Simulink.
  • dissenyar l’algorisme del sistema de control del clima interior.
  • registreu les dades del Raspberry Pi al núvol i creeu alertes a partir de les dades registrades.

Quins són alguns dels canvis que faria a aquest sistema de control del clima interior? Comparteix els teus suggeriments mitjançant comentaris.

Recomanat: