INHOUDSOPGAWE:

Smart Home -termostaat: 4 stappe
Smart Home -termostaat: 4 stappe

Video: Smart Home -termostaat: 4 stappe

Video: Smart Home -termostaat: 4 stappe
Video: 3 мегапикселя камера видеонаблюдения. Стоит ли покупать? На что влияет разрешение? 2024, Julie
Anonim
Smart Home termostaat
Smart Home termostaat

Ons Smart Home Thermostat is 'n program wat 'n huishouding outomaties geld kan bespaar op rekeninge op grond van 'n persoon se voorkeure.

Stap 1: Oorsig

Die Smart Home -termostaat gebruik 'n temperatuursensor om die temperatuur van die huis te bepaal. Hierdie temperatuurmeting word in die program geplaas, waar dit sal besluit of die lugversorgingstelsel die huis moet verhit of afkoel op grond van die temperatuur van die gewenste huiseienaar.

Daar is twee modusse vir die termostaat: handmatig en outomaties. Die handmatige modus wat die temperatuur van die huis aanpas by die gewenste temperatuur, word deur die gebruiker bepaal. En die outomatiese modus van die termostaat verander die temperatuur van die huis outomaties na die temperatuur wat die gebruiker vooraf bepaal. Daar is twee temperatuurinstellings vir die outomatiese modus: wegtemperatuur en huidige temperatuur. Die wegtemperatuur word gebruik om energie te bespaar deur die termostaat na 'n vooraf ingestelde energiebesparende temperatuur te verander wanneer die gebruiker nie tuis is nie. Die huidige temperatuur word gebruik as die gebruiker tuis is en 'n gemaklike temperatuur wil hê. In die outomatiese modus van die termostaat, soek bewegingsensors aktief na beweging om te bepaal of iemand tuis is of nie. Op grond van hul lesing, sal die huistemperatuur óf op die wegtemperatuur óf op die huidige temperatuur ingestel word.

Stap 2: Onderdele en materiaal

(15) Jumper Wires

(4) 220 Ohm weerstande

(1) 10K Ohm Weerstand

(1) Temp sensor

(1) Fotoweerstand

(1) DAGU Mini DC -ratkas

(1) Diode

(1) Transistor

(1) Fotoresistor

(1) Broodbord

(1) Arduino MKR

Stap 3: Skakel

Kring
Kring
Kring
Kring
Kring
Kring
Kring
Kring

Figuur 1 = Groot linker prentjie

Figuur 2 = Regs bo

Figuur 3 = Middelregs

Figuur 4 = Regs onder

Figuur 1

Met behulp van die diagram hierbo, het ons elkeen van ons drie LED's bedraad. Ons het elke LED gespasieer aangesien ons met 'n groot broodbord gewerk het. Vir kleiner broodborde kan dit nodig wees om die LED's nader aan mekaar te plaas. Dit is ook onnodig om die broodbord aan te dryf, aangesien die LED's so min krag trek. Ons het nie die 5V -aansluiting op die broodbord vir die LED's gebruik nie. Elke verbinding van die LED's tot ons Arduino is gemaak asof die groen draad hierbo is. Ons rooi, blou en groen LED's is gekoppel aan die digitale pen 8, 9 en 10 onderskeidelik, aangedui met 'n rooi, blou en groen draad in ons prentjie.

Figuur 2

Die diagram hierbo is gebruik om die fotoresistor te bedraad. Ons het 'n paar regstellings gemaak; die konsepte is egter steeds dieselfde. Die fotoresistor moet gekoppel wees aan die analoog pen wat ons in pen A1 het. Maak seker dat u 'n weerstand van 10K ohm gebruik vir die weerstand wat die naaste aan die fotoresistor is.

Figuur 3

Dit is die diagram wat gebruik word om die temperatuursensor te bedraad. Moenie die transistor wat hier met die temperatuursensor gebruik word, misgis nie. Hulle lyk amper identies. Die temperatuursensor sal waarskynlik TMP of 'n ander skrif op die plat kant van die sensor hê. Die bedrading hier is baie eenvoudig; ons temperatuursensor is met 'n wit draad in 'n analoog pen A0 gekoppel.

Figuur 4

Die prent hierbo is gebruik om die DAGU Mini DC -ratkas aan te trek. Die groen draad wat aan die ratkas geheg is, is eintlik die rooi draad wat in ons prentjie daaraan gekoppel is. Die ratkas is gekoppel aan die digitale pen 11 met 'n oranje draad in ons model. Moenie die transistor wat hier met die temperatuursensor gebruik word, misgis nie. Hulle lyk amper identies. Die temperatuursensor sal waarskynlik TMP of 'n ander skrif op die plat kant van die sensor hê. U moet die transistor hier gebruik en nie die temperatuursensor nie.

Stap 4: Arduino -kode

Hier word die belangrikste dele van die kode verduidelik. Die kode werk nie net met dit wat hier gegee word nie. Om die volledige werkskode te kry, is daar 'n skakel onderaan die bladsy.

As u die kode van die programmeerbare termostaat skep, is die eerste ding wat u moet doen om die sensors op te stel en 'n for -lus te skep wat voortdurend temperatuurlesings van die temperatuursensor kry.

Die opstel van temperatuursensor en LED:

tempPin = 'A0';%definieer anonieme funksie wat die spanning omskakel na temperatuur tempCfromVolts = @(volt) (volt-0,5)*100; monsterneming = 5; %sekondes. Hoe lank wil ons monster vir samplingInterval = 1; %Hoeveel sekondes tussen temperatuurlesings %stel vektor op van monstertye samplingTimes = 0: samplingInterval: samplingDuration; %bereken die aantal monsters gebaseer op die duur en interval numSamples = lengte (samplingTimes); %plaas tydelike veranderlikes en veranderlike voor die aantal lesings wat dit sal stoor tempC = nulle (numSamples, 1); tempF = tempC; %Ons gebruik hierdie keer 'n for-lus om 'n voorafbepaalde aantal %temperatuurmetings te neem

Die vir lus:

vir indeks = 1: numSamples %lees die spanning by tempPin en stoor in veranderlike volt volt = readVoltage (a, tempPin); tempC (indeks) = -1*tempCfromVolts (volt+0,3); tempF (indeks) = tempC (indeks)*(9/5) +32; %Vertoon geformateerde uitset wat die huidige temperatuur lees fprintf ('Temperatuur by %d sekondes is %5.2f C of %5.2f F. / n', … samplingTimes (indeks), tempC (indeks), tempF (indeks)); %let op: hierdie vertoonuitset sal eers op een slag sigbaar word nadat die kode uitgevoer is, tensy u die kode na 'n gewone script mfile kopieer/plak. pouse (samplingInterval) %vertraging tot die einde van die monster

Vervolgens maak ons ons gebruikersmenu sodat die gebruiker kan besluit of die termostaat in die handmatige of outomatiese modus geplaas moet word. Ons skep ook 'n foutkode as die gebruiker nie een van die twee opsies kies nie.

Die spyskaart Handmatige modus vereis dat die gebruiker 'n nommer vir die temperatuur van die termostaat stel, en dan verhit dit die huis, laat die huis afkoel, of word dit ledig gebaseer op lesings. Om hierdie deel van die kode op te stel, het u temperatuurmetings van die temperatuursensor gebruik en kode gemaak wat die huis sal afkoel wanneer die temperatuurlesing hoër is as die ingestelde temperatuur, en die huis verhit wanneer die temperatuurlesing laer is as die ingestelde temperatuur.

Sodra u die temperatuurlesings gekry het, kan u die kode skep wat die termostaat sal vertel om die huis af te koel as die temperatuurwaarde hoër is as die ingestelde temperatuur, en die huis verhit as die temperatuurlesing laer is as die ingestelde temperatuur. Vir die prototipe brand die blou lig wanneer die termostaat moet afkoel en die rooi lig wanneer die termostaat moet verhit.

Kieslysopstelling:

keuses = {'Outomaties', 'Handmatig'}; imode = menu ('Modus', keuses) as imode> 0 h = msgbox (['U het gekies' keuses {imode}]); anders h = warndlg ('U het die spyskaart gesluit sonder om 'n keuse te maak') eindig wag vir (h);

Die handmatige modus vereis dat die gebruiker 'n temperatuur vir die termostaat invoer, en dan begin dit met die afkoeling van die huis om die huis te verhit, gebaseer op die metings van die temperatuursensor. As die temperatuur sensor se lesing hoër is as die ingestelde temperatuur, begin dit die huis afkoel. As die temperatuur sensor se lesing laer is as die ingestelde temperatuur, sal dit die huis verhit.

Die handmatige modus begin:

as imode == 2 dlg_prompts = {'Watter temperatuur sou u verkies?'}; dlg_title = 'Temperatuur'; dlg_defaults = {'68'}; opts. Resize = 'aan'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); as isempty (dlg_ans) h = warndlg ('U het die inputdlg -opdrag gekanselleer'); anders temp_manual = str2double (dlg_ans {1}) %[Voeg skyfie vir die opstel van temperatuurregulering hieronder by] einde

Binne die if -verklaring vir die handmatige modus, moet u die menu -koppelvlak skryf sodat die gebruiker die gewenste huistemperatuur kan kies, en dan 'n tydsverklaring implementeer wat die huistemperatuur sal reguleer.

Opstelling van temperatuurregulering:

terwyl temp_manueel <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); eindig terwyl temp_manueel> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); einde

Die outomatiese modus vereis meer insette as die handmatige modus. Nadat die outomatiese modus ingeskakel is, stel die gebruiker 'n normale en 'n weg temperatuur in vir sy termostaat.

Stel die outomatiese modus op:

elseif imode == 1 dlg_prompts = {'Normaal', 'Weg'}; dlg_title = 'Temperatuurinstellings'; dlg_defaults = {'68', '64'}; opts. Resize = 'aan'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); as isempty (dlg_ans) h = warndlg ('U het die inputdlg -opdrag gekanselleer'); anders temp_normaal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) eindig wag vir (h); %[Voeg bewegingsdetektor by Stap hieronder]

Ons moet ook die bewegingsensor instel vir die outomatiese modusinstellings. As die bewegingsdetektor beweging opneem, sal dit die temperatuur op die huidige temperatuurinstelling behou, anders sal dit na die wegtemperatuurinstelling wees.

Run_Motion_Detector (a, inf) terwyl lightStr == 0 temp = temp_away terwyl temp tempF writeDigitalPin (a, 'D6', 1) watter pin rooi lig ook in motor is vir fan writeDigitalPin (a, 'D9', 1); einde einde terwyl lightStr == 1 temp = temp_normale skryfDigitalPin (a, 'D6', 1) %verander na watter pen die normale lig is terwyl temp tempF skryfDigitalPin (a, 'D6', 1) in watter penrooi lig ook al is motor vir waaier writeDigitalPin (a, 'D9', 1); einde einde

Die volledige kode kan hier gevind word.

Aanbeveel: