Cuprins:
- Provizii
- Pasul 1: software necesar
- Pasul 2: Aduceți datele senzorului la Raspberry Pi folosind Simulink
- Pasul 3: Afișați datele senzorului pe matricea LED 8x8
- Pasul 4: Proiectați un algoritm în Simulink pentru a decide dacă umiditatea interioară este „bună”, „rea” sau „urâtă”
- Pasul 5: Înregistrați datele climatice interioare și datele clasificate pe cloud
- Pasul 6: Concluzie
Video: Sistem de monitorizare a climei interioare bazat pe Raspberry Pi: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Citiți acest blog și construiți-vă propriul sistem, astfel încât să puteți primi alerte atunci când camera dvs. este prea uscată sau umedă.
Ce este un sistem de monitorizare a climei interioare și de ce avem nevoie de unul?
Sistemele de monitorizare a climei interioare oferă o privire rapidă asupra statisticilor cheie legate de climă, cum ar fi temperatura și umiditatea relativă. Posibilitatea de a vedea aceste statistici și de a primi alerte pe telefonul dvs. atunci când camera este prea umedă sau uscată poate fi foarte utilă. Folosind alertele, puteți întreprinde acțiunile rapide necesare pentru a obține un confort maxim în cameră, pornind încălzitorul sau deschizând ferestrele. În acest proiect, vom vedea cum se folosește Simulink pentru:
1) aduceți statistici climatice (temperatură, umiditate relativă și presiune) de la Sense HAT în Raspberry Pi
2) afișați datele măsurate pe matricea LED 8x8 a Sense HAT
3) proiectați un algoritm pentru a decide dacă umiditatea interioară este „bună”, „rea” sau „urâtă”.
4) înregistrați datele pe cloud și trimiteți o alertă dacă datele sunt clasificate „Urât” (prea umed sau uscat).
Provizii
Raspberry Pi 3 Model B.
Raspberry Pi Sense HAT
Pasul 1: software necesar
Aveți nevoie de MATLAB, Simulink și selectați programe de completare pentru a urmări și a vă construi propriul sistem de monitorizare a climei interioare.
Deschideți MATLAB cu acces de administrator (Faceți clic dreapta pe pictograma MATLAB și selectați Run as administrator). Selectați Suplimente din Banda de instrumente MATLAB și faceți clic pe Obțineți Suplimente.
Căutați aici pachetele de asistență cu numele lor enumerate mai jos și „Adăugați-le”.
A. Pachet de asistență MATLAB pentru hardware Raspberry Pi: obțineți intrări și trimiteți ieșiri către plăcile Raspberry Pi și dispozitivele conectate
b. Pachet de asistență Simulink pentru hardware Raspberry Pi: Rulați modele Simulink pe plăcile Raspberry Pi
c. RPi_Indoor_Climate_Monitoring_System: Exemple de modele necesare pentru acest proiect
Notă - În timpul instalării, urmați instrucțiunile de pe ecran pentru a configura Pi-ul dvs. pentru a funcționa cu MATLAB și Simulink.
Pasul 2: Aduceți datele senzorului la Raspberry Pi folosind Simulink
Pentru cei care nu sunt familiarizați cu Simulink, este un mediu grafic de programare care este utilizat pentru modelarea și simularea sistemelor dinamice. Odată ce ați proiectat algoritmul dvs. în Simulink, puteți genera automat cod și îl puteți încorpora pe un Raspberry Pi sau pe alt hardware.
Tastați următoarele în fereastra de comandă MATLAB pentru a deschide primul exemplu de model. Vom folosi acest model pentru a aduce date despre temperatură, presiune și umiditate relativă în Raspberry Pi.
> rpiSenseHatBringSensorData
Blocurile senzorului de presiune LPS25H și senzorului de umiditate HTS221 provin din biblioteca Sense HAT din pachetul de asistență Simulink pentru bibliotecile hardware Raspberry Pi.
Blocurile de scop sunt din biblioteca Sinks din bibliotecile Simulink. Pentru a vă asigura că modelul dvs. este configurat corect, faceți clic pe pictograma roată din modelul dvs. Simulink. Navigați la Implementare hardware> Setări placă hardware> Țintă resurse hardware.
Notă - Nu trebuie să configurați dacă ați urmat instrucțiunile de configurare în timp ce instalați pachetul de asistență Simulink pentru Raspberry Pi. Adresa dispozitivului este completată automat cu cea a dispozitivului Pi.
Asigurați-vă că adresa dispozitivului de aici se potrivește cu adresa IP pe care o auziți când pornește Pi. S-ar putea să trebuiască să re-alimentați Pi-ul cu un căști conectat la mufă pentru a auzi adresa dispozitivului.
Faceți clic pe OK și apăsați butonul Executare așa cum se arată mai jos. Asigurați-vă că Pi-ul dvs. este fie conectat fizic la computer prin cablu USB, fie că se află în aceeași rețea Wi-Fi ca PC-ul dvs.
Când apăsați butonul Executare în modul extern, Simulink generează automat codul C echivalent cu modelul dvs. și descarcă un executabil pe Raspberry Pi. Ambele blocuri de domeniu sunt configurate pentru a se deschide odată ce modelul începe să ruleze. Când Simulink este finalizat cu implementarea codului pe Raspberry Pi, veți vedea datele de presiune, temperatură și umiditate relativă pe domenii, așa cum se arată mai jos.
Notă - Codul rulează pe Raspberry Pi și vizualizați semnalele reale prin blocurile de scop Simulink, la fel cum ați face dacă ați avea un osciloscop conectat la hardware-ul în sine. Valoarea temperaturii de la cei doi senzori este ușor separată una de cealaltă. Simțiți-vă liber să o alegeți pe cea care reflectă mai mult temperatura reală din camera dvs. și să o utilizați în secțiunile următoare. În toate testele cu Sense HAT pe care le-am avut, valorile de temperatură ale senzorului de umiditate HTS221 au fost mai apropiate de temperatura reală din cameră. Cu aceasta am văzut noțiunile de bază despre cum să introducem datele senzorilor de la Sense HAT în Raspberry Pi.
Pasul 3: Afișați datele senzorului pe matricea LED 8x8
În această secțiune, vom vedea cum partea de afișare vizuală a acestui proiect a fost adăugată la ultimul model. Elementele Sense HAT care sunt utilizate în această secțiune sunt senzorul de umiditate (pentru a obține umiditatea relativă și temperatura), senzorul de presiune, matricea LED și joystick-ul. Joystick-ul este utilizat pentru a selecta senzorul pe care dorim să îl afișăm.
Pentru a deschide următorul exemplu de model, tastați următoarele în fereastra de comandă MATLAB.
> rpiSenseHatDisplay
Blocul Joystick este din biblioteca Sense HAT. Ne ajută să aducem datele joystick-ului în Raspberry Pi, la fel cum au făcut blocurile senzorilor de presiune și umiditate din exemplul anterior. Pentru moment, folosim blocul Test Comfort pentru a afișa „bine” (când valoarea blocului este 1) pe matricea LED. Se va afișa „rău” atunci când valoarea blocului este 2 sau „urât” când valoarea este fie 3 sau 4. În secțiunea următoare, vom vedea algoritmul real care decide dacă umiditatea interioară este bună, rea sau urâtă. Să explorăm blocul Selector făcând dublu clic pe el. Blocurile funcționale MATLAB sunt utilizate pentru a integra codul MATLAB în modelul dvs. Simulink. În acest caz, aducem SelectorFcn prezentat mai jos.
function [value, State] = SelectorFcn (JoyStickIn, presiune, umiditate, temp, ihval)
JoyStickCount persistent
dacă este gol (JoyStickCount)
JoyStickCount = 1;
Sfârșit
dacă JoyStickIn == 1
JoyStickCount = JoyStickCount + 1;
dacă JoyStickCount == 6
JoyStickCount = 1;
Sfârșit
Sfârșit
comutați JoyStickCount
caz 1% Temperatura de afișare în C
valoare = temp;
State = 1;
caz 2% Presiunea afișată în atm
valoare = presiune / 1013,25;
Stat = 2;
3% Afișează umiditatea relativă în%
valoare = umiditate;
Stat = 3;
caz 4% Temperatura de afișare în F
valoare = temp * (9/5) +32;
Stat = 4;
carcasă 5% Afișare Bună / Rău / Urâtă
valoare = ihval;
Stat = 5;
altfel% Nu afișează / Afișează 0
valoare = 0;
Stat = 6;
Sfârșit
Instrucțiunile de caz-comutare sunt utilizate în general ca mecanism de control al selecției. În cazul nostru, dorim ca intrarea joystick-ului să fie controlul selecției și să selectăm următoarele date de afișat de fiecare dată când este apăsat butonul joystick-ului. Pentru aceasta, configurăm o buclă if care mărește variabila JoyStickCount la fiecare apăsare a butonului (valoarea JoyStickIn este 1 dacă există o apăsare a butonului). În aceeași buclă, pentru a ne asigura că mergem doar între cele cinci opțiuni date mai sus, am adăugat o altă condiție care resetează valoarea variabilă la 1. Folosind aceasta, selectăm ce valoare va fi afișată pe matricea LED. Cazul 1 va fi implicit, deoarece definim JoyStickCount pentru a începe de la 1, iar acest lucru înseamnă că matricea LED va afișa temperatura în grade Celsius. Variabila State este utilizată de blocul de date Scroll pentru a înțelege care este valoarea senzorului care este afișată în prezent și ce unitate ar trebui să fie afișată. Acum, că știm cum să selectăm senzorul potrivit pentru afișare, să vedem cum funcționează afișajul real.
Afișarea caracterelor și numerelor
Pentru a afișa pe matricea LED Sense HAT, am creat matrici 8x8 pentru:
1) toate numerele (0-9)
2) toate unitățile (° C, A,% și ° F)
3) punctul zecimal
4) alfabete din cuvintele bune, rele și urâte.
Aceste matrice 8x8 au fost utilizate ca intrare în blocul 8x8 RGB LED Matrix. Acest bloc aprinde LED-urile corespunzătoare acelor elemente de pe matrice care au valoarea 1 așa cum se arată mai jos.
Derularea textului
Blocul de date Scroll din modelul nostru derulează prin șiruri care pot avea până la 6 caractere. A fost aleasă valoarea 6 deoarece acesta este cel mai lung șir pe care îl vom scoate în acest proiect, de exemplu 23,8 ° C sau 99,1 ° F. Notă, aici ° C este considerat un singur caracter. Aceeași idee poate fi extinsă și la șirurile de derulare de alte lungimi.
Iată un-g.webp
www.element14.com/community/videos/29400/l/gif
Pentru a afișa un șir de 6 caractere fiecare pe matricea 8x8, avem nevoie de o imagine cu dimensiunea de 8x48 în total. Pentru a afișa un șir care are maximum 4 caractere, va trebui să creăm o matrice 8x32. Acum să vedem întreaga acțiune inacțiune apăsând butonul Executare. Afișajul implicit pe matricea LED este valoarea temperaturii în ° C. Blocul Scope va afișa starea și valoarea din blocul Selector. Apăsați butonul joystick-ului de pe Sense HAT și țineți apăsat o secundă pentru a verifica dacă valoarea se schimbă la următoarea ieșire a senzorului și repetați acest proces până când atinge valoarea de stat de 5. Pentru a observa algoritmul care trece prin toate cazurile de clasificare a umidității interioare, modificați valoarea blocului Test Comfort la orice număr între 1 și 4. Observați cum modificarea valorii unui bloc pe modelul Simulink modifică imediat modul în care se comportă codul pe hardware. Acest lucru poate fi util în situațiile în care se dorește modificarea modului în care se comportă codul dintr-o locație la distanță. Cu aceasta am văzut elementele cheie din spatele aspectului de vizualizare a sistemului de monitorizare a climei. În secțiunea următoare vom învăța cum să finalizăm sistemul nostru de monitorizare a climei interioare.
Pasul 4: Proiectați un algoritm în Simulink pentru a decide dacă umiditatea interioară este „bună”, „rea” sau „urâtă”
Pentru a înțelege dacă camera dvs. este prea umedă / uscată sau pentru a afla ce nivel de umiditate interioară este considerat confortabil, există mai multe metode. Folosind acest articol, am stabilit o curbă de zonă pentru a conecta umiditatea relativă interioară și temperaturile exterioare așa cum se arată mai sus.
Orice valoare a umidității relative din această zonă înseamnă că camera dvs. se află într-un cadru confortabil. De exemplu, dacă temperatura exterioară este de -30 ° F, atunci orice valoare a umidității relative sub 15% este acceptabilă. La fel, dacă temperatura exterioară este de 60 ° F, atunci orice umiditate relativă sub 50% este acceptabilă. Pentru a clasifica umiditatea interioară în confort maxim (bun), confort mediu (rău) sau prea umed / uscat (urât), aveți nevoie de temperatură exterioară și umiditate relativă. Am văzut cum să aducem umiditate relativă în Raspberry Pi. Deci, să ne concentrăm pe aducerea temperaturii exterioare. Tastați următoarele în fereastra de comandă MATLAB pentru a deschide modelul:
> rpiOutdoorWeatherData
Blocul WeatherData este utilizat pentru a aduce temperatura externă a orașului dvs. (în K) folosind https://openweathermap.org/. Pentru a configura acest bloc, aveți nevoie de o cheie API de pe site. După crearea contului gratuit pe acest site, accesați pagina contului dvs. Fila API chei prezentată mai jos vă oferă cheia.
Blocul WeatherData are nevoie de introducerea numelui orașului dvs. într-un format specific. Accesați această pagină și introduceți numele orașului, apoi simbolul virgulă urmat de 2 litere pentru a indica țara. Exemple - Natick, SUA și Chennai, IN. Dacă căutarea returnează un rezultat pentru orașul dvs., utilizați-l în blocul WeatherData în formatul respectiv. În cazul în care orașul dvs. nu este disponibil, utilizați un oraș vecin ale cărui condiții meteorologice sunt mai apropiate de ale voastre. Acum faceți dublu clic pe blocul WeatherData și introduceți numele orașului și cheia API de pe site.
Apăsați Run pe acest model Simulink pentru a verifica dacă blocul poate aduce temperatura orașului dvs. în Raspberry Pi. Acum să vedem algoritmul care decide dacă umiditatea interioară este bună, rea sau urâtă. Tastați următoarele în fereastra de comandă MATLAB pentru a deschide următorul exemplu:
> rpisenseHatIHval
Este posibil să fi observat că lipsește blocul Test Comfort din modelul anterior și un nou bloc numit FindRoom Comfort oferă ihval blocului Selector. Faceți dublu clic pe acest bloc pentru a deschide și a explora.
Folosim blocul WeatherData pentru a aduce temperatura exterioară. Subsistemul Limite de umiditate reprezintă diagrama Umidității relative față de temperatura exterioară pe care am văzut-o mai sus. În funcție de temperatura exterioară, va genera valoarea limită maximă de umiditate. Să deschidem blocul funcțional DecideIH MATLAB făcând dublu clic pe el.
Dacă valoarea umidității relative depășește limita maximă de umiditate, atunci semnul va fi pozitiv pe baza modului în care scădem datele, ceea ce înseamnă că camera este prea umedă. Producem un 3 (urât) pentru acest scenariu. Motivul din spatele utilizării numerelor în loc de șiruri este că este ușor de afișat pe grafice și de a crea alerte din. Restul clasificărilor din funcția MATLAB se bazează pe criterii arbitrare pe care le-am venit. Atunci când diferența este mai mică de 10, este clasificat un confort maxim și atunci când este mai mic de 20 este un confort mediu și peste acesta este prea uscat. Simțiți-vă liber să rulați acest model și să verificați nivelul de confort al camerei.
Pasul 5: Înregistrați datele climatice interioare și datele clasificate pe cloud
În următoarea secțiune vom vedea cum se înregistrează date pe cloud. Pentru a deschide acest exemplu, tastați următoarele în fereastra de comandă MATLAB.
> rpiSenseHatLogData
În acest model, porțiunea de afișare a modelului de exemplu anterior este eliminată în mod intenționat, deoarece nu este nevoie ca sistemul de monitorizare să afișeze statisticile în timp ce înregistrează datele și trimite alerte. Folosim ThingSpeak, o platformă gratuită IoT open-source care include analize MATLAB, pentru aspectul înregistrării datelor. Am ales ThingSpeak, deoarece există modalități directe de a programa Raspberry Pi și alte plăci hardware ieftine pentru a trimite date către ThingSpeak folosind Simulink. Blocul de scriere ThingSpeak este din pachetul de asistență Simulink pentru biblioteca Raspberry Pi Hardware și poate fi configurat folosind cheia API de scriere de pe canalul ThingSpeak. Instrucțiuni detaliate despre cum să creați canalul sunt furnizate mai jos. Pentru a conecta continuu date în cloud, doriți ca Pi-ul dvs. să funcționeze independent de Simulink. Pentru aceasta, puteți apăsa butonul „Deploy to Hardware” din modelul dvs. Simulink.
Creați-vă propriul canal ThingSpeak
Cei care nu au un cont se pot înscrie pe site-ul ThingSpeak. Dacă aveți un cont MathWorks, atunci aveți automat un cont ThingSpeak.
- După ce v-ați conectat, puteți crea un canal accesând Canalele> Canalele mele și făcând clic pe Canal nou.
- Tot ce aveți nevoie este un nume pentru canal și nume pentru câmpurile pe care urmează să le înregistrați, după cum se arată mai jos.
- Opțiunea Afișați locația canalului are nevoie de latitudine și longitudinea orașului dvs. ca intrare și poate afișa locația din interiorul canalului pe o hartă. (Valorile de exemplu utilizate aici sunt pentru Natick, MA)
- Apoi apăsați Salvare canal pentru a finaliza crearea canalului.
4a. Alertă dacă datele sunt clasificate „Urât”
Pentru a finaliza sistemul nostru de monitorizare a climei interioare, trebuie să vedem cum să primim alerte pe baza datelor cloud. Acest lucru este esențial pentru că, fără el, nu veți putea întreprinde acțiunile necesare pentru a schimba nivelul de confort din cameră. În această secțiune, vom vedea cum să primiți o notificare pe telefonul dvs. ori de câte ori datele din cloud indică faptul că camera este prea umedă sau uscată. Vom realiza acest lucru folosind două servicii: IFTTT Webhooks și ThingSpeak TimeControl. IFTTT (înseamnă If this, then that) este un serviciu online care poate gestiona evenimente și declanșa acțiuni pe baza evenimentelor.
Pași pentru configurarea IFTTT Webhooks
Notă: Încercați aceste pe computer pentru cele mai bune rezultate.
1) Creați un cont pe ifttt.com (dacă nu aveți unul) și creați un applet nou din pagina Apletele mele.
2) Faceți clic pe butonul albastru „acest” pentru a selecta serviciul de declanșare.
3) Căutați și alegeți Webhooks ca serviciu.
4) Selectați Receive a Web Request și furnizați un nume pentru eveniment.
5) Selectați crearea declanșatorului.
6) Selectați „that” în pagina următoare și căutați notificări.
7) Selectați trimiteți o notificare din aplicația IFTTT.
8) Introduceți numele evenimentului pe care l-ați creat la pasul 2 din IFTTT și selectați creați acțiune.
9) Continuați până ajungeți la ultimul pas, revizuiți și apăsați Finalizare.
10) Accesați https://ifttt.com/maker_webhooks și faceți clic pe butonul Setări din partea de sus a paginii.
11) Accesați adresa URL din secțiunea Informații despre cont.
12) Introduceți numele evenimentului aici și faceți clic pe „Testați-l”.
13) Copiați adresa URL pe ultima linie pentru utilizare viitoare (cu cheia).
Pași pentru configurarea ThingSpeak TimeControl
1) Selectați Aplicații> Analiză MATLAB
2) Faceți clic pe Nou în pagina următoare și alegeți Trigger Email din IFTTT și faceți clic pe Creare.
Piesele importante aici în codul șablonului sunt:
ID canal - Introduceți canalul ThingSpeak care are informațiile despre „umiditatea interioară”.
IFTTTURL - Introduceți adresa URL copiată din secțiunea anterioară Pasul 13.
readAPIKey - Tasta Enter a secțiunii ThingSpeak Channel. Action - cea care acționează asupra ultimei valori. Schimbați-l la următorul pentru a declanșa alerte.
3) Pe site-ul web ThingSpeak, faceți clic pe Aplicații> TimeControl.
4) Selectați Recurent și alegeți o frecvență de timp.
5) Faceți clic pe Save TimeControl.
Acum MATLAB Analysis rulează automat la fiecare jumătate de oră și trimite un declanșator către serviciul IFTTT Webhooks dacă valoarea este mai mare sau egală cu 3. Apoi aplicația telefonică IFTTT va alerta utilizatorul cu o notificare așa cum se arată la începutul acestei secțiuni.
Pasul 6: Concluzie
Cu aceasta am văzut toate aspectele importante ale modului în care vă puteți construi propriul sistem de monitorizare a climei. În acest proiect, am văzut cum poate fi folosit Simulink pentru -
- programează un Raspberry Pi pentru a aduce date de la Sense HAT. Evidențiați - Vizualizați datele în Simulink deoarece codul rulează în continuare pe Raspberry Pi.
- construiți afișajul vizual al sistemului de monitorizare a climei interioare. Evidențiați - Schimbați modul în care codul dvs. se comportă asupra hardware-ului de la Simulink.
- proiectați algoritmul sistemului de monitorizare a climei interioare.
- conectați datele din Raspberry Pi în cloud și creați alerte din datele înregistrate.
Care sunt unele dintre schimbările pe care le-ați face acestui sistem de monitorizare a climei interioare? Vă rugăm să împărtășiți sugestiile dvs. prin intermediul comentariilor.
Recomandat:
Sistem de sortare a culorilor: Sistem bazat pe Arduino cu două centuri: 8 pași
Sistem de sortare a culorilor: Sistem pe bază de Arduino cu două benzi: Transportul și / sau ambalarea produselor și articolelor din domeniul industrial se face folosind linii realizate cu benzi transportoare. Aceste centuri ajută la mutarea articolului dintr-un punct în altul cu o viteză specifică. Unele sarcini de procesare sau identificare pot fi
Sistem inteligent de monitorizare a vremii și vitezei vântului bazat pe IOT: 8 pași
Sistem inteligent de monitorizare a vremii și vitezei vântului bazat pe IOT: dezvoltat de - Nikhil Chudasma, Dhanashri Mudliar și Ashita Raj Introducere Importanța monitorizării vremii există în multe moduri. Parametrii vremii trebuie monitorizați pentru a susține dezvoltarea în agricultură, seră
Sistem de monitorizare și control al umidității solului bazat pe IoT folosind NodeMCU: 6 pași
Sistem de monitorizare și control al umidității solului bazat pe IoT folosind NodeMCU: În acest tutorial vom implementa un sistem de monitorizare și control al umidității solului bazat pe IoT utilizând modulul WiFi ESP8266 adică NodeMCU. Componente necesare pentru acest proiect: modulul ESP8266 WiFi - Amazon (334 / - INR) Modul de releu - Amazon (130 / - INR
Sistem de monitorizare a sănătății bazat pe IOT: 3 pași
Sistem de monitorizare a sănătății bazat pe IOT: un dispozitiv bazat pe microcontroler cu senzori bio-medicali corespunzători va fi atașat pacientului pentru a asigura o monitorizare constantă bazată pe cloud. Semnele vitale, adică temperatura și pulsul corpului uman, care sunt indicii majore pentru a detecta orice problemă de sănătate
Sistem de monitorizare a mediului bazat pe modulul OBLOQ-IoT: 4 pași
Sistem de monitorizare a mediului bazat pe modulul OBLOQ-IoT: Acest produs este aplicat în principal în laborator electronic pentru a monitoriza și controla indicatori precum temperatura, umiditatea, lumina și praful și pentru a le încărca în timp util în spațiul de date cloud pentru a realiza monitorizarea și controlul de la distanță al dezumidificatorului , aer pur