Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Tarvittava ohjelmisto
- Vaihe 2: Tuo anturitiedot Raspberry Pi -laitteeseen Simulinkin avulla
- Vaihe 3: Näytä anturitiedot 8x8 LED -matriisissa
- Vaihe 4: Suunnittele algoritmi Simulinkissa päättääksesi, onko sisäilman kosteus "hyvä", "huono" tai "ruma"
- Vaihe 5: Kirjaa sisäilmatiedot ja luokitellut tiedot pilveen
- Vaihe 6: Johtopäätös
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Lue tämä blogi ja rakenna oma järjestelmäsi, jotta voit saada hälytyksiä, kun huoneesi on liian kuiva tai kostea.
Mikä on sisäilman seurantajärjestelmä ja miksi sitä tarvitaan?
Sisäilman seurantajärjestelmät tarjoavat nopean katsauksen tärkeimpiin ilmastoon liittyviin tilastoihin, kuten lämpötilaan ja suhteelliseen kosteuteen. Mahdollisuus nähdä nämä tilastot ja vastaanottaa hälytyksiä puhelimeesi, kun huone on liian kostea tai kuiva, voi olla erittäin hyödyllistä. Hälytysten avulla voit ryhtyä tarvittaviin nopeisiin toimiin saavuttaaksesi maksimaalisen mukavuuden huoneessa kytkemällä lämmittimen päälle tai avaamalla ikkunat. Tässä projektissa näemme kuinka Simulinkia käytetään:
1) tuo ilmastotilastot (lämpötila, suhteellinen kosteus ja paine) Sense HATista Raspberry Pi: hen
2) näyttää mitatut tiedot Sense HATin 8x8 LED -matriisissa
3) Suunnittele algoritmi päättääksesi, onko sisäilman kosteus "hyvä", "huono" tai "ruma".
4) kirjaa tiedot pilveen ja lähetä hälytys, jos tiedot on luokiteltu rumaksi (liian kostea tai kuiva).
Tarvikkeet
Raspberry Pi 3 Malli B
Raspberry Pi Sense HAT
Vaihe 1: Tarvittava ohjelmisto
Tarvitset MATLABin, Simulinkin ja lisäosat, jotta voit seurata ja rakentaa oman sisäilman seurantajärjestelmän.
Avaa MATLAB järjestelmänvalvojan oikeuksilla (napsauta hiiren kakkospainikkeella MATLAB -kuvaketta ja valitse Suorita järjestelmänvalvojana). Valitse Lisäosat MATLAB Toolstripista ja napsauta Hae lisäosia.
Etsi täältä tukipaketit, joiden nimet ovat alla, ja "lisää" ne.
a. MATLAB -tukipaketti Raspberry Pi -laitteistolle: Hanki tulot ja lähetä lähdöt Raspberry Pi -levyille ja liitetyille laitteille
b. Simulink -tukipaketti Raspberry Pi -laitteistolle: Aja Simulink -malleja Raspberry Pi -levyillä
c. RPi_Indoor_Climate_Monitoring_System: Esimerkkejä tähän projektiin tarvittavista malleista
Huomautus - Noudata asennuksen aikana Pi -näytön ohjeita MATLABin ja Simulinkin kanssa noudattamalla näytön ohjeita.
Vaihe 2: Tuo anturitiedot Raspberry Pi -laitteeseen Simulinkin avulla
Niille, jotka eivät tunne Simulinkia, se on graafinen ohjelmointiympäristö, jota käytetään dynaamisten järjestelmien mallintamiseen ja simulointiin. Kun olet suunnitellut algoritmisi Simulinkissa, voit luoda koodin automaattisesti ja upottaa sen Raspberry Pi -laitteeseen tai muuhun laitteistoon.
Kirjoita seuraava MATLAB -komentoikkunaan avataksesi ensimmäisen esimerkkimallin. Käytämme tätä mallia tuodaksemme lämpö-, paine- ja suhteellisen kosteustiedot Raspberry Pi -laitteeseen.
> rpiSenseHatBringSensorData
Lohkot LPS25H -paineanturi ja HTS221 -kosteusanturi ovat Sense HAT -kirjasto -osassa Raspberry Pi -laitteistokirjastojen Simulink -tukipaketissa.
Soveltamisalalohkot ovat Simulink -kirjastojen altaasta. Varmistaaksesi, että mallisi on määritetty oikein, napsauta Simulink -mallisi rataskuvaketta. Siirry kohtaan Laitteiston toteutus> Laitteistolevyn asetukset> Kohdista laitteistoresurssit.
Huomautus - Sinun ei tarvitse määrittää, jos noudatit asennusohjeita asentaessasi Simulink -tukipakettia Raspberry Pi: lle. Laitteen osoite täytetään automaattisesti Pi -laitteesi osoitteeseen.
Varmista, että laitteen osoite vastaa sitä IP -osoitetta, jonka kuulet, kun Pi käynnistyy. Sinun on ehkä käynnistettävä Pi-laitteesi uudelleen liittimeen liitetyillä kuulokkeilla, jotta voit kuulla laitteen osoitteen.
Napsauta OK ja paina Suorita -painiketta alla olevan kuvan mukaisesti. Varmista, että Pi on joko fyysisesti kytketty tietokoneeseen USB-kaapelilla tai samassa Wi-Fi-verkossa kuin tietokoneesi.
Kun painat Suorita -painiketta ulkoisessa tilassa, Simulink luo automaattisesti malliasi vastaavan C -koodin ja lataa suoritettavan tiedoston Raspberry Pi -laitteeseen. Molemmat laajuuslohkot on määritetty avautumaan, kun malli alkaa toimia. Kun Simulink on valmis koodin käyttöönotossa Raspberry Pi -laitteessa, näet paine-, lämpötila- ja suhteellisen kosteuden tiedot laajuuksista alla esitetyllä tavalla.
Huomautus - Koodi on käynnissä Raspberry Pi -laitteessa ja katsot todellisia signaaleja Simulink -laajuuslohkojen kautta, aivan kuten jos olisit liittänyt oskilloskoopin itse laitteistoon. Kahden anturin lämpötila -arvot ovat hieman toisistaan poissa. Voit vapaasti valita huoneen, joka kuvastaa tarkemmin huoneen todellista lämpötilaa, ja käyttää sitä seuraavissa osissa. Kaikissa Sense HAT -kokeissa HTS221 -kosteusanturin lämpötila -arvot olivat lähempänä huoneen todellista lämpötilaa. Tämän avulla olemme nähneet perusteet sensoritietojen tuomisesta Sense HATista Raspberry Pi: hen.
Vaihe 3: Näytä anturitiedot 8x8 LED -matriisissa
Tässä osiossa näemme, kuinka tämän projektin visuaalinen näyttöosa lisättiin viimeiseen malliin. Tässä osassa käytetyt Sense HAT -elementit ovat kosteusanturi (suhteellisen kosteuden ja lämpötilan saamiseksi), paineanturi, LED -matriisi ja ohjaussauva. Ohjaussauvaa käytetään valitsemaan näytettävä anturi.
Voit avata seuraavan esimerkkimallin kirjoittamalla seuraavan MATLAB -komentoikkunaan.
> rpiSenseHatDisplay
Joystick -lohko on Sense HAT -kirjastosta. Se auttaa meitä tuomaan ohjaussauvan tiedot Raspberry Pi: hen, aivan kuten paine- ja kosteusanturilohkot tekivät edellisessä esimerkissä. Käytämme tällä hetkellä Test Comfort -lohkoa näyttääksesi "hyvä" (kun lohkon arvo on 1) LED -matriisissa. Se näyttää "huono", kun lohkon arvo on 2 tai "ruma", kun arvo on joko 3 tai 4. Seuraavassa osassa näemme todellisen algoritmin, joka päättää, onko sisäilman kosteus hyvä, huono vai ruma. Tutkitaan valitsinlohkoa kaksoisnapsauttamalla sitä. MATLAB -toimintolohkoja käytetään integroimaan MATLAB -koodi Simulink -malliin. Tässä tapauksessa tuomme alla olevan SelectorFcn: n.
function [arvo, tila] = SelectorFcn (JoyStickIn, paine, kosteus, lämpötila, ihval)
jatkuva JoyStickCount
jos on tyhjä (JoyStickCount)
JoyStickCount = 1;
loppuun
jos JoyStickIn == 1
JoyStickCount = JoyStickCount + 1;
jos JoyStickCount == 6
JoyStickCount = 1;
loppuun
loppuun
Vaihda JoyStickCount
kotelo 1 % Näytön lämpötila C: nä
arvo = lämpötila;
Tila = 1;
kotelo 2 % Näytön paine atm
arvo = paine/1013,25;
Tila = 2;
kotelo 3 % Näytä suhteellinen kosteus %
arvo = kosteus;
Tila = 3;
kotelo 4 % Näytön lämpötila F.
arvo = lämpötila*(9/5) +32;
Tila = 4;
kotelo 5 % Näyttö Hyvä/Huono/Ruma
arvo = ihval;
Tila = 5;
muuten % Älä näytä/Näytä 0
arvo = 0;
Tila = 6;
loppuun
Kytkentätapauslausekkeita käytetään yleensä valinnan ohjausmekanismina. Meidän tapauksessamme haluamme, että ohjaussauvan tulo on valinnan ohjaus ja valitsemme seuraavat tiedot, jotka näytetään joka kerta, kun ohjaussauvan painiketta painetaan. Tätä varten asetamme if -silmukan, joka lisää JoyStickCount -muuttujaa jokaisella painikkeen painalluksella (JoyStickIn -arvo on 1, jos painiketta painetaan). Samassa silmukassa varmistaaksemme, että pyöräilemme vain yllä olevien viiden vaihtoehdon välillä, lisäsimme toisen ehdon, joka palauttaa muuttujan arvon arvoon 1. Tämän avulla valitsemme, mikä arvo näytetään LED -matriisissa. Tapaus 1 on oletusarvo, kun määritämme JoyStickCountin alkavan 1: stä, ja tämä tarkoittaa, että LED -matriisi näyttää lämpötilan celsiusasteina. Vieritysdatalohko käyttää tilamuuttujaa ymmärtääkseen, mikä anturin arvo näytetään parhaillaan ja mikä yksikkö näytetään. Nyt kun tiedämme, kuinka valita oikea anturi näytettäväksi, katsotaanpa, miten todellinen näyttö toimii.
Näytetään hahmot ja numerot
Näytettäväksi Sense HAT LED -matriisissa loimme 8x8 matriisia seuraaville:
1) kaikki numerot (0-9)
2) kaikki yksiköt (° C, A, % ja ° F)
3) desimaali
4) aakkoset sanoista hyvä, huono ja ruma.
Näitä 8x8 matriiseja käytettiin 8x8 RGB LED Matrix -lohkon tulona. Tämä lohko sytyttää LEDit, jotka vastaavat niitä matriisin elementtejä, joiden arvo on 1, kuten alla on esitetty.
Tekstin vieritys
Mallimme Scroll -datalohko vierittää merkkijonoja, jotka voivat olla jopa 6 merkkiä pitkiä. Arvo 6 valittiin pisin merkkijono, jonka annamme tässä projektissa, esimerkki 23,8 ° C tai 99,1 ° F. Huomaa, että tässä ° C pidetään yhtenä merkkinä. Sama ajatus voidaan laajentaa koskemaan myös muun pituisia vieritysmerkkejä.
Tässä on GIF, joka näyttää kuinka se toimii -
www.element14.com/community/videos/29400/l/gif
Jotta voimme näyttää 6 merkin merkkijonon 8x8 -matriisissa, tarvitsemme yhteensä 8x48 -kokoisen kuvan. Jotta voidaan näyttää enintään 4 merkkiä pitkä merkkijono, meidän on luotava 8x32 -matriisi. Katsotaan nyt koko toimettomuus painamalla Suorita -painiketta. LED -matriisin oletusnäyttö on lämpötila -aste ° C. Scope -lohko näyttää Valitsin -lohkon tilan ja arvon. Paina Sense HAT -ohjaimen joystick -painiketta ja pidä se painettuna sekunnin ajan varmistaaksesi, että arvo muuttuu seuraavaan anturilähtöön, ja toista tämä prosessi, kunnes se saavuttaa tila -arvon 5. Tarkkaile algoritmin vaihtamista kaikissa sisäilman kosteusluokituksissa. Muuta Test Comfort -lohkon arvo mihin tahansa numeroon 1-4. Huomaa, kuinka Simulink -mallin lohkon arvon muuttaminen muuttaa välittömästi koodin käyttäytymistä laitteistossa. Tästä voi olla hyötyä tilanteissa, joissa halutaan muuttaa koodin käyttäytymistä etäsijainnista. Tämän avulla olemme nähneet ilmaston seurantajärjestelmän visualisoinnin keskeiset elementit. Seuraavassa osassa opimme täydentämään sisäilman seurantajärjestelmäämme.
Vaihe 4: Suunnittele algoritmi Simulinkissa päättääksesi, onko sisäilman kosteus "hyvä", "huono" tai "ruma"
On useita menetelmiä, joiden avulla voit ymmärtää, onko huoneesi liian kostea/kuiva tai mitä sisäilman kosteustasoa pidetään mukavana. Tämän artikkelin avulla loimme pintakäyrän sisäisen suhteellisen kosteuden ja ulkolämpötilan yhdistämiseksi, kuten yllä on esitetty.
Mikä tahansa suhteellinen kosteus tällä alueella tarkoittaa, että huoneesi on mukavassa ympäristössä. Jos esimerkiksi ulkolämpötila on -30 ° F, kaikki alle 15%: n suhteelliset kosteusarvot ovat hyväksyttäviä. Samoin, jos ulkolämpötila on 60 ° F, mikä tahansa alle 50%: n suhteellinen kosteus on hyväksyttävää. Sisäkosteuden luokitteluun maksimaalinen mukavuus (hyvä), keskimääräinen mukavuus (huono) tai liian kostea/kuiva (ruma) tarvitset ulkolämpötilan ja suhteellisen kosteuden. Olemme nähneet kuinka tuoda suhteellinen kosteus Raspberry Pi: hen. Keskitymme siis ulkolämpötilan tuomiseen. Avaa malli kirjoittamalla seuraava teksti MATLAB -komentoikkunaan:
> rpiOutdoorWeatherData
WeatherData -lohkoa käytetään tuomaan kaupunkisi ulkoinen lämpötila (K) käyttämällä https://openweathermap.org/. Tämän lohkon määrittämiseksi tarvitset API -avaimen verkkosivustolta. Kun olet luonut ilmaisen tilin tällä sivustolla, siirry tilisivullesi. Alla näkyvä API -avaimet -välilehti antaa sinulle avaimen.
WeatherData -lohko tarvitsee kaupungin nimen syöttämisen tietyssä muodossa. Siirry tälle sivulle ja syötä kaupungin nimi ja pilkku ja sen jälkeen kaksi kirjainta maan merkitsemiseksi. Esimerkkejä - Natick, Yhdysvallat ja Chennai, IN. Jos haku palauttaa kaupunkisi tuloksen, käytä sitä WeatherData -lohkossa kyseisessä muodossa. Jos kaupunki ei ole käytettävissä, käytä naapurikaupunkia, jonka sääolosuhteet ovat lähempänä omaasi. Kaksoisnapsauta nyt WeatherData -lohkoa ja syötä kaupungin nimi ja sovellusliittymäavaimesi verkkosivustolta.
Paina Suorita tätä Simulink -mallia tarkistaaksesi, että lohko voi tuoda kaupunkisi lämpötilan Raspberry Pi: hen. Katsotaanpa nyt algoritmia, joka päättää, onko sisäilman kosteus hyvä, huono vai ruma. Kirjoita seuraava esimerkki MATLAB -komentoikkunaan avataksesi seuraavan esimerkin:
> rpisenseHatIHval
Olet ehkä huomannut, että edellisen mallin Test Comfort -lohko puuttuu ja uusi FindRoom Comfort -lohko tarjoaa ihval -valintalohkon. Avaa ja tutustu kaksoisnapsauttamalla tätä lohkoa.
Käytämme WeatherData -lohkoa ulkolämpötilan tuomiseen. Kosteusrajat -alijärjestelmä edustaa yllä olevaa suhteellisen kosteuden ja ulkolämpötilan kaaviota. Ulkolämpötilasta riippuen se näyttää, mikä on kosteuden enimmäisraja -arvon. Avaa DecideIH MATLAB -toimintolohko kaksoisnapsauttamalla sitä.
Jos suhteellinen kosteus ylittää enimmäiskosteusrajan, merkki on positiivinen sen perusteella, miten vähennämme tiedot, mikä tarkoittaa, että huone on liian kostea. Annamme 3 (ruma) tähän skenaarioon. Syynä numeroiden käyttämiseen merkkijonojen sijasta on se, että se on helppo näyttää kaavioissa ja luoda hälytyksiä. Muut MATLAB -funktion luokitukset perustuvat mielivaltaisiin kriteereihin, jotka keksimme. Kun ero on alle 10, se luokitellaan maksimaaliseksi mukavuudeksi ja kun se on alle 20, se on keskimääräinen mukavuus ja sen yläpuolella on liian kuiva. Voit vapaasti käyttää tätä mallia ja tarkistaa huoneesi mukavuustason.
Vaihe 5: Kirjaa sisäilmatiedot ja luokitellut tiedot pilveen
Tässä seuraavassa osassa näemme kuinka kirjataan tietoja pilveen. Voit avata tämän esimerkin kirjoittamalla seuraavan MATLAB -komentoikkunaan.
> rpiSenseHatLogData
Tässä mallissa edellisen esimerkkimallin näyttöosa poistetaan tarkoituksellisesti, koska meidän ei tarvitse valvontajärjestelmän näyttää tilastoja tietojen kirjaamisen ja hälytysten lähettämisen aikana. Käytämme tiedonkeruuta varten ThingSpeakia, ilmaista avoimen lähdekoodin IoT-alusta, joka sisältää MATLAB-analytiikan. Valitsimme ThingSpeakin, koska on olemassa suoria tapoja ohjelmoida Raspberry Pi ja muut edulliset laitteistokortit lähettämään tietoja ThingSpeakiin Simulinkin avulla. ThingSpeak Write -lohko on Simulink Support Package for Raspberry Pi -laitteistokirjastosta, ja se voidaan määrittää käyttämällä ThingSpeak -kanavan Write API -avainta. Alla on yksityiskohtaiset ohjeet kanavan luomisesta. Jos haluat kirjata tietoja jatkuvasti pilveen, haluat Pi: n toimivan Simulinkista riippumatta. Tätä varten voit painaa Simulink -mallisi”Ota käyttöön laitteistoon” -painiketta.
Luo oma ThingSpeak -kanavasi
Ne, joilla ei ole tiliä, voivat rekisteröityä ThingSpeakin verkkosivustolle. Jos sinulla on MathWorks -tili, sinulla on automaattisesti ThingSpeak -tili.
- Kun olet kirjautunut sisään, voit luoda kanavan siirtymällä kohtaan Kanavat> Omat kanavat ja napsauttamalla Uusi kanava.
- Tarvitset vain kanavan nimen ja kirjautuvien kenttien nimet alla kuvatulla tavalla.
- Näytä kanavan sijainti -vaihtoehto tarvitsee syöttöpaikkana kaupungin leveys- ja pituusasteet, ja se voi näyttää sijainnin kanavan sisällä kartalla. (Tässä käytetyt esimerkkiarvot ovat Natick, MA)
- Lopeta kanavan luominen painamalla Tallenna kanava.
4a. Ilmoita, jos tiedot on luokiteltu rumaksi
Jotta voimme saavuttaa sisäilman seurantajärjestelmän, meidän on nähtävä, miten voimme vastaanottaa hälytyksiä pilvitietojen perusteella. Tämä on kriittistä, koska ilman sitä et voi tehdä tarvittavia toimia huoneen mukavuustason muuttamiseksi. Tässä osiossa kerrotaan, miten saat ilmoituksen puhelimeesi aina, kun pilvipalvelutiedot osoittavat, että huone on liian kostea tai kuiva. Saavutamme tämän käyttämällä kahta palvelua: IFTTT Webhooks ja ThingSpeak TimeControl. IFTTT (tarkoittaa If this, then that) on verkkopalvelu, joka pystyy käsittelemään tapahtumia ja käynnistämään tapahtumiin perustuvia toimintoja.
Vaiheet IFTTT -Webhookien asentamiseen
Huomautus: Kokeile näitä tietokoneella saadaksesi parhaat tulokset.
1) Luo tili osoitteeseen ifttt.com (jos sinulla ei vielä ole sellaista) ja luo uusi sovelma Omat appletit -sivulta.
2) Valitse käynnistyspalvelu napsauttamalla sinistä "tämä" -painiketta.
3) Etsi ja valitse palveluksi Webhooks.
4) Valitse Vastaanota verkkopyyntö ja anna tapahtumalle nimi.
5) Valitse Luo liipaisin.
6) Valitse "että" seuraavalla sivulla ja etsi ilmoituksia.
7) Valitse Lähetä ilmoitus IFTTT -sovelluksesta.
8) Syötä tapahtuman nimi, jonka loit IFTTT: n vaiheessa 2, ja valitse Luo toiminto.
9) Jatka, kunnes olet viimeisessä vaiheessa, tarkista ja paina lopeta.
10) Mene osoitteeseen https://ifttt.com/maker_webhooks ja napsauta sivun yläreunassa olevaa Asetukset -painiketta.
11) Siirry Tilitiedot -osion URL -osoitteeseen.
12) Syötä tapahtuman nimi tähän ja napsauta "Testaa".
13) Kopioi viimeisen rivin URL -osoite tulevaa käyttöä varten (avaimella).
Vaiheet ThingSpeak TimeControlin määrittämiseen
1) Valitse Sovellukset> MATLAB -analyysi
2) Napsauta seuraavalla sivulla Uusi, valitse IFTTT: stä Käynnistä sähköposti ja napsauta Luo.
Mallikoodin tärkeimmät osat ovat:
Kanavatunnus - Anna ThingSpeak -kanavasi, jossa on sisäilman kosteustiedot.
IFTTTURL - Anna edellisestä osasta kopioitu URL -osoite Vaihe 13.
readAPIKey - Syötä ThingSpeak -kanavan avain. Toiminto -osa, joka vaikuttaa viimeiseen arvoon. Muuta se seuraavaksi hälytysten käynnistämiseksi.
3) Napsauta ThingSpeak -verkkosivustolla Sovellukset> TimeControl.
4) Valitse Toistuva ja valitse aikaväli.
5) Napsauta Save TimeControl.
Nyt MATLAB -analyysi suoritetaan automaattisesti puolen tunnin välein ja lähettää liipaisimen IFTTT Webhooks -palveluun, jos arvo on suurempi tai yhtä suuri kuin 3. Sitten IFTTT -puhelinsovellus varoittaa käyttäjää ilmoituksella tämän osion alussa.
Vaihe 6: Johtopäätös
Tämän avulla olemme nähneet kaikki tärkeät näkökohdat oman ilmaston seurantajärjestelmän rakentamisessa. Tässä projektissa näimme, miten Simulinkia voidaan käyttää -
- ohjelmoi Raspberry Pi tuodaksesi tietoja Sense HATista. Korosta - Visualisoi Simulinkin tiedot, koska koodi on edelleen käynnissä Raspberry Pi -laitteessa.
- rakentaa sisäilman valvontajärjestelmän visuaalinen näyttö. Korosta - Muuta koodin käyttäytymistä Simulinkin laitteistossa.
- suunnitella sisäilman seurantajärjestelmän algoritmi.
- kirjaa Raspberry Pi -laitteen tiedot pilveen ja luo hälytykset kirjatuista tiedoista.
Mitä muutoksia haluaisit tehdä tähän sisäilman seurantajärjestelmään? Jaa ehdotuksesi kommenttien kautta.