Sadržaj:
- Pribor
- Korak 1: Potreban softver
- Korak 2: Donesite podatke senzora u 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 unutarnja vlažnost dobra, loša ili ružna
- Korak 5: Prijavite unutarnje klimatske podatke i kategorizirane podatke na oblaku
- Korak 6: Zaključak
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Pročitajte ovaj blog i izgradite vlastiti sustav tako da možete primati upozorenja kada je vaša soba previše suha ili vlažna.
Što je sustav za nadzor klime u zatvorenom prostoru i zašto nam je potreban?
Sustavi za nadzor klime u zatvorenim prostorima omogućuju brz uvid u ključne statističke podatke vezane uz 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 za postizanje maksimalne udobnosti 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 tlak) iz Sense HAT -a u Raspberry Pi
2) prikazati izmjerene podatke na LED matrici 8x8 Sense HAT -a
3) osmisliti algoritam za odlučivanje je li unutarnja vlažnost "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).
Pribor
Raspberry Pi 3 Model B
Malina Pi Sense ŠEŠIR
Korak 1: Potreban softver
Potrebni su vam MATLAB, Simulink i odaberite Dodaci koje ćete pratiti i izgraditi vlastiti sustav za nadzor klime u zatvorenom prostoru.
Otvorite MATLAB s administratorskim pristupom (desnom tipkom miša kliknite 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 Simulinka 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 zaslonu kako biste svoj Pi postavili za rad s MATLAB -om i Simulinkom.
Korak 2: Donesite podatke senzora u 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 sustava. Nakon što osmislite svoj algoritam u Simulinku, možete automatski generirati kôd i ugraditi ga u Raspberry Pi ili drugi hardver.
Upišite sljedeće u naredbeni prozor MATLAB da biste otvorili prvi primjer modela. Ovaj ćemo model koristiti za unošenje podataka o temperaturi, tlaku i relativnoj vlažnosti u Raspberry Pi.
> rpiSenseHatBringSensorData
Blokovi LPS25H Senzor tlaka i HTS221 Senzor vlage su iz biblioteke Sense HAT u okviru Simulink Support Package za knjižnice hardvera Raspberry Pi.
Blokovi opsega su iz biblioteke Sinks u bibliotekama Simulink. Kako biste bili sigurni da je vaš model ispravno konfiguriran, kliknite ikonu zupčanika u vašem modelu Simulink. Idite na Strojna implementacija> Postavke ploče hardvera> Ciljajte hardverske resurse.
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.
Uvjerite se da se adresa uređaja ovdje podudara s IP adresom koju čujete kada se Pi podigne. Možda ćete morati ponovno uključiti svoj Pi sa slušalicama spojenim na utičnicu da biste čuli adresu uređaja.
Pritisnite U redu i pritisnite gumb Pokreni kao što je prikazano ispod. Provjerite je li vaš Pi fizički povezan s računalom putem USB kabela ili je na istoj Wi-Fi mreži kao i vaše računalo.
Kad 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 konfigurirana su za otvaranje čim se model pokrene. Kada Simulink završi s primjenom koda na Raspberry Pi, vidjet ćete podatke o tlaku, temperaturi i relativnoj vlažnosti na opsezima kao što je prikazano u nastavku.
Napomena - Kôd se izvodi na Raspberry Pi -u i gledate stvarne signale kroz blokove opsega Simulinka, baš kao što biste to učinili da imate osciloskop spojen na sam hardver. Vrijednost temperature dva senzora malo su 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 senzora vlažnosti HTS221 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 vidjet ćemo kako je dio vizualnog prikaza ovog projekta dodan posljednjem modelu. Sense HAT elementi koji se koriste u ovom odjeljku su osjetnik vlažnosti (za dobivanje relativne vlažnosti i temperature), osjetnik tlaka, LED matrica i upravljačka palica. Navigacijska tipka koristi se 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 knjižnice Sense HAT. Pomaže nam unijeti podatke o upravljačkoj palici u Raspberry Pi, baš kao što su to učinili blokovi senzora tlaka 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, tlak, 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
vrijednost = temp;
Stanje = 1;
kućište 2 % Prikazni tlak u atm
vrijednost = tlak/1013,25;
Stanje = 2;
kućište 3 % Prikaz relativne vlažnosti u %
vrijednost = vlaga;
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 obično se koriste kao mehanizam kontrole odabira. U našem slučaju želimo da ulaz upravljačke palice bude kontrola odabira i odabiremo sljedeće podatke za prikaz svaki put kad pritisnete gumb upravljačke palice. Za to smo postavili petlju if koja povećava varijablu JoyStickCount svakim pritiskom na gumb (vrijednost JoyStickIn je 1 ako postoji pritisak na gumb). 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 vraća na 1. Koristeći ovo, odabiremo koja će vrijednost biti prikazana na LED matrici. Slučaj 1 bit će 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 kad znamo odabrati pravi senzor za prikaz, pogledajmo kako stvarni zaslon radi.
Prikaz 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) decimalna točka
4) abecede od riječi dobar, loš i ružan.
Ove 8x8 matrice su korištene kao ulaz u 8x8 RGB LED Matrix blok. Ovaj blok svijetli LED diode koje odgovaraju onim elementima na matrici koji imaju vrijednost 1 kako je prikazano u nastavku.
Pomicanje po tekstu
Blok podataka Scroll u našem modelu pomiče se kroz 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 duljina.
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. Pogledajmo sada cijelu stvar neaktivnost pritiskom na gumb Pokreni. Zadani prikaz na LED matrici je vrijednost temperature u ° C. Blok Scope prikazat će stanje i vrijednost iz bloka Selector. Pritisnite tipku upravljačke tipke na Sense HAT -u i zadržite sekundu da provjerite mijenja li se vrijednost 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 unutarnje vlažnosti, 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. To može biti korisno u situacijama kada se želi promijeniti ponašanje koda s udaljenog mjesta. Time smo vidjeli ključne elemente iza aspekta vizualizacije sustava za nadzor klime. U sljedećem odjeljku naučit ćemo kako dovršiti naš sustav nadzora unutarnje klime.
Korak 4: Osmislite algoritam u Simulinku kako biste odlučili je li unutarnja vlažnost dobra, loša ili ružna
Postoji nekoliko metoda kako biste razumjeli je li vaša soba previše vlažna/suha ili kako biste saznali koja se vlaga u prostoriji smatra ugodnom. Pomoću ovog članka utvrdili smo krivulju područja 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 vrijednost relativne vlažnosti 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, usredotočimo se na donošenje vanjske temperature. Upišite sljedeće u naredbeni prozor MATLAB da biste otvorili model:
> 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č s web stranice. Nakon što ste stvorili svoj besplatni račun na ovoj web stranici, idite na stranicu svog računa. Kartica API ključevi prikazana u nastavku daje vam ključ.
Blok WeatherData zahtijeva unos naziva vašeg grada u određenom formatu. Posjetite ovu stranicu i unesite naziv grada, zatim simbol zareza iza kojeg slijede 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, upotrijebite susjedni grad čiji su vremenski uvjeti 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 kako biste provjerili može li blok unijeti temperaturu vašeg grada u Raspberry Pi. Pogledajmo sada algoritam koji odlučuje je li unutarnja vlaga 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 blok ihval selektoru. Dvaput kliknite na ovaj blok za otvaranje i istraživanje.
Za donošenje vanjske temperature koristimo blok WeatherData. Podsustav Ograničenja vlažnosti predstavlja grafikon Relativne vlažnosti u odnosu na vanjsku temperaturu koji smo vidjeli gore. Ovisno o vanjskoj temperaturi, ono će ispisati graničnu vrijednost maksimalne vlažnosti. Otvorimo funkcijski blok DecideIH MATLAB dvostrukim klikom na njega.
Ako vrijednost relativne vlažnosti premašuje maksimalnu granicu vlažnosti, znak će biti pozitivan na temelju načina na koji oduzimamo podatke, što znači da je soba previše vlažna. Ispuštamo 3 (ružno) za ovaj scenarij. Razlog zašto se koriste brojevi umjesto nizova je taj što ih je lako prikazati na grafikonima i iz njih stvoriti 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, to je prosječna udobnost, a iznad toga je previše suha. Slobodno pokrenite ovaj model i provjerite razinu udobnosti svoje sobe.
Korak 5: Prijavite unutarnje klimatske podatke i kategorizirane podatke na oblaku
U ovom sljedećem odjeljku vidjet ćemo kako zapisati 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 sustav za nadzor prikazuje statistiku tijekom bilježenja podataka i slanja upozorenja. Za aspekt bilježenja podataka koristimo ThingSpeak, besplatnu IoT platformu otvorenog koda koja uključuje MATLAB analitiku. Odabrali smo ThingSpeak budući da postoje izravni načini programiranja Raspberry Pi i drugih jeftinih hardverskih ploča za slanje podataka u ThingSpeak pomoću Simulinka. Blok ThingSpeak Write dolazi iz Simulink paketa podrške za hardversku knjižnicu Raspberry Pi i može se konfigurirati pomoću API API ključa s vašeg ThingSpeak kanala. Detaljne upute o tome kako stvoriti kanal nalaze se u nastavku. Da biste neprekidno bilježili podatke u oblak, želite da vaš Pi radi neovisno o Simulinku. U tu svrhu možete pritisnuti gumb "Razmjesti na hardver" u svom modelu Simulink.
Stvorite svoj vlastiti ThingSpeak kanal
Oni koji nemaju račun mogu se prijaviti na web mjestu 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 Novi kanal.
- Sve što trebate je naziv kanala i nazivi 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 unos i može prikazati lokaciju unutar kanala na karti. (Primjeri ovdje korištenih vrijednosti su za Natick, MA)
- Zatim pritisnite Spremi kanal da biste dovršili stvaranje kanala.
4a. Upozorenje ako su podaci kategorizirani kao "Ružni"
Kako bismo dovršili naš sustav nadzora unutarnje klime, moramo vidjeti kako primati upozorenja na temelju podataka u oblaku. To je kritično jer bez toga nećete moći poduzeti potrebne radnje za promjenu razine udobnosti u prostoriji. U ovom ćemo odjeljku vidjeti kako primiti obavijest 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 web -dojavnika
Napomena: Isprobajte ovo na računalu za najbolje rezultate.
1) Napravite račun na ifttt.com (ako ga nemate) i izradite novi applet sa stranice My Applets.
2) Pritisnite plavi gumb "ovo" za odabir usluge pokretanja.
3) Potražite i odaberite Webhooks kao uslugu.
4) Odaberite Primi web zahtjev 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 stvorili u 2. koraku IFTTT -a i odaberite stvoriti radnju.
9) Nastavite dok ne dođete do posljednjeg koraka, pregledajte i pritisnite završi.
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 svog događaja i kliknite "Testiraj".
13) Kopirajte URL u posljednji redak 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 "val vlage u zatvorenom prostoru".
IFTTTURL - Unesite URL kopiran iz prethodnog odjeljka Korak 13.
readAPIKey - Unesite ključ odjeljka ThingSpeak Channel. Action - onaj koji djeluje na zadnju vrijednost. Promijenite ga na sljedeće kako biste pokrenuli upozorenja.
3) Na web mjestu ThingSpeak kliknite Aplikacije> Vremenska kontrola.
4) Odaberite Ponavlja se i odaberite vremensku frekvenciju.
5) Kliknite na Save TimeControl.
Sada se MATLAB analiza automatski pokreće svakih pola sata i šalje okidač IFTTT webhooks usluzi 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 sustav za nadzor klime. U ovom smo projektu 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.
- izgraditi vizualni prikaz sustava za nadzor klime u zatvorenom prostoru. Istakni - Promijenite način na koji se vaš kôd ponaša na hardveru iz Simulinka.
- osmisliti algoritam sustava za nadzor klime u zatvorenom prostoru.
- zapisujte podatke s Raspberry Pi u oblak i stvarajte upozorenja od zapisanih podataka.
Koje biste neke od promjena unijeli u ovaj sustav nadzora klime u zatvorenom prostoru? Podijelite svoje prijedloge putem komentara.