Sadržaj:
- Supplies
- Korak 1: Potreban softver
- Korak 2: Donesite podatke senzora na Raspberry Pi pomoću Simulinka
- Korak 3: Prikažite podatke senzora na LED matrici 8x8
- Korak 4: Osmislite algoritam u Simulinku kako biste odlučili je li vlažnost u prostoriji "dobra", "loša" ili "ružna"
- Korak 5: Zapišite unutarnje klimatske podatke i kategorizirane podatke na oblaku
- Korak 6: Zaključak
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Pročitajte ovaj blog i izgradite vlastiti sistem tako da možete primati upozorenja kada je vaša soba previše suha ili vlažna.
Šta je sistem za nadzor klime u zatvorenom prostoru i zašto nam je potreban?
Sistemi za nadzor unutrašnje klime omogućuju brz uvid u ključne statističke podatke vezane za klimu, poput temperature i relativne vlažnosti. Mogućnost pregledavanja ove statistike i primanja upozorenja na telefonu kada je soba previše vlažna ili suha može biti od velike pomoći. Pomoću upozorenja možete brzo poduzeti potrebne radnje kako biste postigli maksimalnu udobnost u prostoriji uključivanjem grijača ili otvaranjem prozora. U ovom projektu ćemo vidjeti kako koristiti Simulink za:
1) unesite statistiku klime (temperaturu, relativnu vlažnost i pritisak) iz Sense HAT -a u Raspberry Pi
2) prikazati izmjerene podatke na 8x8 LED matrici Sense HAT -a
3) osmisliti algoritam za odlučivanje da li je vlažnost u prostoriji „dobra“, „loša“ili „ružna“.
4) zabilježite podatke u oblaku i pošaljite upozorenje ako su podaci kategorizirani kao „ružni“(previše vlažni ili suhi).
Supplies
Raspberry Pi 3 Model B
Raspberry Pi Sense ŠEŠIR
Korak 1: Potreban softver
Potrebni su vam MATLAB, Simulink i odaberite Dodaci da biste pratili i izgradili vlastiti sistem za nadzor klime u zatvorenom prostoru.
Otvorite MATLAB sa administratorskim pristupom (Desni klik na ikonu MATLAB i odaberite Pokreni kao administrator). Odaberite Dodaci na MATLAB traci s alatima i kliknite Nabavi dodatke.
Ovdje potražite pakete podrške s njihovim nazivima navedenim u nastavku i "Dodajte" ih.
a. MATLAB paket podrške za Raspberry Pi hardver: Nabavite ulaze i pošaljite izlaze na Raspberry Pi ploče i povezane uređaje
b. Paket podrške za Simulink za Raspberry Pi hardver: Pokrenite Simulink modele na Raspberry Pi pločama
c. RPi_Indoor_Climate_Monitoring_System: Primjeri modela potrebni za ovaj projekt
Napomena - Tijekom instalacije slijedite upute na ekranu da biste podesili svoj Pi da radi s MATLAB -om i Simulinkom.
Korak 2: Donesite podatke senzora na Raspberry Pi pomoću Simulinka
Za one koji nisu upoznati sa Simulinkom, to je grafičko programsko okruženje koje se koristi za modeliranje i simulaciju dinamičkih sistema. Nakon što osmislite svoj algoritam u Simulinku, možete automatski generirati kôd i ugraditi ga u Raspberry Pi ili drugi hardver.
Unesite sljedeće u MATLAB naredbeni prozor da otvorite prvi primjer modela. Ovaj model ćemo koristiti za unošenje podataka o temperaturi, pritisku i relativnoj vlažnosti u Raspberry Pi.
> rpiSenseHatBringSensorData
Blokovi LPS25H Senzor pritiska i HTS221 Senzor vlage su iz biblioteke Sense HAT u okviru Simulink paketa podrške za hardverske biblioteke Raspberry Pi.
Blokovi opsega su iz biblioteke Sinks u bibliotekama Simulink. Da biste bili sigurni da je vaš model ispravno konfiguriran, kliknite na ikonu zupčanika u vašem modelu Simulink. Idite na Hardware Implementation> Hardware board settings> Target hardware resources.
Napomena - Ne morate konfigurirati ako ste slijedili upute za postavljanje prilikom instaliranja paketa podrške Simulink za Raspberry Pi. Adresa uređaja automatski se popunjava na adresu vašeg Pi -a.
Uvjerite se da se adresa uređaja ovdje podudara s IP adresom koju čujete kada se Pi pokrene. Možda ćete morati ponovo uključiti svoj Pi sa slušalicama povezanim na utičnicu da biste čuli adresu uređaja.
Pritisnite OK i pritisnite dugme Run kao što je prikazano ispod. Provjerite je li vaš Pi fizički povezan s računarom putem USB kabela ili je na istoj Wi-Fi mreži kao i vaš računar.
Kada pritisnete gumb Pokreni u vanjskom načinu, Simulink automatski generira C kod ekvivalentan vašem modelu i preuzima izvršnu datoteku na Raspberry Pi. Oba bloka opsega su konfigurirana za otvaranje kada se model pokrene. Kada Simulink završi s implementacijom koda na Raspberry Pi, vidjet ćete podatke o tlaku, temperaturi i relativnoj vlažnosti na opsezima kao što je prikazano u nastavku.
Napomena - Kod je pokrenut na Raspberry Pi -u i gledate stvarne signale kroz blokove opsega Simulink -a, baš kao što biste radili da imate osciloskop spojen na sam hardver. Vrijednost temperature dva senzora su malo udaljena jedan od drugog. Slobodno odaberite onu koja odražava stvarnu temperaturu u vašoj prostoriji i upotrijebite je u sljedećim odjeljcima. U svim testovima sa Sense HAT -om koje smo imali, vrijednosti temperature HTS221 senzora vlažnosti bile su bliže stvarnoj temperaturi u prostoriji. Time smo vidjeli osnove kako unijeti podatke senzora iz Sense HAT -a u Raspberry Pi.
Korak 3: Prikažite podatke senzora na LED matrici 8x8
U ovom odjeljku ćemo vidjeti kako je dio vizuelnog prikaza ovog projekta dodan posljednjem modelu. Sense HAT elementi koji se koriste u ovom odjeljku su senzor vlažnosti (za dobijanje relativne vlažnosti i temperature), senzor pritiska, LED matrica i joystick. Joystick se koristi za odabir senzora koji želimo prikazati.
Da biste otvorili sljedeći primjer modela, upišite sljedeće u naredbeni prozor MATLAB.
> rpiSenseHatDisplay
Blok Joystick je iz biblioteke Sense HAT. Pomaže nam da podatke o upravljačkoj palici unesemo u Raspberry Pi, baš kao što su to učinili blokovi senzora pritiska i vlažnosti u prethodnom primjeru. Za sada koristimo blok Test Comfort za prikaz ‘dobro’ (kada je vrijednost bloka 1) na LED matrici. Prikazat će se "loše" kada je vrijednost bloka 2 ili "ružno" kada je vrijednost 3 ili 4. U sljedećem odjeljku vidjet ćemo stvarni algoritam koji odlučuje je li unutarnja vlažnost dobra, loša ili ružna. Istražimo blok Selector dvostrukim klikom na njega. Funkcijski blokovi MATLAB koriste se za integraciju MATLAB koda u vaš Simulink model. U ovom slučaju donosimo SelectorFcn dolje naveden.
funkcija [vrijednost, stanje] = SelectorFcn (JoyStickIn, pritisak, vlažnost, temp, ihval)
postojan JoyStickCount
ako je prazan (JoyStickCount)
JoyStickCount = 1;
kraj
ako je JoyStickIn == 1
JoyStickCount = JoyStickCount + 1;
ako je JoyStickCount == 6
JoyStickCount = 1;
kraj
kraj
prebacite JoyStickCount
kućište 1 % Temperatura prikaza u C
value = temp;
Stanje = 1;
kućište 2 % Prikazni pritisak u atm
vrijednost = pritisak/1013,25;
Stanje = 2;
kućište 3 % Prikaz relativne vlažnosti u %
vrijednost = vlažnost;
Stanje = 3;
kućište 4 % Temperatura prikaza u F
vrijednost = temp*(9/5) +32;
Stanje = 4;
kućište 5 % Prikaz Dobro/Loše/Ružno
vrijednost = ihval;
Stanje = 5;
u suprotnom % Ne prikazuj/prikaži 0
vrijednost = 0;
Stanje = 6;
kraj
Naredbe prekidača se općenito koriste kao mehanizam kontrole odabira. U našem slučaju, želimo da ulaz joystick -a bude kontrola odabira i odaberemo sljedeće podatke za prikaz svaki put kada pritisnemo tipku joystick -a. Za to smo postavili petlju if koja povećava varijablu JoyStickCount svakim pritiskom na dugme (vrijednost JoyStickIn je 1 ako postoji pritisak na dugme). U istoj petlji, kako bismo bili sigurni da se krećemo samo između pet gore navedenih opcija, dodali smo još jedan uvjet koji vrijednost varijable poništava na 1. Koristeći ovo, odabiremo koja će vrijednost biti prikazana na LED matrici. Slučaj 1 će biti zadani jer definiramo JoyStickCount za početak od 1, a to znači da će LED matrica prikazati temperaturu u Celzijusima. Blok podataka Scroll koristi varijablu State za razumijevanje koja se vrijednost senzora trenutno prikazuje i koju jedinicu treba prikazati. Sada kada znamo kako odabrati pravi senzor za prikaz, pogledajmo kako stvarni zaslon radi.
Prikazivanje znakova i brojeva
Za prikaz na Sense HAT LED matrici, stvorili smo matrice 8x8 za:
1) svi brojevi (0-9)
2) sve jedinice (° C, A, % i ° F)
3) decimalni zarez
4) abecede iz riječi dobro, loše i ružno.
Ove 8x8 matrice su korištene kao ulaz u 8x8 RGB LED Matrix blok. Ovaj blok uključuje LED diode koje odgovaraju onim elementima na matrici koji imaju vrijednost 1 kao što je prikazano u nastavku.
Pomeranje teksta
Blok podataka Scroll u našem modelu pomiče nizove koji mogu imati najviše 6 znakova. Vrijednost 6 je odabrana jer je to najduži niz koji ćemo ispisati u ovom projektu, primjer 23,8 ° C ili 99,1 ° F. Imajte na umu da se ovdje ° C smatra jednim znakom. Ista se ideja može proširiti i na pomicanje nizova drugih dužina.
Evo-g.webp
www.element14.com/community/videos/29400/l/gif
Za prikaz niza od 6 znakova svaki na matrici 8x8 potrebna nam je slika veličine 8x48 ukupno. Za prikaz niza koji ima najviše 4 znaka, morat ćemo stvoriti matricu 8x32. Sada pogledajmo cijelu stvar neaktivnost pritiskom na gumb Pokreni. Zadani prikaz na LED matrici je vrijednost temperature u ° C. Blok Scope prikazuje stanje i vrijednost iz bloka Selector. Pritisnite tipku joystick na Sense HAT -u i držite sekundu da provjerite da li se vrijednost mijenja na sljedeći izlaz senzora i ponavljajte ovaj postupak dok ne dosegne vrijednost stanja 5. Da biste promatrali prebacivanje algoritma kroz sve slučajeve kategorizacije vlažnosti u zatvorenom prostoru, promijenite vrijednost bloka Test Comfort na bilo koji broj između 1 do 4. Uočite kako promjena vrijednosti bloka na modelu Simulink odmah mijenja način na koji se kod ponaša na hardveru. Ovo može biti korisno u situacijama u kojima se želi promijeniti ponašanje koda s udaljene lokacije. Time smo vidjeli ključne elemente iza aspekta vizualizacije sistema za nadzor klime. U sljedećem odjeljku naučit ćemo kako dovršiti naš sistem za nadzor unutrašnje klime.
Korak 4: Osmislite algoritam u Simulinku kako biste odlučili je li vlažnost u prostoriji "dobra", "loša" ili "ružna"
Postoji nekoliko metoda da biste razumjeli je li vaša soba previše vlažna/suha ili da znate koji se nivo vlažnosti u prostoriji smatra ugodnim. Pomoću ovog članka utvrdili smo krivulju površine za povezivanje relativne vlažnosti u prostoriji i vanjske temperature, kao što je prikazano gore.
Bilo koja vrijednost relativne vlažnosti u ovom području znači da je vaša soba u ugodnom okruženju. Na primjer, ako je vanjska temperatura -30 ° F, tada je prihvatljiva bilo koja relativna vlažnost zraka ispod 15%. Slično, ako je vanjska temperatura 60 ° F, tada je prihvatljiva bilo koja relativna vlažnost zraka ispod 50%. Za kategorizaciju unutarnje vlažnosti u maksimalnu udobnost (dobru), prosječnu udobnost (lošu) ili previše vlažnu/suhu (ružnu), potrebna vam je vanjska temperatura i relativna vlažnost. Vidjeli smo kako unijeti relativnu vlažnost u Raspberry Pi. Dakle, fokusirajmo se na uvođenje vanjske temperature. Otvorite model u naredbenom prozoru MATLAB:
> rpiOutdoorWeatherData
Blok WeatherData koristi se za unošenje vanjske temperature vašeg grada (u K) pomoću https://openweathermap.org/. Za konfiguriranje ovog bloka potreban vam je API ključ sa web stranice. Nakon što kreirate svoj besplatni račun na ovoj web stranici, idite na stranicu svog računa. Kartica API ključevi prikazana ispod daje vam ključ.
Bloku WeatherData potreban je unos naziva vašeg grada u određenom formatu. Posjetite ovu stranicu i unesite naziv grada, zatim simbol zareza praćen s 2 slova za označavanje zemlje. Primjeri - Natick, SAD i Chennai, IN. Ako pretraživanje vrati rezultat za vaš grad, upotrijebite ga u bloku WeatherData u tom određenom formatu. U slučaju da vaš grad nije dostupan, koristite susjedni grad čiji su vremenski uslovi bliži vašim. Sada dvaput kliknite na blok WeatherData i unesite naziv grada i svoj API ključ s web stranice.
Pritisnite Pokreni na ovom modelu Simulink da provjerite može li blok unijeti temperaturu vašeg grada u Raspberry Pi. Pogledajmo sada algoritam koji odlučuje je li unutarnja vlažnost dobra, loša ili ružna. Upišite sljedeće u naredbeni prozor MATLAB da biste otvorili sljedeći primjer:
> rpisenseHatIHval
Možda ste primijetili da blok Test Comfort iz prethodnog modela nedostaje, a novi blok pod nazivom FindRoom Comfort pruža ihval bloku Selector. Dvaput kliknite na ovaj blok za otvaranje i istraživanje.
Koristimo blok WeatherData za unošenje vanjske temperature. Podsistem Ograničenja vlažnosti predstavlja grafikon Relativne vlažnosti u odnosu na vanjsku temperaturu koji smo vidjeli gore. Ovisno o vanjskoj temperaturi, ono će prikazati graničnu vrijednost maksimalne vlažnosti. Otvorimo funkcijski blok DecideIH MATLAB dvostrukim klikom na njega.
Ako vrijednost relativne vlažnosti premaši granicu maksimalne vlažnosti, tada će znak biti pozitivan ovisno o načinu na koji oduzimamo podatke, što znači da je prostorija previše vlažna. Ispuštamo 3 (ružno) za ovaj scenarij. Razlog zašto se koriste brojevi umjesto nizova je to što se lako prikazuje na grafikonima i od njih kreiraju upozorenja. Ostatak klasifikacija u funkciji MATLAB temelji se na proizvoljnim kriterijima do kojih smo došli. Kada je razlika manja od 10, kategorizira se maksimalna udobnost, a kada je manja od 20 prosječna je udobnost, a iznad toga je previše suha. Slobodno pokrenite ovaj model i provjerite nivo udobnosti svoje sobe.
Korak 5: Zapišite unutarnje klimatske podatke i kategorizirane podatke na oblaku
U ovom sljedećem odjeljku vidjet ćemo kako evidentirati podatke u oblaku. Da biste otvorili ovaj primjer, upišite sljedeće u naredbeni prozor MATLAB.
> rpiSenseHatLogData
U ovom modelu dio prikaza prethodnog primjera namjerno se uklanja jer nam nije potrebno da sistem za nadzor prikazuje statistiku dok se bilježe podaci i šalju upozorenja. Za aspekt evidentiranja podataka koristimo ThingSpeak, besplatnu IoT platformu otvorenog koda koja uključuje MATLAB analitiku. Odabrali smo ThingSpeak jer postoje izravni načini programiranja Raspberry Pi i drugih jeftinih hardverskih ploča za slanje podataka u ThingSpeak pomoću Simulinka. Blok ThingSpeak Write je iz Simulink paketa podrške za biblioteku hardvera Raspberry Pi i može se konfigurirati pomoću API API ključa sa vašeg ThingSpeak kanala. Detaljna uputstva o tome kako stvoriti kanal nalaze se u nastavku. Da biste stalno bilježili podatke u oblak, želite da vaš Pi radi neovisno o Simulinku. Da biste to učinili, možete pritisnuti tipku „Rasporedi na hardver“u svom modelu Simulink.
Kreirajte svoj vlastiti ThingSpeak kanal
Oni koji nemaju račun mogu se prijaviti na web stranici ThingSpeak. Ako imate MathWorks račun, automatski imate ThingSpeak račun.
- Nakon što se prijavite, možete stvoriti kanal tako da odete na Kanali> Moji kanali i kliknete na Novi kanal.
- Sve što trebate je naziv kanala i imena polja koja ćete prijaviti kao što je prikazano u nastavku.
- Opcija Prikaži lokaciju kanala zahtijeva zemljopisnu širinu i dužinu vašeg grada kao ulaz i može prikazati lokaciju unutar kanala na karti. (Primjeri vrijednosti korišteni ovdje su za Natick, MA)
- Zatim pritisnite Spremi kanal da biste dovršili kreiranje kanala.
4a. Upozorenje ako su podaci kategorizirani kao "Ružni"
Da bismo dovršili naš sistem za nadzor klime u zatvorenom prostoru, moramo vidjeti kako primati upozorenja na osnovu podataka u oblaku. Ovo je kritično jer bez toga nećete moći poduzeti potrebne radnje za promjenu nivoa udobnosti u prostoriji. U ovom odjeljku ćemo vidjeti kako primiti obavještenje na telefon kad god podaci u oblaku ukazuju na to da je soba previše vlažna ili suha. To ćemo postići korištenjem dvije usluge: IFTTT Webhooks i ThingSpeak TimeControl. IFTTT (kratica za If this, then that) je internetska usluga koja može upravljati događajima i pokretati radnje na temelju događaja.
Koraci za postavljanje IFTTT Webhooksa
Napomena: Isprobajte ovo na računaru za najbolje rezultate.
1) Napravite račun na ifttt.com (ako ga nemate) i stvorite novi applet sa stranice My Applets.
2) Pritisnite plavo dugme "ovo" za odabir usluge pokretanja.
3) Potražite i odaberite Webhooks kao uslugu.
4) Odaberite Receive Web Request i navedite naziv događaja.
5) Odaberite okidač za stvaranje.
6) Odaberite "to" na sljedećoj stranici i potražite obavijesti.
7) Odaberite pošalji obavijest iz aplikacije IFTTT.
8) Unesite naziv događaja koji ste kreirali u 2. koraku IFTTT -a i odaberite create action.
9) Nastavite dok ne dođete do posljednjeg koraka, pregledajte i pritisnite završiti.
10) Idite na https://ifttt.com/maker_webhooks i kliknite gumb Postavke pri vrhu stranice.
11) Idite na URL u odjeljku Podaci o računu.
12) Ovdje unesite naziv događaja i kliknite na „Testiraj“.
13) Kopirajte URL u posljednji red za buduću upotrebu (s ključem).
Koraci za postavljanje ThingSpeak TimeControl -a
1) Odaberite Aplikacije> MATLAB analiza
2) Pritisnite New na sljedećoj stranici i odaberite Trigger Email from IFTTT i kliknite na Create.
Važni dijelovi ovdje u kodu predloška su:
ID kanala - Unesite svoj ThingSpeak kanal koji ima podatke o "vrijednosti vlage u zatvorenom prostoru".
IFTTTURL - Unesite URL kopiran iz prethodnog odjeljka Korak 13.
readAPIKey - Unesite ključ odjeljka ThingSpeak Channel. Action - onaj koji djeluje na posljednju vrijednost. Promijenite ga na sljedeće kako biste pokrenuli upozorenja.
3) Na web stranici ThingSpeak kliknite Aplikacije> TimeControl.
4) Odaberite Ponavljanje i odaberite vremensku frekvenciju.
5) Kliknite na Save TimeControl.
Sada se MATLAB analiza automatski pokreće svakih pola sata i šalje okidač IFTTT webhooks servisu ako je vrijednost veća ili jednaka 3. Tada će telefonska aplikacija IFTTT upozoriti korisnika obaviješću kako je prikazano na početku ovog odjeljka.
Korak 6: Zaključak
Time smo vidjeli sve važne aspekte kako izgraditi vlastiti sistem za nadzor klime. U ovom projektu smo vidjeli kako se Simulink može koristiti za -
- programirajte Raspberry Pi za unos podataka iz Sense HAT -a. Istakni - Vizualizirajte podatke u Simulinku jer se kôd još uvijek izvodi na Raspberry Pi -u.
- izgraditi vizuelni prikaz sistema za nadzor unutrašnje klime. Istakni - Promijenite način na koji se vaš kod ponaša na hardveru iz Simulinka.
- osmisliti algoritam sistema za nadzor unutrašnje klime.
- zapisujte podatke s Raspberry Pi -a u oblak i stvarajte upozorenja iz evidentiranih podataka.
Koje su neke od promjena koje biste učinili na ovom sistemu za nadzor klime u zatvorenom prostoru? Podijelite svoje prijedloge putem komentara.