Innholdsfortegnelse:

Smart Home -termostat: 4 trinn
Smart Home -termostat: 4 trinn

Video: Smart Home -termostat: 4 trinn

Video: Smart Home -termostat: 4 trinn
Video: 💡 Brilliant Smart Switch Review: Elevate Your Smart Home Automation! 🔌 2024, Juli
Anonim
Smart hjem termostat
Smart hjem termostat

Vår Smart Home Thermostat er et program som automatisk kan spare husholdningenes penger på strømregninger basert på en persons preferanser.

Trinn 1: Oversikt

Smart Home -termostaten bruker en temperatursensor for å få temperaturen i hjemmet. Denne temperaturavlesningen settes inn i programmet hvor den avgjør om klimaanlegget trenger å varme eller avkjøle huset basert på ønsket huseiers temperatur.

Det er to moduser for termostaten: manuell og automatisk. Den manuelle modusen som vil justere hjemmets temperatur til ønsket temperatur settes av brukeren. Og den automatiske modusen til termostaten vil automatisk endre temperaturen i hjemmet til temperaturer som er forhåndsinnstilt av brukeren. Det vil være to temperaturinnstillinger for den automatiske modusen: bortetemperatur og nåværende temperatur. Bortetemperaturen brukes til å spare energi ved å endre termostaten til en forhåndsinnstilt energisparende temperatur når brukeren ikke er hjemme. Den nåværende temperaturen skal brukes når brukeren er hjemme og ønsker en behagelig temperatur. Når den er i termostatens automatiske modus, søker bevegelsessensorer aktivt etter bevegelse for å avgjøre om noen er hjemme eller ikke. Basert på avlesningen vil hjemmetemperaturen enten settes til bortetemperatur eller nåværende temperatur.

Trinn 2: Deler og materialer

(15) Jumper Wires

(4) 220 Ohm motstander

(1) 10K Ohm motstand

(1) Temp Sensor

(1) Foto motstand

(1) DAGU Mini DC girkasse

(1) Diode

(1) Transistor

(1) Fotoresistor

(1) Brødbrett

(1) Arduino MKR

Trinn 3: Krets

Krets
Krets
Krets
Krets
Krets
Krets
Krets
Krets

Figur 1 = Stort venstre bilde

Figur 2 = Øverst til høyre

Figur 3 = Midt høyre

Figur 4 = nede til høyre

Figur 1

Ved å bruke diagrammet ovenfor, koblet vi hver av våre tre lysdioder. Vi fordelte hver LED siden vi jobbet med et stort brødbrett. For mindre brødbrett kan det være nødvendig å sette lysdiodene nærmere hverandre. Det er også unødvendig å drive brødbrettet siden LED -lampene trekker så lite strøm. Vi brukte ikke 5V -tilkoblingen på brødbrettet for lysdiodene. Hver tilkobling fra lysdiodene til vår Arduino ble gjort som den grønne ledningen er over. Våre røde, blå og grønne lysdioder er koblet til henholdsvis Digital Pin 8, 9 og 10, angitt med en rød, blå og grønn ledning i bildet vårt.

Figur 2

Diagrammet ovenfor ble brukt til å koble fotoresistoren. Vi gjorde noen få korreksjoner av oss selv; men konseptene er fortsatt de samme. Fotoresistoren må være koblet til en analog pin som vi har i pin A1. Sørg for å bruke en 10K ohm motstand for motstanden nærmest fotoresistoren.

Figur 3

Dette er diagrammet som brukes til å koble temperatursensoren. Pass på at du ikke tar feil av transistoren som brukes her med temperatursensoren. De ser nesten like ut. Temperatursensoren vil sannsynligvis ha TMP eller et annet skript skrevet på den flate siden av sensoren. Ledningene her er veldig enkle vår temperatursensor er koblet til analog pin A0 med en hvit ledning.

Figur 4

Bildet ovenfor ble brukt til å koble DAGU Mini DC -girkassen. Den grønne ledningen festet til girkassen er faktisk den røde ledningen som er koblet til den i bildet vårt. Girkassen er koblet til digital pin 11 med en oransje ledning i vår modell. Pass på at du ikke tar feil av transistoren som brukes her med temperatursensoren. De ser nesten like ut. Temperatursensoren vil sannsynligvis ha TMP eller et annet skript skrevet på den flate siden av sensoren. Du må bruke transistoren her og ikke temperatursensoren.

Trinn 4: Arduino -kode

Her forklares de viktigste delene av koden. Koden fungerer ikke bare med det som er gitt her. For å få hele arbeidskoden er det en lenke nederst på siden.

Når du oppretter den programmerbare termostatkoden, er en av de første tingene du gjør å sette opp sensorene og lage en for loop som hele tiden vil få temperaturavlesninger fra temperatursensoren.

Sette opp temperatursensor og LED:

tempPin = 'A0';%definerer anonym funksjon som konverterer spenningen til temperatur tempCfromVolts = @(volt) (volt-0,5)*100; samplingDuration = 5; %sekunder. Hvor lenge vil vi prøve for samplingInterval = 1; %Hvor mange sekunder mellom temperaturavlesninger %setter opp vektoren for prøvetakingstider samplingTimes = 0: samplingInterval: samplingDuration; %beregne antall prøver basert på varighet og intervall numSamples = length (samplingTimes); %forhåndsfordel temp -variabler og variabler for antall avlesninger den vil lagre tempC = nuller (numSamples, 1); tempF = tempC; %Vi bruker en for loop denne gangen for å ta et forhåndsbestemt antall %temperaturavlesninger

For -løkken:

for index = 1: numSamples %les spenningen ved tempPin og lagre i variabel volt volt = readVoltage (a, tempPin); tempC (indeks) = -1*tempCfromVolts (volt+0,3); tempF (indeks) = tempC (indeks)*(9/5) +32; %Skjermformatert utgang som kommuniserer gjeldende temperaturavlesning fprintf ('Temperatur på %d sekunder er %5.2f C eller %5.2f F. / n', … samplingTimes (index), tempC (index), tempF (index)); %merk at denne skjermutgangen bare blir synlig på en gang etter at koden er ferdig med å kjøre, med mindre du kopierer/limer inn koden til en vanlig skriptmfil. pause (samplingInterval) %forsinkelse til neste prøveslutt

Deretter lager vi vår brukermeny for brukeren å bestemme om termostaten skal settes i manuell eller automatisk modus. Vi oppretter også en feilkode hvis brukeren ikke velger ett av de to alternativene.

Menyen Manuell modus krever at brukeren angir et tall for termostattemperaturen, så vil den enten varme opp hjemmet, avkjøle hjemmet eller være inaktiv basert på avlesninger. For å sette opp denne delen av koden brukte du temperaturavlesninger fra temperatursensoren og opprettet kode som kjøler hjemmet når temperaturavlesningen er høyere enn den innstilte temperaturen, og varmer opp hjemmet når temperaturavlesningen er lavere enn den innstilte temperaturen.

Når du har temperaturavlesningene, kan du opprette koden som vil be termostaten om å kjøle hjemmet når temperaturavlesningen er høyere enn den innstilte temperaturen, og varme opp hjemmet når temperaturavlesningen er lavere enn den innstilte temperaturen. For prototypen lyser det blå lyset når termostaten skal avkjøles og det røde lyset tennes når termostaten skal varme.

Menyoppsett:

valg = {'Automatisk', 'Manuell'}; imode = meny ('Modus', valg) hvis imode> 0 t = msgbox (['Du valgte' valg {imode}]); ellers h = warndlg ('Du lukket menyen uten å velge') avslutter waitfor (h);

Den manuelle modusen krever at brukeren angir en temperatur for termostaten, deretter basert på avlesningene fra temperatursensoren, begynner den enten å avkjøle huset til oppvarming av huset. Hvis temperatursensorens avlesning er høyere enn den innstilte temperaturen, begynner den å kjøle hjemmet. Hvis temperatursensorens avlesning er lavere enn den innstilte temperaturen, vil den varme hjemmet.

Den manuelle modusen starter:

hvis imode == 2 dlg_prompts = {'Hvilken temperatur vil du foretrekke?'}; dlg_title = 'Temperatur'; dlg_defaults = {'68'}; opts. Resize = 'på'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Du kansellerte inputdlg -kommandoen'); else temp_manual = str2double (dlg_ans {1}) %[Add Temperature Regulation Setup slide below] ende

Inne i if -setningen for den manuelle modusen må du skrive menygrensesnittet for at brukeren kan velge ønsket hjemmetemperatur, og deretter implementere en while -setning som vil regulere hjemmetemperaturen.

Oppsett av temperaturregulering:

mens temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); slutt mens temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); slutt

Den automatiske modusen krever flere innganger enn den manuelle modusen. Etter å ha angitt automatisk modus, vil brukeren angi en normal og en borte temperatur for termostaten. Etter å ha valgt disse, basert på hvilken modus termostaten er i, går den tilbake til temperaturreguleringsmodus

Sett opp automatisk modus:

elseif imode == 1 dlg_prompts = {'Normal', 'Bort'}; dlg_title = 'Temperaturinnstillinger'; dlg_defaults = {'68', '64'}; opts. Resize = 'på'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Du kansellerte inputdlg -kommandoen'); ellers temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) slutt waitfor (h); %[Legg til bevegelsesdetektor trinn nedenfor]

Vi må også sette opp bevegelsessensoren for innstillingene for automatisk modus. Når bevegelsesdetektoren fanger opp bevegelse, vil den beholde temperaturen på den nåværende temperaturinnstillingen, ellers vil den stille til innstillingen for bortetemperatur.

Run_Motion_Detector (a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin (a, 'D6', 1) uansett pin rødt lys er i motor for vifte writeDigitalPin (a, 'D9', 1); ende ende mens lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %endres til hvilken pin det normale lyset er i mens temp tempF writeDigitalPin (a, 'D6', 1) uansett pin rødt lys er i motor for vifte writeDigitalPin (a, 'D9', 1); ende ende

Hele koden finner du her.

Anbefalt: