INHOUDSOPGAWE:

Raspberry Pi-gebaseerde binneklimaatmoniteringstelsel: 6 stappe
Raspberry Pi-gebaseerde binneklimaatmoniteringstelsel: 6 stappe

Video: Raspberry Pi-gebaseerde binneklimaatmoniteringstelsel: 6 stappe

Video: Raspberry Pi-gebaseerde binneklimaatmoniteringstelsel: 6 stappe
Video: Мини ПК на Intel N100 - AC8-N, мощная безвентиляторная платформа, установка Home Assistant OS 2024, November
Anonim
Raspberry Pi-gebaseerde binneklimaatmoniteringstelsel
Raspberry Pi-gebaseerde binneklimaatmoniteringstelsel

Lees hierdie blog en bou u eie stelsel sodat u kennisgewings kan ontvang as u kamer te droog of vogtig is.

Wat is 'n moniteringstelsel vir binneklimaat en waarom het ons dit nodig?

Binneklimaatmoniteringstelsels bied 'n vinnige blik op belangrike statistieke wat verband hou met die klimaat, soos temperatuur en relatiewe humiditeit. Dit kan baie nuttig wees om hierdie statistieke te sien en waarskuwings op u telefoon te ontvang as die kamer te vogtig of droog is. Deur die waarskuwings te gebruik, kan u vinnig die nodige stappe doen om maksimum gemak in die kamer te verkry deur die verwarmer aan te skakel of die vensters oop te maak. In hierdie projek sal ons sien hoe om Simulink te gebruik om:

1) bring klimaatstatistieke (temperatuur, relatiewe humiditeit en druk) van die Sense HAT na die Raspberry Pi

2) vertoon gemete data op die 8x8 LED -matriks van die Sense HAT

3) ontwerp 'n algoritme om te besluit of die binnenshuise humiditeit 'goed', 'sleg' of 'lelik' is.

4) teken die data op die wolk aan en stuur 'n waarskuwing as die data 'lelik' (te vogtig of droog) ingedeel is.

Voorrade

Framboos Pi 3 Model B

Framboos Pi Sense HAT

Stap 1: sagteware benodig

Sagteware benodig
Sagteware benodig

U benodig MATLAB, Simulink en kies byvoegings om saam te volg en u eie moniteringstelsel vir binnenshuise klimaat te bou.

Maak MATLAB oop met administratortoegang (klik met die rechtermuisknop op die MATLAB -ikoon en kies Begin as administrateur). Kies byvoegings in die MATLAB Toolstrip en klik op Kry byvoegings.

Soek hier die ondersteuningspakkette met hul name hieronder en 'Voeg dit by'.

a. MATLAB -ondersteuningspakket vir Raspberry Pi -hardeware: verkry insette en stuur uitsette na Raspberry Pi -borde en gekoppelde toestelle

b. Simulink -ondersteuningspakket vir Raspberry Pi -hardeware: voer Simulink -modelle uit op Raspberry Pi -borde

c. RPi_Indoor_Climate_Monitoring_System: Voorbeeldmodelle wat benodig word vir hierdie projek

Opmerking - Volg tydens die installasie die instruksies op die skerm om u Pi op te stel om te werk met MATLAB en Simulink.

Stap 2: Bring sensordata na Raspberry Pi met Simulink

Bring sensordata na Raspberry Pi met Simulink
Bring sensordata na Raspberry Pi met Simulink

Vir diegene wat nie vertroud is met Simulink nie, is dit 'n grafiese programmeringsomgewing wat gebruik word om dinamiese stelsels te modelleer en na te boots. Sodra u u algoritme in Simulink ontwerp het, kan u outomaties kode genereer en op 'n Raspberry Pi of ander hardeware inbed.

Tik die volgende in die MATLAB -opdragvenster om die eerste voorbeeldmodel oop te maak. Ons sal hierdie model gebruik om data oor temperatuur, druk en relatiewe humiditeit in die Raspberry Pi te bring.

> rpiSenseHatBringSensorData

Die blokke LPS25H druksensor en HTS221 humiditeitsensor kom uit die Sense HAT -biblioteek onder die Simulink -ondersteuningspakket vir Raspberry Pi -hardeware -biblioteke.

Die omvangblokke kom uit die Sinks -biblioteek onder Simulink -biblioteke. Om te verseker dat u model korrek gekonfigureer is, klik op die rat -ikoon in u Simulink -model. Gaan na Hardware Implementation> Hardware board settings> Doel hardeware hulpbronne.

Opmerking - u hoef nie op te stel as u die opstelinstruksies gevolg het tydens die installering van die Simulink -ondersteuningspakket vir Raspberry Pi nie. Die toesteladres word outomaties ingevul volgens die van u Pi.

Maak seker dat die toesteladres hier ooreenstem met die IP -adres wat u hoor wanneer u Pi opstart. Miskien moet u u Pi weer aanskakel met 'n koptelefoon wat aan die aansluiting gekoppel is om die adres van die toestel te hoor.

Klik op OK en druk op die Run -knoppie soos hieronder getoon. Maak seker dat u Pi fisies via die USB-kabel aan die rekenaar gekoppel is of op dieselfde Wi-Fi-netwerk as u rekenaar is.

As u op die Run -knoppie in die eksterne modus druk, genereer Simulink outomaties die C -kode wat gelykstaande is aan u model en laai 'n uitvoerbare program af na die Raspberry Pi. Beide omvangblokke is ingestel om oop te maak sodra die model begin werk. As Simulink klaar is met die implementering van die kode na die Raspberry Pi, sien u die data oor druk, temperatuur en relatiewe humiditeit op die omvang, soos hieronder getoon.

Opmerking - die kode werk op die Raspberry Pi en u kyk na die werklike seine deur die Simulink -omvangblokke, net soos u sou doen as u 'n ossilloskoop aan die hardeware self gekoppel het. Die temperatuurwaarde van die twee sensors is effens van mekaar af. Kies gerus die een wat die werklike temperatuur in u kamer meer weerspieël, en gebruik dit in die daaropvolgende gedeeltes. In al die toetse met die Sense HAT wat ons gehad het, was die temperatuurwaardes van die HTS221 humiditeitsensor nader aan die werklike temperatuur in die kamer. Daarmee het ons die basiese beginsels gesien van hoe om sensordata van die Sense HAT in die Raspberry Pi in te bring.

Stap 3: Vertoon sensordata op die 8x8 LED Matrix

Vertoon sensordata op die 8x8 LED Matrix
Vertoon sensordata op die 8x8 LED Matrix
Vertoon sensordata op die 8x8 LED Matrix
Vertoon sensordata op die 8x8 LED Matrix

In hierdie afdeling sal ons sien hoe die visuele deel van hierdie projek by die laaste model gevoeg is. Die Sense HAT -elemente wat in hierdie afdeling gebruik word, is die humiditeitsensor (om relatiewe humiditeit en temperatuur te kry), druksensor, LED -matriks en die joystick. Die joystick word gebruik om te kies watter sensor ons wil vertoon.

Om die volgende voorbeeldmodel oop te maak, tik die volgende in die MATLAB -opdragvenster.

> rpiSenseHatDisplay

Die joystick -blok kom uit die Sense HAT -biblioteek. Dit help ons om die joystick -data na die Raspberry Pi te bring, net soos die druk- en humiditeitsensorblokke in die vorige voorbeeld. Op die oomblik gebruik ons die Test Comfort -blok om 'goed' (as die blok se waarde 1 is) op die LED -matriks te vertoon. Dit sal 'sleg' vertoon as die blokwaarde 2 of 'lelik' is as die waarde 3 of 4 is. In die volgende afdeling sal ons die werklike algoritme sien wat besluit of die binnenshuise humiditeit goed, sleg of lelik is. Kom ons verken die Selector -blok deur daarop te dubbelklik. MATLAB -funksieblokke word gebruik om MATLAB -kode in u Simulink -model te integreer. In hierdie geval bring ons SelectorFcn hieronder in.

funksie [waarde, toestand] = SelectorFcn (JoyStickIn, druk, humiditeit, temp, ihval)

volgehoue JoyStickCount

as dit leeg is (JoyStickCount)

JoyStickCount = 1;

einde

as JoyStickIn == 1

JoyStickCount = JoyStickCount + 1;

as JoyStickCount == 6

JoyStickCount = 1;

einde

einde

skakel JoyStickCount oor

geval 1 % Vertoon temperatuur in C

waarde = temp;

Staat = 1;

geval 2 % Toon druk in atm

waarde = druk/1013,25;

Staat = 2;

geval 3 % Toon relatiewe humiditeit in %

waarde = humiditeit;

Staat = 3;

geval 4 % Vertoon temperatuur in F

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

Staat = 4;

geval 5 % Vertoon goed/sleg/lelik

waarde = ihval;

Staat = 5;

anders % Moenie vertoon nie/Vertoon 0

waarde = 0;

Staat = 6;

einde

Skakeltellings word algemeen gebruik as 'n seleksiebeheermeganisme. In ons geval wil ons hê dat die joystick -invoer die seleksiebeheer is, en kies die volgende data om te wys elke keer as die joystick -knoppie ingedruk word. Hiervoor stel ons 'n if -lus op wat die veranderlike JoyStickCount verhoog met elke druk op die knoppie (JoyStickIn -waarde is 1 as daar 'n druk op die knoppie is). In dieselfde lus, om te verseker dat ons slegs tussen die vyf opsies hierbo ry, het ons 'n ander voorwaarde bygevoeg wat die veranderlike waarde terugstel na 1. Deur dit te gebruik, kies ons watter waarde op die LED -matriks vertoon sal word. Geval 1 is die standaard as ons JoyStickCount definieer om by 1 te begin, en dit beteken dat die LED -matriks die temperatuur in Celsius sal vertoon. Die toestand veranderlike word deur die blaai -datablok gebruik om te verstaan watter sensorwaarde tans vertoon word en watter eenheid vertoon moet word. Noudat ons weet hoe ons die regte sensor moet kies, kyk ons hoe die werklike skerm werk.

Vertoon karakters en syfers

Om op die Sense HAT LED -matriks te vertoon, het ons 8x8 matrikse gemaak vir:

1) alle getalle (0-9)

2) alle eenhede (° C, A, % en ° F)

3) desimale punt

4) alfabet uit die woorde goed, sleg en lelik.

Hierdie 8x8 matrikse is gebruik as invoer in die 8x8 RGB LED Matrix -blok. Hierdie blok verlig die LED's wat ooreenstem met die elemente op die matriks met 'n waarde van 1 soos hieronder getoon.

Blaai deur die teks

Die rolblok in ons model blaai deur snare wat tot 6 karakters lank kan wees. Die waarde van 6 is gekies, aangesien dit die langste string is wat ons in hierdie projek sal lewer, byvoorbeeld 23,8 ° C of 99,1 ° F. Let op, hier word ° C as een karakter beskou. Dieselfde idee kan uitgebrei word om ook snare van ander lengtes te blaai.

Hier is 'n-g.webp

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

Om 'n string van 6 karakters elk op die 8x8 -matriks te vertoon, benodig ons 'n totaal van 8x48 grootte. Om 'n string wat maksimum 4 karakters lank is, te vertoon, moet ons 'n 8x32 -matriks skep. Kom ons kyk nou na die hele aksie deur op die Run -knoppie te druk. Die standaardvertoning op die LED -matriks is die temperatuurwaarde in ° C. Die omvangblok sal die toestand en waarde van die selekteursblok wys. Druk die joystick -knoppie op die Sense HAT en hou 'n oomblik ingedruk om te verifieer dat die waarde na die volgende sensoruitset verander en herhaal hierdie proses totdat dit die staatswaarde van 5. bereik. verander die waarde van Test Comfort -blok na enige getal tussen 1 en 4. Let op hoe die verandering van die waarde van 'n blok op die Simulink -model onmiddellik die manier waarop die kode op die hardeware optree, verander. Dit kan handig wees in situasies waarin u die gedrag van die kode wil verander vanaf 'n afgeleë plek. Daarmee het ons die belangrikste elemente agter die visualiseringsaspek van die klimaatmoniteringstelsel gesien. In die volgende afdeling leer ons hoe ons ons moniteringstelsel vir binneklimaat kan voltooi.

Stap 4: Ontwerp 'n algoritme in Simulink om te besluit of binnenshuise humiditeit 'goed', 'sleg' of 'lelik' is

Ontwerp 'n algoritme in Simulink om te besluit of binnenshuise humiditeit 'goed', 'sleg' of 'lelik' is
Ontwerp 'n algoritme in Simulink om te besluit of binnenshuise humiditeit 'goed', 'sleg' of 'lelik' is

Daar is verskillende metodes om te verstaan of u kamer te vogtig/droog is of om te weet watter binnenshuise humiditeitsvlak as gemaklik beskou word. Met behulp van hierdie artikel het ons 'n oppervlaktekurwe opgestel om relatiewe humiditeit en buitentemperature binne te verbind, soos hierbo getoon.

Enige relatiewe humiditeitswaarde in hierdie gebied beteken dat u kamer gemaklik is. As die buitentemperatuur byvoorbeeld -30 ° F is, is 'n relatiewe humiditeitswaarde onder 15% aanvaarbaar. As die buitentemperatuur 60 ° F is, is 'n relatiewe humiditeit onder 50% ook aanvaarbaar. Om die binnenshuise humiditeit in maksimum gemak (goed), gemiddelde gemak (sleg) of te vogtig/droog (lelik) te klassifiseer, benodig u buitetemperatuur en relatiewe humiditeit. Ons het gesien hoe ons 'n relatiewe humiditeit in die Raspberry Pi kan inbring. Kom ons fokus dus daarop om buitentemperatuur in te bring. Tik die volgende in die MATLAB -opdragvenster om die model oop te maak:

> rpiOutdoorWeatherData

Die WeatherData -blok word gebruik om die buitentemperatuur van u stad (in K) in te bring met behulp van https://openweathermap.org/. Om hierdie blok op te stel, benodig u 'n API -sleutel van die webwerf. Nadat u u gratis rekening op hierdie webwerf geskep het, gaan na u rekeningbladsy. Die onderstaande API -sleutels -oortjie gee u die sleutel.

Die WeatherData -blok benodig die invoer van u stadsnaam in 'n spesifieke formaat. Besoek hierdie bladsy en voer u stadsnaam in, dan die komma -simbool gevolg deur 2 letters om die land aan te dui. Voorbeelde - Natick, US en Chennai, IN. As die soektog 'n resultaat vir u stad gee, gebruik dit in die WeatherData -blok in die spesifieke formaat. As u stad nie beskikbaar is nie, gebruik 'n naburige stad waarvan die weersomstandighede nader aan u s'n is. Dubbelklik nou op die WeatherData -blok en voer u stadsnaam en u API -sleutel van die webwerf in.

Druk op Run op hierdie Simulink -model om te kyk of die blok die temperatuur van u stad in die Raspberry Pi kan bring. Kom ons kyk na die algoritme wat besluit of die binnenshuise humiditeit goed, sleg of lelik is. Tik die volgende in die MATLAB -opdragvenster om die volgende voorbeeld oop te maak:

> rpisenseHatIHval

U het miskien opgemerk dat die Test Comfort -blok van die vorige model ontbreek en 'n nuwe blok genaamd FindRoom Comfort bied die ihval aan die Selector -blok. Dubbelklik op hierdie blok om oop te maak en te verken.

Ons gebruik die WeatherData -blok om buitentemperatuur in te bring. Die substelsel Humidity Limits verteenwoordig die grafiek relatiewe humiditeit en buitentemperatuur wat ons hierbo gesien het. Afhangende van die buitentemperatuur, word die maksimum humiditeitsgrenswaarde bepaal. Laat ons die DecideIH MATLAB -funksieblok oopmaak deur daarop te dubbelklik.

As die relatiewe humiditeitswaarde die maksimum humiditeitsgrens oorskry, is die teken positief op grond van die manier waarop ons die data aftrek, wat impliseer dat die kamer te vogtig is. Ons gee 'n 3 (lelik) vir hierdie scenario. Die rede vir die gebruik van getalle in plaas van snare is dat dit maklik op grafieke kan verskyn en waarskuwings kan skep. Die res van die klassifikasies in die MATLAB -funksie is gebaseer op arbitrêre kriteria waarmee ons vorendag gekom het. As die verskil minder as 10 is, word die maksimum gemak gekategoriseer, en as dit minder as 20 is, is dit 'n gemiddelde gemak en bo dit is dit te droog. Gebruik hierdie model en kyk na die gemak van u kamer.

Stap 5: Teken data vir binneklimaat en die gekategoriseerde data op die wolk aan

Teken binneklimaatdata en die gekategoriseerde data op die wolk aan
Teken binneklimaatdata en die gekategoriseerde data op die wolk aan

In hierdie volgende afdeling sal ons sien hoe om data op die wolk aan te meld. Om hierdie voorbeeld oop te maak, tik die volgende in die MATLAB -opdragvenster.

> rpiSenseHatLogData

In hierdie model word die vertoongedeelte van die vorige voorbeeldmodel doelbewus verwyder, aangesien ons nie die moniteringstelsel nodig het om die statistieke te wys terwyl ons data aanmeld en waarskuwings uitstuur nie. Ons gebruik ThingSpeak, 'n gratis IoT-platform met open source wat MATLAB-analise bevat, vir die data-aanmelding. Ons het ThingSpeak gekies, aangesien daar direkte maniere is om Raspberry Pi en ander goedkoop hardeware borde te programmeer om data na ThingSpeak te stuur met behulp van Simulink. Die ThingSpeak -skryfblok is afkomstig van die Simulink -ondersteuningspakket vir die Raspberry Pi -hardeware -biblioteek en kan gekonfigureer word met behulp van die Write API -sleutel vanaf u ThingSpeak -kanaal. Gedetailleerde instruksies oor hoe om die kanaal te skep, word hieronder verskaf. Om voortdurend data op die wolk aan te meld, wil u hê dat u Pi onafhanklik van Simulink moet werk. Om dit te kan doen, kan u op die "Deploy to Hardware" -knoppie in u Simulink -model druk.

Skep u eie ThingSpeak -kanaal

Diegene wat nie 'n rekening het nie, kan op die ThingSpeak -webwerf aanmeld. As u 'n MathWorks -rekening het, het u outomaties 'n ThingSpeak -rekening.

  • Nadat u aangemeld het, kan u 'n kanaal skep deur na Kanale> My kanale te gaan en op Nuwe kanaal te klik.
  • Al wat u nodig het, is 'n naam vir die kanaal en name vir die velde wat u gaan aanmeld, soos hieronder getoon.
  • Die opsie Wys kanaal ligging benodig die breedtegraad en lengtegraad van u stad as invoer en kan die ligging binne die kanaal op 'n kaart wys. (Voorbeeldwaardes wat hier gebruik word, is vir Natick, MA)
  • Druk dan op Save Channel om die kanaal klaar te maak.

4a. Waarskuwing as die data 'lelik' gekategoriseer word

Om ons binneklimaatmoniteringstelsel te voltooi, moet ons kyk hoe om waarskuwings op grond van wolkdata te ontvang. Dit is van kritieke belang, want daarsonder sal u nie die nodige stappe kan neem om die gemak in die kamer te verander nie. In hierdie afdeling sien ons hoe u 'n kennisgewing op u telefoon kan ontvang wanneer die wolkdata aandui dat die kamer te vogtig of droog is. Ons sal dit bereik deur twee dienste te gebruik: IFTTT Webhooks en ThingSpeak TimeControl. IFTTT (staan vir As dit, dan is dit) is 'n aanlyn diens wat gebeure kan hanteer en aksies kan veroorsaak op grond van die gebeure.

Stappe om IFTTT Webhooks op te stel

Let wel: Probeer dit op 'n rekenaar vir die beste resultate.

1) Skep 'n rekening op ifttt.com (as u nie een het nie) en skep 'n nuwe applet vanaf die My applets -bladsy.

2) Klik op die blou "hierdie" knoppie om u snellerdiens te kies.

3) Soek en kies Webhooks as die diens.

4) Kies Ontvang 'n webversoek en gee 'n naam vir die geleentheid.

5) Kies skep sneller.

6) Kies 'dit' op die volgende bladsy en soek na kennisgewings.

7) Kies 'n kennisgewing stuur vanaf die IFTTT -app.

8) Voer die gebeurtenisnaam in wat u in stap 2 van IFTTT geskep het en kies skep aksie.

9) Gaan voort totdat u die laaste stap bereik het, hersien en druk afwerking.

10) Gaan na https://ifttt.com/maker_webhooks en klik op die knoppie Instellings bo -aan die bladsy.

11) Gaan na die URL in die afdeling Rekeninginligting.

12) Voer u gebeurtenisnaam hier in en klik op 'Toets dit'.

13) Kopieer die URL op die laaste reël vir toekomstige gebruik (met die sleutel).

Stappe om ThingSpeak TimeControl op te stel

1) Kies programme> MATLAB -analise

2) Klik op die volgende bladsy op nuut, en kies die e -poslys van IFTTT om dit te aktiveer, en klik op Skep.

Die belangrike stukke hier in die sjabloonkode is:

Kanaal -ID - Voer u ThingSpeak -kanaal in met die inligting oor 'binnenshuise humiditeitswaarde'.

IFTTTURL - Voer die URL in wat gekopieer is uit die vorige afdeling Stap 13.

readAPIKey - Tik sleutel van die ThingSpeak Channel. Action -afdeling in - die een wat op die laaste waarde inwerk. Verander dit na die volgende om waarskuwings te aktiveer.

3) Klik op die ThingSpeak -webwerf op Apps> TimeControl.

4) Kies Herhalend en kies 'n tydfrekwensie.

5) Klik op Save TimeControl.

Nou loop die MATLAB -analise elke halfuur outomaties af en stuur 'n sneller na die IFTTT Webhooks -diens as die waarde groter is as of gelyk is aan 3. Dan sal die IFTTT -telefoonprogram die gebruiker in kennis stel soos aangedui aan die begin van hierdie afdeling.

Stap 6: Gevolgtrekking

Daarmee het ons al die belangrike aspekte gesien van hoe u u eie klimaatmoniteringstelsel kan bou. In hierdie projek het ons gesien hoe Simulink gebruik kan word om -

  • programmeer 'n Raspberry Pi om data van Sense HAT in te bring. Hoogtepunt - Visualiseer die data in Simulink aangesien die kode steeds op die Raspberry Pi werk.
  • bou die visuele vertoning van die binneklimaatmoniteringstelsel. Hoogtepunt - Verander die manier waarop u kode optree op die hardeware van Simulink.
  • ontwerp die algoritme van die binneklimaatmoniteringstelsel.
  • teken die data van die Raspberry Pi op die wolk in en skep waarskuwings uit die aangetekende data.

Wat is 'n paar van die veranderinge wat u aan hierdie binneklimaatmoniteringstelsel sou doen? Deel u voorstelle via kommentaar.

Aanbeveel: