Innehållsförteckning:
- Tillbehör
- Steg 1: Programvara behövs
- Steg 2: Ta med sensordata till Raspberry Pi med Simulink
- Steg 3: Visa sensordata på 8x8 LED -matrisen
- Steg 4: Utforma en algoritm i Simulink för att avgöra om inomhusfuktigheten är "bra", "dålig" eller "ful"
- Steg 5: Logga inomhusklimatdata och kategoriserade data i molnet
- Steg 6: Slutsats
Video: Raspberry Pi-baserat inomhusklimatövervakningssystem: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
Läs den här bloggen och bygg ditt eget system så att du kan få varningar när ditt rum är för torrt eller fuktigt.
Vad är ett övervakningssystem för inomhusklimat och varför behöver vi det?
Inomhusklimatövervakningssystem ger en snabb blick på viktig klimatrelaterad statistik som temperatur och relativ luftfuktighet. Att kunna se denna statistik och ta emot varningar på din telefon när rummet är för fuktigt eller torrt kan vara till stor hjälp. Med hjälp av varningarna kan du vidta snabba åtgärder för att uppnå maximal komfort i rummet genom att slå på värmaren eller öppna fönstren. I det här projektet kommer vi att se hur vi använder Simulink för att:
1) ta in klimatstatistik (temperatur, relativ luftfuktighet och tryck) från Sense HAT till Raspberry Pi
2) visa uppmätta data på 8x8 LED -matrisen för Sense HAT
3) utforma en algoritm för att avgöra om inomhusfuktigheten är "bra", "dålig" eller "ful".
4) logga in data i molnet och skicka en varning om uppgifterna är kategoriserade "fula" (för fuktiga eller torra).
Tillbehör
Raspberry Pi 3 Modell B
Raspberry Pi Sense HAT
Steg 1: Programvara behövs
Du behöver MATLAB, Simulink och välj tillägg för att följa med och bygga ditt eget övervakningssystem för inomhusklimat.
Öppna MATLAB med administratörsbehörighet (Högerklicka på MATLAB -ikonen och välj Kör som administratör). Välj tillägg från MATLAB Toolstrip och klicka på Hämta tillägg.
Sök här efter supportpaketen med deras namn nedan och "Lägg till" dem.
a. MATLAB -supportpaket för Raspberry Pi -maskinvara: Skaffa ingångar och skicka utgångar till Raspberry Pi -kort och anslutna enheter
b. Simulink -supportpaket för Raspberry Pi -maskinvara: Kör Simulink -modeller på Raspberry Pi -kort
c. RPi_Indoor_Climate_Monitoring_System: Exempelmodeller som behövs för detta projekt
Obs - Under installationen, följ instruktionerna på skärmen för att konfigurera din Pi för att fungera med MATLAB och Simulink.
Steg 2: Ta med sensordata till Raspberry Pi med Simulink
För dem som inte är bekanta med Simulink är det en grafisk programmeringsmiljö som används för att modellera och simulera dynamiska system. När du har utformat din algoritm i Simulink kan du automatiskt generera kod och bädda in den på en Raspberry Pi eller annan maskinvara.
Skriv följande i MATLAB -kommandofönstret för att öppna den första exempelmodellen. Vi kommer att använda den här modellen för att få data om temperatur, tryck och relativ luftfuktighet i Raspberry Pi.
> rpiSenseHatBringSensorData
Blocken LPS25H Trycksensor och HTS221 Luftfuktighetssensor är från Sense HAT -biblioteket under Simulink Support Package för Raspberry Pi Hardware -bibliotek.
Omfattningsblocken är från Sinks -biblioteket under Simulink -bibliotek. För att säkerställa att din modell är korrekt konfigurerad, klicka på kugghjulsikonen i din Simulink -modell. Navigera till Maskinvaruimplementering> Maskinvarukortets inställningar> Rikta in maskinvaruresurser.
Obs - Du behöver inte konfigurera om du följde installationsinstruktionerna när du installerade Simulink -supportpaketet för Raspberry Pi. Enhetsadressen fylls i automatiskt till din Pi.
Se till att enhetsadressen här matchar IP -adressen som du hör när din Pi startar upp. Du kan behöva slå på din Pi igen med en hörlur ansluten till uttaget för att höra enhetens adress.
Klicka på OK och tryck på knappen Kör enligt nedan. Se till att din Pi antingen är fysiskt ansluten till datorn via USB-kabel eller är i samma Wi-Fi-nätverk som din dator.
När du trycker på Kör -knappen i externt läge genererar Simulink automatiskt C -koden som motsvarar din modell och laddar ner en körbar till Raspberry Pi. Båda omfattningsblocken är konfigurerade att öppna när modellen börjar köras. När Simulink är klar med att distribuera koden till Raspberry Pi ser du data om tryck, temperatur och relativ luftfuktighet på omfattningarna enligt nedan.
Obs - Koden körs på Raspberry Pi och du tittar på de faktiska signalerna genom Simulink -omfattningsblocken, precis som om du hade ett oscilloskop anslutet till själva hårdvaran. Temperaturvärdet från de två sensorerna är något från varandra. Välj gärna den som återspeglar den faktiska temperaturen i ditt rum närmare och använd den i efterföljande avsnitt. I alla tester med Sense HAT som vi hade var HTS221 fuktsensors temperaturvärden närmare den faktiska temperaturen i rummet. Med det har vi sett grunderna för hur man tar in sensordata från Sense HAT till Raspberry Pi.
Steg 3: Visa sensordata på 8x8 LED -matrisen
I det här avsnittet kommer vi att se hur den visuella visningsdelen av detta projekt har lagts till i den senaste modellen. Sense HAT -elementen som används i detta avsnitt är fuktsensorn (för att få relativ fuktighet och temperatur), trycksensor, LED -matris och joysticken. Joysticken används för att välja vilken sensor vi vill visa.
För att öppna nästa exempelmodell skriver du följande i kommandofönstret MATLAB.
> rpiSenseHatDisplay
Joystick -blocket är från Sense HAT -biblioteket. Det hjälper oss att föra in joystickdata till Raspberry Pi, precis som tryck- och fuktsensorblocken gjorde i föregående exempel. För närvarande använder vi Test Comfort -blocket för att visa "bra" (när blockets värde är 1) på LED -matrisen. Det kommer att visa "dåligt" när blockvärdet är 2 eller "fult" när värdet är antingen 3 eller 4. I nästa avsnitt kommer vi att se den faktiska algoritmen som avgör om inomhusfuktigheten är bra, dålig eller ful. Låt oss utforska väljarblocket genom att dubbelklicka på det. MATLAB -funktionsblock används för att integrera MATLAB -kod i din Simulink -modell. I det här fallet tar vi in SelectorFcn nedan.
funktion [värde, tillstånd] = SelectorFcn (JoyStickIn, tryck, luftfuktighet, temp, ihval)
ihållande JoyStickCount
if isempty (JoyStickCount)
JoyStickCount = 1;
slutet
om JoyStickIn == 1
JoyStickCount = JoyStickCount + 1;
om JoyStickCount == 6
JoyStickCount = 1;
slutet
slutet
växla JoyStickCount
fall 1 % Displaytemperatur i C
värde = temp;
Stat = 1;
fall 2 % Displaytryck i atm
värde = tryck/1013,25;
Stat = 2;
fall 3 % Display relativ luftfuktighet i %
värde = fuktighet;
Stat = 3;
fodral 4 % Displaytemperatur i F
värde = temp*(9/5) +32;
Stat = 4;
fodral 5 % Display Bra/Dåligt/Fult
värde = ihval;
Stat = 5;
annars % Visa inte/Visa 0
värde = 0;
Stat = 6;
slutet
Switch-case-uttalanden används i allmänhet som en urvalsstyrmekanism. I vårt fall vill vi att joystickingången ska vara urvalsreglage och välja nästa data som ska visas varje gång joystick -knappen trycks in. För detta ställer vi upp en if -loop som ökar variabeln JoyStickCount för varje knapptryckning (JoyStickIn -värdet är 1 om det finns ett knapptryck). I samma slinga, för att säkerställa att vi bara cyklar mellan de fem alternativen ovan har vi lagt till ett annat villkor som återställer variabelvärdet till 1. Med hjälp av detta väljer vi vilket värde som ska visas på LED -matrisen. Fall 1 är standard eftersom vi definierar JoyStickCount för att börja vid 1, och det betyder att LED -matrisen visar temperaturen i Celsius. Tillståndsvariabeln används av rullningsblocket för att förstå vilket sensorvärde som för närvarande visas och vilken enhet som ska visas. Nu när vi vet hur vi väljer rätt sensor att visa, låt oss titta på hur den faktiska displayen fungerar.
Visar tecken och siffror
För att visa på Sense HAT LED -matrisen skapade vi 8x8 matriser för:
1) alla nummer (0-9)
2) alla enheter (° C, A, % och ° F)
3) decimalpunkt
4) alfabet från orden bra, dåligt och fult.
Dessa 8x8 -matriser användes som ingång till 8x8 RGB LED Matrix -blocket. Detta block tänder lysdioderna som motsvarar de element på matrisen som har ett värde på 1 enligt nedan.
Bläddra i texten
Scrolldatablocket i vår modell rullar genom strängar som kan vara upp till 6 tecken långa. Värdet 6 valdes eftersom det är den längsta sträng som vi kommer att mata ut i detta projekt, exempel 23,8 ° C eller 99,1 ° F. Observera, här anses ° C vara ett tecken. Samma idé kan utökas till att rulla strängar av andra längder också.
Här är en-g.webp
www.element14.com/community/videos/29400/l/gif
För att visa en sträng med 6 tecken vardera på 8x8 -matrisen behöver vi en bild på 8x48 storlek totalt. För att visa en sträng som är högst 4 tecken lång måste vi skapa en 8x32 matris. Låt oss nu se det hela inaktivt genom att trycka på Kör -knappen. Standarddisplayen på LED -matrisen är temperaturvärdet i ° C. Omfattningsblocket visar status och värde från väljarblocket. Tryck på joystick -knappen på Sense HAT och håll den intryckt en sekund för att verifiera att värdet ändras till nästa sensorutgång och upprepa denna process tills den når statusvärdet 5. För att observera algoritmen som går igenom alla fall av kategorin inomhusfuktighet, ändra värdet på Test Comfort -blocket till valfritt tal mellan 1 och 4. Lägg märke till hur ändringen av värdet på ett block på Simulink -modellen omedelbart förändrar hur koden beter sig på hårdvaran. Detta kan vara användbart i situationer där man vill ändra hur koden beter sig från en avlägsen plats. Med det har vi sett de viktigaste elementen bakom visualiseringsaspekten av klimatövervakningssystemet. I nästa avsnitt kommer vi att lära oss hur vi kan slutföra vårt övervakningssystem för inomhusklimat.
Steg 4: Utforma en algoritm i Simulink för att avgöra om inomhusfuktigheten är "bra", "dålig" eller "ful"
För att förstå om ditt rum är för fuktigt/torrt eller för att veta vilken inomhusfuktighet som anses vara bekväm, finns det flera metoder. Med hjälp av denna artikel etablerade vi en areakurva för att ansluta inomhus relativ fuktighet och utomhustemperaturer som visas ovan.
Alla relativa luftfuktighetsvärden i detta område betyder att ditt rum är bekvämt. Till exempel, om utomhustemperaturen är -30 ° F, är alla relativa luftfuktighetsvärden under 15% acceptabla. På samma sätt, om utomhustemperaturen är 60 ° F, är relativ luftfuktighet under 50% acceptabelt. För att kategorisera inomhusfuktigheten i maximal komfort (bra), genomsnittlig komfort (dålig) eller för fuktig/torr (ful) behöver du utomhustemperatur och relativ luftfuktighet. Vi har sett hur man får in relativ fuktighet i Raspberry Pi. Så, låt oss fokusera på att få in utomhustemperatur. Skriv följande i MATLAB -kommandofönstret för att öppna modellen:
> rpiOutdoorWeatherData
WeatherData -blocket används för att få in din yttre temperatur (i K) med https://openweathermap.org/. För att konfigurera detta block behöver du en API -nyckel från webbplatsen. När du har skapat ditt kostnadsfria konto på den här webbplatsen går du till din kontosida. API -nycklarna som visas nedan ger dig nyckeln.
WeatherData -blocket behöver mata in ditt stadsnamn i ett specifikt format. Besök den här sidan och ange ditt stadsnamn och sedan kommasymbolen följt av 2 bokstäver för att beteckna land. Exempel - Natick, USA och Chennai, IN. Om sökningen returnerar ett resultat för din stad, använd det i WeatherData -blocket i det specifika formatet. Om din stad inte är tillgänglig, använd en närliggande stad vars väderförhållanden ligger närmare din. Dubbelklicka nu på WeatherData -blocket och ange ditt stadsnamn och din API -nyckel från webbplatsen.
Tryck på Kör på denna Simulink -modell för att kontrollera att blocket kan föra in temperaturen i din stad till Raspberry Pi. Låt oss nu se algoritmen som avgör om inomhusfuktigheten är bra, dålig eller ful. Skriv följande i MATLAB -kommandofönstret för att öppna nästa exempel:
> rpisenseHatIHval
Du kanske har märkt att Test Comfort -blocket från den tidigare modellen saknas och ett nytt block som heter FindRoom Comfort tillhandahåller ihval till Selector -blocket. Dubbelklicka på det här blocket för att öppna och utforska.
Vi använder WeatherData -blocket för att få in utomhustemperatur. Delsystemet Luftfuktighetsgränser representerar diagrammet för relativ fuktighet mot utomhustemperatur som vi såg ovan. Beroende på utomhustemperaturen kommer den att avge vad det maximala fuktighetsgränsvärdet ska vara. Låt oss öppna funktionsblocket DecideIH MATLAB genom att dubbelklicka på det.
Om det relativa luftfuktighetsvärdet överskrider den maximala luftfuktighetsgränsen kommer tecknet att vara positivt baserat på hur vi subtraherar data, vilket innebär att rummet är för fuktigt. Vi lägger ut en 3 (ful) för detta scenario. Anledningen bakom att använda tal istället för strängar är att det är lätt att visa på grafer och skapa varningar från. Resten av klassificeringarna i MATLAB -funktionen är baserade på godtyckliga kriterier som vi kom fram till. När skillnaden är mindre än 10 kategoriseras den maximala komforten och när den är mindre än 20 är det genomsnittlig komfort och över det är för torrt. Kör gärna den här modellen och kontrollera ditt rums komfortnivå.
Steg 5: Logga inomhusklimatdata och kategoriserade data i molnet
I det här nästa avsnittet kommer vi att se hur du loggar data i molnet. Om du vill öppna detta exempel skriver du följande i kommandofönstret MATLAB.
> rpiSenseHatLogData
I den här modellen tas visningsdelen av den tidigare exempelmodellen avsiktligt bort eftersom vi inte behöver övervakningssystemet för att visa statistik medan du loggar data och skickar ut varningar. Vi använder ThingSpeak, en gratis IoT-plattform med öppen källkod som innehåller MATLAB-analys, för dataloggningsaspekten. Vi valde ThingSpeak eftersom det finns direkta sätt att programmera Raspberry Pi och andra billiga hårdvarukort för att skicka data till ThingSpeak med Simulink. ThingSpeak -skrivblocket är från Simulink -supportpaketet för Raspberry Pi -maskinvarubibliotek och kan konfigureras med Skriv -API -nyckeln från din ThingSpeak -kanal. Detaljerade instruktioner om hur du skapar kanalen finns nedan. För att kontinuerligt logga in data på molnet vill du att din Pi ska fungera oberoende av Simulink. För detta kan du trycka på knappen "Distribuera till maskinvara" i din Simulink -modell.
Skapa din egen ThingSpeak -kanal
De som inte har ett konto kan registrera sig på ThingSpeak -webbplatsen. Om du har ett MathWorks -konto har du automatiskt ett ThingSpeak -konto.
- När du har loggat in kan du skapa en kanal genom att gå till Kanaler> Mina kanaler och klicka på Ny kanal.
- Allt du behöver är ett namn på kanalen och namn på fälten som du ska logga enligt nedan.
- Alternativet Visa kanalplats behöver din stads latitud och longitud som ingång och kan visa platsen inuti kanalen på en karta. (Exempelvärden som används här är för Natick, MA)
- Tryck sedan på Spara kanal för att skapa din kanal.
4a. Varning om uppgifterna kategoriseras som”fula”
För att slutföra vårt inomhusklimatövervakningssystem måste vi se hur vi tar emot varningar baserade på molndata. Detta är kritiskt eftersom du utan det inte kommer att kunna vidta nödvändiga åtgärder för att ändra komfortnivån i rummet. I det här avsnittet kommer vi att se hur du får ett meddelande på din telefon när molndata indikerar att rummet är för fuktigt eller torrt. Vi kommer att uppnå detta genom att använda två tjänster: IFTTT Webhooks och ThingSpeak TimeControl. IFTTT (står för If this, then that) är en onlinetjänst som kan hantera händelser och utlösa åtgärder baserat på händelserna.
Steg för att konfigurera IFTTT Webhooks
Obs! Prova dessa på en dator för bästa resultat.
1) Skapa ett konto på ifttt.com (om du inte har ett) och skapa en ny applet från sidan Mina appar.
2) Klicka på den blå "den här" knappen för att välja din utlösartjänst.
3) Sök efter och välj Webhooks som tjänsten.
4) Välj Ta emot en webbförfrågan och ange ett namn för händelsen.
5) Välj skapa trigger.
6) Välj "det" på nästa sida och sök efter aviseringar.
7) Välj skicka ett meddelande från IFTTT -appen.
8) Ange händelsenamnet som du skapade i steg 2 i IFTTT och välj skapa åtgärd.
9) Fortsätt tills du når det sista steget, granska och tryck på Slutför.
10) Gå till https://ifttt.com/maker_webhooks och klicka på knappen Inställningar högst upp på sidan.
11) Gå till webbadressen i avsnittet Kontoinformation.
12) Ange ditt evenemangsnamn här och klicka på "Testa det".
13) Kopiera webbadressen på sista raden för framtida bruk (med nyckeln).
Steg för att ställa in ThingSpeak TimeControl
1) Välj Appar> MATLAB -analys
2) Klicka på Nytt på nästa sida och välj Trigger Email från IFTTT och klicka på Skapa.
De viktiga bitarna här i mallkoden är:
Kanal -ID - Ange din ThingSpeak -kanal som har "inomhusfuktighetsvärde" -information.
IFTTTURL - Ange webbadressen som kopierats från föregående avsnitt Steg 13.
readAPIKey - Enter -tangenten för ThingSpeak Channel. Action -sektionen - den som verkar på det sista värdet. Ändra det till följande för att utlösa varningar.
3) Klicka på Apps> TimeControl på ThingSpeak -webbplatsen.
4) Välj Återkommande och välj en tidsfrekvens.
5) Klicka på Spara tidskontroll.
Nu körs MATLAB Analysis automatiskt varje halvtimme och skickar en utlösare till IFTTT Webhooks -tjänsten om värdet är större än eller lika med 3. Då kommer IFTTT -telefonappen att varna användaren med ett meddelande som visas i början av detta avsnitt.
Steg 6: Slutsats
Med det har vi sett alla viktiga aspekter av hur man bygger ett eget klimatövervakningssystem. I det här projektet såg vi hur Simulink kan användas för att -
- programmera en Raspberry Pi för att få in data från Sense HAT. Markera - Visualisera data i Simulink eftersom koden fortfarande körs på Raspberry Pi.
- bygga den visuella visningen av inomhusklimatövervakningssystem. Markera - Ändra hur din kod beter sig på hårdvaran från Simulink.
- utforma inomhusklimatövervakningssystemets algoritm.
- logga data från Raspberry Pi på molnet och skapa varningar från de loggade data.
Vilka är några av de förändringar du skulle göra med detta inomhusklimatövervakningssystem? Vänligen dela dina förslag via kommentarer.
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Installera Raspbian i Raspberry Pi 3 B Utan HDMI - Komma igång med Raspberry Pi 3B - Konfigurera din Raspberry Pi 3: 6 -steg
Installera Raspbian i Raspberry Pi 3 B Utan HDMI | Komma igång med Raspberry Pi 3B | Konfigurera din Raspberry Pi 3: Som några av er vet är Raspberry Pi-datorer ganska fantastiska och du kan få hela datorn bara på ett enda litet kort. Raspberry Pi 3 Model B har en fyrkärnig 64-bitars ARM Cortex A53 klockade på 1,2 GHz. Detta ger Pi 3 ungefär 50