Indholdsfortegnelse:

Smart Home -termostat: 4 trin
Smart Home -termostat: 4 trin

Video: Smart Home -termostat: 4 trin

Video: Smart Home -termostat: 4 trin
Video: Window Trim Install Made EASY 2024, November
Anonim
Smart Home termostat
Smart Home termostat

Vores Smart Home Thermostat er et program, der automatisk kan spare en husstands penge på elregninger baseret på en persons præferencer.

Trin 1: Oversigt

Smart Home -termostaten bruger en temperatursensor til at få temperaturen i hjemmet. Denne temperaturmåling sættes ind i programmet, hvor det afgør, om klimaanlægget skal opvarme eller afkøle huset baseret på den ønskede husejers temperatur.

Der er to tilstande til termostaten: manuel og automatisk. Den manuelle tilstand, der justerer hjemmets temperatur til den ønskede temperatur, indstilles af brugeren. Og termostatens automatiske tilstand ændrer automatisk temperaturen i hjemmet til temperaturer, der er forudindstillet af brugeren. Der vil være to temperaturindstillinger for den automatiske tilstand: Udetemperatur og nuværende temperatur. Udetemperaturen bruges til at spare energi ved at ændre termostaten til en forudindstillet energibesparende temperatur, når brugeren ikke er hjemme. Den nuværende temperatur vil blive brugt, når brugeren er hjemme og ønsker en behagelig temperatur. I termostatens automatiske tilstand leder bevægelsessensorer aktivt efter bevægelse for at afgøre, om nogen er hjemme eller ej. Baseret på deres aflæsning vil hjemmetemperaturen enten blive indstillet til ude -temperatur eller nuværende temperatur.

Trin 2: Dele og materialer

(15) Jumper Wires

(4) 220 Ohm modstande

(1) 10K Ohm modstand

(1) Temp Sensor

(1) Fotomodstand

(1) DAGU Mini DC gearkasse

(1) Diode

(1) Transistor

(1) Fotoresistor

(1) Brødbræt

(1) Arduino MKR

Trin 3: Kredsløb

Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb

Figur 1 = Stort venstre billede

Figur 2 = Øverst til højre

Figur 3 = Mellem højre

Figur 4 = nederst til højre

figur 1

Ved hjælp af diagrammet ovenfor tilsluttede vi hver af vores tre lysdioder. Vi fordelte hver LED, da vi arbejdede med et stort brødbræt. Ved mindre brødbrætter kan det være nødvendigt at sætte lysdioderne tættere sammen. Det er også unødvendigt at tænde brødbrættet, da lysdioderne trækker så lidt strøm. Vi brugte ikke 5V -forbindelsen på brødbrættet til lysdioderne. Hver forbindelse fra lysdioderne til vores Arduino blev foretaget som den grønne ledning er ovenfor. Vores røde, blå og grønne lysdioder er forbundet til henholdsvis Digital Pin 8, 9 og 10, der er markeret med en rød, blå og grøn ledning i vores billede.

Figur 2

Diagrammet ovenfor blev brugt til at tilslutte fotoresistoren. Vi lavede nogle få af vores egne rettelser; men begreberne er stadig de samme. Fotoresistoren skal forbindes til en analog pin, som vi har i pin A1. Sørg for at bruge en 10K ohm modstand til modstanden tættest på fotoresistoren.

Figur 3

Dette er diagrammet, der bruges til at koble temperatursensoren. Sørg for ikke at tage fejl af transistoren, der bruges her med temperatursensoren. De ser næsten identiske ud. Temperatursensoren vil sandsynligvis have TMP eller et andet script skrevet på sensorens flade side. Ledningerne her er meget enkle, vores temperatursensor er tilsluttet analog pin A0 med en hvid ledning.

Figur 4

Billedet ovenfor blev brugt til at tilslutte DAGU Mini DC gearkassen. Den grønne ledning, der er knyttet til gearkassen, er faktisk den røde ledning, der er forbundet til den i vores billede. Gearkassen er forbundet til digital pin 11 med en orange ledning i vores model. Sørg for ikke at tage fejl af transistoren, der bruges her med temperatursensoren. De ser næsten identiske ud. Temperatursensoren vil sandsynligvis have TMP eller et andet script skrevet på sensorens flade side. Du skal bruge transistoren her og ikke temperatursensoren.

Trin 4: Arduino -kode

Her forklares de vigtigste dele af koden. Koden fungerer ikke kun med det, der er givet her. For at få den fulde arbejdskode er der et link nederst på siden.

Når du opretter den programmerbare termostats kode, er en af de første ting, du gør, at opsætte sensorerne og oprette en for loop, der konstant vil få temperaturmålinger fra temperatursensoren.

Opsætning af temperatursensor og LED:

tempPin = 'A0';%definerer anonym funktion, der konverterer spændingen til temperatur tempCfromVolts = @(volt) (volt-0,5)*100; samplingDuration = 5; %sekunder. Hvor lang tid vil vi prøve for samplingInterval = 1; %Hvor mange sekunder mellem temperaturmålinger %opsætter vektor for prøveudtagningstider samplingTimes = 0: samplingInterval: samplingDuration; %beregner antallet af prøver baseret på varighed og interval numSamples = length (samplingTimes); %forudfordel temp variabler og variabel for antallet af aflæsninger det vil gemme tempC = nuller (numSamples, 1); tempF = tempC; %Vi vil bruge en for loop denne gang til at tage et forudbestemt antal %temperaturmålinger

For -løkken:

for index = 1: numSamples %aflæser spændingen ved tempPin og gemmer i variabel volt volt = readVoltage (a, tempPin); tempC (indeks) = -1*tempCfromVolts (volt+0,3); tempF (indeks) = tempC (indeks)*(9/5) +32; %Displayformateret output, der kommunikerer den aktuelle temperaturaflæsning fprintf ('Temperatur ved %d sekunder er %5.2f C eller %5.2f F. / n', … samplingTimes (index), tempC (index), tempF (index)); %bemærk, at denne visningsoutput kun bliver synlig på én gang, efter at koden er %færdig med at udføre, medmindre du kopierer/indsætter koden i en almindelig scriptmfile. pause (samplingInterval) %forsinkelse indtil næste prøve slut

Dernæst opretter vi vores brugermenu, så brugeren kan beslutte, om termostaten skal sættes i manuel eller automatisk tilstand. Vi opretter også en fejlkode, hvis brugeren ikke vælger en af de to muligheder.

Menuen Manuel tilstand kræver, at brugeren indstiller et tal for termostattemperaturen, så vil den enten opvarme hjemmet, afkøle hjemmet eller være inaktiv baseret på aflæsninger. For at konfigurere denne del af koden brugte du temperaturmålinger fra temperatursensoren og opretter kode, der vil afkøle hjemmet, når temperaturaflæsning er højere end den indstillede temperatur, og opvarme boligen, når temperaturaflæsning er lavere end den indstillede temperatur.

Når du har fået temperaturmålingerne, kan du oprette den kode, der vil fortælle termostaten at afkøle hjemmet, når temperaturaflæsning er højere end den indstillede temperatur, og varme hjemmet, når temperaturmåling er lavere end den indstillede temperatur. For prototypen lyser det blå lys, når termostaten skal afkøle, og det røde lys tændes, når termostaten skal varme.

Menuopsætning:

valg = {'Automatisk', 'Manuel'}; imode = menu ('Tilstand', valg) hvis imode> 0 h = msgbox (['Du har valgt' valg {imode}]); ellers h = warndlg ('Du lukkede menuen uden at vælge') afslut waitfor (h);

Den manuelle tilstand kræver, at brugeren indtaster en temperatur for termostaten, derefter baseret på målingerne fra temperatursensoren, begynder den enten at afkøle huset til opvarmning af huset. Hvis temperaturfølerens aflæsning er højere end den indstillede temperatur, begynder den at afkøle hjemmet. Hvis temperatursensorens aflæsning er lavere end den indstillede temperatur, vil den opvarme boligen.

Den manuelle tilstand starter:

hvis imode == 2 dlg_prompts = {'Hvilken temperatur foretrækker du?'}; dlg_title = 'Temperatur'; dlg_defaults = {'68'}; opts. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, vælger); hvis isempty (dlg_ans) h = warndlg ('Du annullerede inputdlg -kommandoen'); else temp_manual = str2double (dlg_ans {1}) %[Tilføj temperaturreguleringsopsætningsbillede nedenfor] slut

Inde i if -sætningen for den manuelle tilstand skal du skrive menuens grænseflade, så brugeren kan vælge den ønskede hjemmetemperatur, og derefter implementere en while -erklæring, der regulerer hjemmetemperaturen.

Opsætning af temperaturregulering:

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

Den automatiske tilstand kræver flere input end den manuelle tilstand. Efter at have åbnet den automatiske tilstand, vil brugeren indstille en normal og en væk -temperatur for deres termostat. Efter at have valgt disse, baseret på hvilken tilstand termostaten er i, vil den gå tilbage til temperaturreguleringstilstanden

Indstil den automatiske tilstand:

elseif imode == 1 dlg_prompts = {'Normal', 'væk'}; dlg_title = 'Temperaturindstillinger'; dlg_defaults = {'68', '64'}; opts. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, vælger); hvis isempty (dlg_ans) h = warndlg ('Du annullerede inputdlg -kommandoen'); ellers temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) afslut waitfor (h); %[Tilføj bevægelsesdetektor trin herunder]

Vi skal også konfigurere bevægelsessensoren til indstillingerne for automatisk tilstand. Når bevægelsesdetektoren opfanger bevægelse, vil den beholde temperaturen på den aktuelle temperaturindstilling, ellers vil den indstille til indstillingen for fjerntemperatur.

Run_Motion_Detector (a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin (a, 'D6', 1) uanset pin rødt lys er også i motor til fan writeDigitalPin (a, 'D9', 1); slut ende, mens lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %ændres til den pin, det normale lys er i, mens temp tempF writeDigitalPin (a, 'D6', 1) uanset hvilken pin rødt lys også er i motor til blæser writeDigitalPin (a, 'D9', 1); ende ende

Den fulde kode kan findes her.

Anbefalede: