Kazalo:

Termostat pametnega doma: 4 koraki
Termostat pametnega doma: 4 koraki

Video: Termostat pametnega doma: 4 koraki

Video: Termostat pametnega doma: 4 koraki
Video: Zigbee датчик освещенности, температуры и влажности с экраном на электронных чернилах Moes 2024, November
Anonim
Termostat pametnega doma
Termostat pametnega doma

Naš termostat za pametni dom je program, ki lahko samodejno prihrani denar gospodinjstva na komunalnih računih glede na želje osebe.

1. korak: Pregled

Termostat pametnega doma uporablja temperaturni senzor za merjenje temperature doma. Ta odčitek temperature se vnese v program, kjer se bo odločil, ali mora klimatski sistem ogrevati ali hladiti hišo glede na želeno temperaturo lastnika stanovanja.

Za termostat obstajata dva načina: ročni in samodejni. Ročni način, ki bo prilagodil temperaturo doma na želeno temperaturo, ki jo nastavi uporabnik. Samodejni način termostata bo samodejno spremenil temperaturo doma na temperature, ki jih je nastavil uporabnik. Za samodejni način bosta na voljo dve nastavitvi temperature: oddaljena temperatura in trenutna temperatura. Odhodna temperatura se uporablja za varčevanje z energijo s spreminjanjem termostata na vnaprej nastavljeno temperaturo za varčevanje z energijo, kadar uporabnika ni doma. Sedanja temperatura se bo uporabljala, ko je uporabnik doma in želi udobno temperaturo. V samodejnem načinu termostata senzorji gibanja aktivno iščejo gibanje, da ugotovijo, ali je kdo doma ali ne. Na podlagi njihovega odčitavanja bo domača temperatura nastavljena na temperaturo v bližini ali na trenutno temperaturo.

2. korak: Deli in materiali

(15) Mostične žice

(4) 220 ohmski upori

(1) 10K ohmski upor

(1) Senzor temp

(1) Fotografski upor

(1) Mini DC menjalnik DAGU

(1) Dioda

(1) Tranzistor

(1) Fotografski upor

(1) Ogledna plošča

(1) Arduino MKR

3. korak: Vezje

Vezje
Vezje
Vezje
Vezje
Vezje
Vezje
Vezje
Vezje

Slika 1 = Velika leva slika

Slika 2 = Zgoraj desno

Slika 3 = Srednji desni

Slika 4 = Spodaj desno

Slika 1

Z zgornjim diagramom smo ožičili vsako od naših treh LED. Vsako LED smo razporedili, saj smo delali z veliko desko za kruh. Pri manjših ploščah za kruh bo morda potrebno LED -diode približati skupaj. Prav tako ni potrebno napajati plošče, ker LED porabi tako malo energije. Za svetleče diode nismo uporabili 5V povezave na plošči. Vsaka povezava LED z našim Arduinom je bila narejena tako, kot je zelena žica zgoraj. Naše rdeče, modre in zelene LED diode so priključene na digitalni pin 8, 9 in 10, označen z rdečo, modro in zeleno žico na naši sliki.

Slika 2

Zgornji diagram je bil uporabljen za ožičenje fotorezistorja. Naredili smo nekaj lastnih popravkov; vendar so koncepti še vedno isti. Fotografski upor mora biti priključen na analogni pin, ki ga imamo v zatiču A1. Za upor, ki je najbližji fotografskemu uporu, uporabite 10K ohmski upor.

Slika 3

To je diagram, ki se uporablja za priključitev temperaturnega senzorja. Pazite, da tranzistorja, ki ga uporabljate, ne zamenjate s temperaturnim senzorjem. Izgledajo skoraj identično. Temperaturni senzor bo verjetno imel na ravni strani senzorja napisan TMP ali kakšen drug skript. Tu je ožičenje zelo preprosto, naš temperaturni senzor je z belo žico priključen na analogni zatič A0.

Slika 4

Zgornja slika je bila uporabljena za ožičenje DAGU Mini DC menjalnika. Zelena žica, pritrjena na menjalnik, je pravzaprav rdeča žica, povezana z njo na naši sliki. Menjalnik je v našem modelu z oranžno žico povezan z digitalnim zatičem 11. Pazite, da tranzistorja, ki ga uporabljate, ne zamenjate s temperaturnim senzorjem. Izgledajo skoraj identično. Temperaturni senzor bo verjetno imel na ravni strani senzorja napisan TMP ali kakšen drug skript. Tukaj morate uporabiti tranzistor in ne temperaturnega senzorja.

4. korak: Arduino koda

Tu so razloženi najpomembnejši deli kode. Koda ne bo delovala samo s tem, kar je podano tukaj. Če želite dobiti celotno delovno kodo, je na dnu strani povezava.

Ko ustvarite kodo programabilnega termostata, eno od prvih stvari, ki jih naredite, je, da namestite senzorje in ustvarite zanko for, ki bo nenehno dobivala odčitke temperatur iz senzorja temperature.

Nastavitev temperaturnega senzorja in LED:

tempPin = 'A0';%definira anonimno funkcijo, ki pretvori napetost v temperaturo tempCfromVolts = @(volti) (volti-0,5)*100; samplingDuration = 5; %sekund. Kako dolgo želimo vzorčiti za samplingInterval = 1; %Koliko sekund med temperaturnimi odčitki %nastavljen vektor časov vzorčenja samplingTimes = 0: samplingInterval: samplingDuration; %izračunajte število vzorcev na podlagi trajanja in intervala numSamples = length (samplingTimes); %vnaprej dodelitev spremenljivk temp in spremenljivko za število odčitkov, ki jih bo shranila tempC = ničle (numSamples, 1); tempF = tempC; %Tokrat bomo uporabili zanko for, da vzamemo vnaprej določeno število %temperaturnih odčitkov

Zanka for:

za indeks = 1: numSamples %odčita napetost pri tempPin in shrani v spremenljive volte voltov = readVoltage (a, tempPin); tempC (indeks) = -1*tempCizVoltov (volti+0,3); tempF (indeks) = tempC (indeks)*(9/5) +32; %Prikaz oblikovanega izhoda, ki sporoča trenutni odčitek temperature fprintf ('Temperatura pri %d sekundah je %5,2f C ali %5,2f F. / n',… samplingTimes (indeks), tempC (indeks), tempF (indeks)); %opomba: ta izhodni prikaz bo viden šele po tem, ko je koda %izvedena, razen če kodo kopirate/prilepite v navadno datoteko m skripta. pause (samplingInterval) %zakasnitev do konca naslednjega vzorca

Nato ustvarimo uporabniški meni, kjer se lahko uporabnik odloči, ali bo termostat preklopil v ročni ali samodejni način. Kodo napake ustvarimo tudi, če uporabnik ne izbere nobene od obeh možnosti.

Meni Ročni način zahteva, da uporabnik nastavi številko za temperaturo termostata, nato pa bo ogreval dom, ohladil dom ali miroval glede na odčitke. Za nastavitev tega dela kode ste uporabili odčitke temperature iz temperaturnega senzorja in ustvarili kodo, ki bo ohladila dom, ko je odčitek temperature višji od nastavljene temperature, in ogrela dom, ko je odčitek temperature nižji od nastavljene temperature.

Ko izmerite temperaturo, lahko ustvarite kodo, ki bo termostatu povedala, naj ohladi dom, ko je temperatura višja od nastavljene temperature, in ogreje dom, ko je odčitek temperature nižji od nastavljene temperature. Za prototip modra lučka zasveti, ko se mora termostat ohladiti, rdeča pa, ko se mora termostat segreti.

Nastavitev menija:

choices = {'Samodejno', 'Ročno'}; imode = meni ('Način', izbire), če je imode> 0 h = msgbox (['Izbrali ste' izbire {imode}]); else h = warndlg ('Zaprli ste meni, ne da bi se odločili') end waitfor (h);

Ročni način zahteva, da uporabnik vnese temperaturo za termostat, nato pa bo na podlagi odčitkov temperaturnega senzorja začel bodisi hladiti hišo za ogrevanje hiše. Če je odčitek temperaturnega senzorja višji od nastavljene temperature, bo začel hladiti dom. Če je odčitek temperaturnega senzorja nižji od nastavljene temperature, bo ogreval dom.

Ročni način se bo zagnal:

if imode == 2 dlg_prompts = {'Kakšno temperaturo bi raje izbrali?'}; dlg_title = 'Temperatura'; dlg_defaults = {'68'}; opts. Resize = 'vklopljeno'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Preklicali ste ukaz inputdlg'); else temp_manual = str2double (dlg_ans {1}) %[Dodaj spodnji drsnik za nastavitev regulacije temperature] konec

Znotraj stavka if za ročni način morate napisati vmesnik menija, da lahko uporabnik izbere želeno temperaturo doma, nato pa uvedete izjavo while, ki bo uravnavala temperaturo doma.

Nastavitev regulacije temperature:

medtem ko je temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); end while temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); konec

Samodejni način zahteva več vhodov kot ročni način. Po vstopu v samodejni način bo uporabnik nastavil normalno in izhodno temperaturo za svoj termostat.

Nastavite samodejni način:

elseif imode == 1 dlg_prompts = {'Normal', 'Away'}; dlg_title = 'Nastavitve temperature'; dlg_defaults = {'68', '64'}; opts. Resize = 'vklopljeno'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Preklicali ste ukaz inputdlg'); else temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) end waitfor (h); %[Spodaj dodajte korak zaznavanja gibanja]

Za nastavitve samodejnega načina moramo nastaviti tudi senzor gibanja. Ko detektor gibanja zazna gibanje, bo ohranil temperaturo na trenutni nastavitvi temperature, sicer se bo nastavil na nastavitev temperature stran.

Run_Motion_Detector (a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin (a, 'D6', 1) ne glede na to, ali je rdeča lučka v motorju tudi za ventilator writeDigitalPin (a, 'D9', 1); end end while lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %se spremeni v kateri koli pin, v katerem je normalna luč, medtem ko temp tempF writeDigitalPin (a, 'D6', 1) v kateri koli rdeči luči pin je tudi motor za ventilator writeDigitalPin (a, 'D9', 1); konec konec

Celotno kodo najdete tukaj.

Priporočena: