Sisukord:

Nutika kodu termostaat: 4 sammu
Nutika kodu termostaat: 4 sammu

Video: Nutika kodu termostaat: 4 sammu

Video: Nutika kodu termostaat: 4 sammu
Video: Умное WiFi реле TUYA TYWD с сухими контактами и пультом ДУ RF 433 mHz 2024, Juuli
Anonim
Nutika kodu termostaat
Nutika kodu termostaat

Meie nutika kodu termostaat on programm, mis võib automaatselt säästa leibkonna raha kommunaalarvetelt, lähtudes inimese eelistustest.

1. samm: ülevaade

Nutika kodu termostaat kasutab kodu temperatuuri mõõtmiseks temperatuuriandurit. See temperatuurinäit lisatakse programmi, kus see otsustab, kas kliimaseade peab maja soojendama või jahutama, lähtudes soovitud majaomaniku temperatuurist.

Termostaadil on kaks režiimi: käsitsi ja automaatselt. Käsirežiim, mis reguleerib kodu temperatuuri vastavalt kasutaja soovitud temperatuurile. Termostaadi automaatrežiim muudab kodu temperatuuri automaatselt kasutaja poolt määratud temperatuuriks. Automaatrežiimi jaoks on kaks temperatuuri seadistust: eemalolev temperatuur ja praegune temperatuur. Eemaldatud temperatuuri kasutatakse energia säästmiseks, muutes termostaadi eelseadistatud energiasäästu temperatuuriks alati, kui kasutaja pole kodus. Praegust temperatuuri kasutatakse siis, kui kasutaja on kodus ja soovib mugavat temperatuuri. Termostaadi automaatrežiimis olles otsivad liikumisandurid aktiivselt liikumist, et teha kindlaks, kas keegi on kodus või mitte. Nende näidu põhjal seatakse kodutemperatuur kas eemaloleva või praeguse temperatuuri juurde.

Samm: osad ja materjalid

(15) Jumper traadid

(4) 220 oomi takistid

(1) 10K oomi takisti

(1) Temperatuuriandur

(1) Foto takisti

(1) DAGU Mini DC käigukast

(1) Diood

(1) Transistor

(1) Fototakisti

(1) Leivalaud

(1) Arduino MKR

3. samm: ahel

Vooluring
Vooluring
Vooluring
Vooluring
Vooluring
Vooluring
Vooluring
Vooluring

Joonis 1 = suur vasakpoolne pilt

Joonis 2 = üleval paremal

Joonis 3 = paremal keskel

Joonis 4 = paremal all

Joonis 1

Ülaltoodud skeemi kasutades ühendasime kõik meie kolm LED -i. Me eraldasime iga LED -i, kuna töötasime suure leivalauaga. Väiksemate leivalaudade puhul võib osutuda vajalikuks LED -de üksteisele lähemale asetamine. Samuti ei ole vaja leivaplaati toita, kuna LED -id tarbivad nii vähe energiat. Me ei kasutanud LED -ide jaoks leivaplaadil olevat 5V ühendust. Iga ühendus LED -ide ja meie Arduino vahel tehti nagu roheline traat on ülal. Meie punased, sinised ja rohelised LED -id on ühendatud vastavalt digitaalse tihvtiga 8, 9 ja 10, mis on meie pildil tähistatud punase, sinise ja rohelise juhtmega.

Joonis 2

Ülaltoodud skeemi kasutati fototakisti juhtmestamiseks. Tegime mõned parandused ise; mõisted on siiski samad. Fototakisti peab olema ühendatud analoogpistikuga, mis on tihvtis A1. Kasutage kindlasti 10K oomi takistit fototakisti lähima takisti jaoks.

Joonis 3

Seda skeemi kasutatakse temperatuurianduri juhtmestikus. Kindlasti ärge eksitage siin kasutatavat transistorit temperatuurianduriga. Nad näevad välja peaaegu identsed. Temperatuurianduril on tõenäoliselt tasapinnale kirjutatud TMP või mõni muu skript. Juhtmestik on siin väga lihtne, meie temperatuuriandur on ühendatud valge juhtmega analoogpistikuga A0.

Joonis 4

Ülaltoodud pilti kasutati DAGU Mini DC käigukasti juhtmestamiseks. Käigukasti külge kinnitatud roheline juhe on tegelikult meie pildil sellega ühendatud punane juhe. Käigukast on meie mudeli oranži juhtmega ühendatud digitaalse tihvtiga 11. Kindlasti ärge eksitage siin kasutatavat transistorit temperatuurianduriga. Nad näevad välja peaaegu identsed. Temperatuurianduril on tõenäoliselt tasapinnale kirjutatud TMP või mõni muu skript. Siin peate kasutama transistorit, mitte temperatuuriandurit.

Samm: Arduino kood

Siin selgitatakse koodi olulisemaid osi. Kood ei tööta ainult siin esitatud andmetega. Täieliku töökoodi saamiseks on lehe allosas link.

Programmeeritava termostaadi koodi loomisel on üks esimesi asju, mida te teete, andurite seadistamine ja for -loopi loomine, mis saab temperatuuriandurilt pidevalt näitu.

Temperatuuri anduri ja LED -i seadistamine:

tempPin = 'A0';%määratlevad anonüümse funktsiooni, mis teisendab pinge temperatuuriks tempCfromVolts = @(volti) (volti-0,5)*100; proovide võtmineKestus = 5; %sekundit. Kui kaua tahame proovide võtmiseks proovi võttaInterval = 1; %Mitu sekundit temperatuurinäitude vahel %seadistatud proovivõtmise aegade vektor samplingTimes = 0: samplingInterval: samplingDuration; %arvutab proovide arvu kestuse ja intervalli põhjal numSamples = pikkus (samplingTimes); temp -muutujate erallokaatorite %ja näitude arvu muutuja see salvestab tempC = nullid (numSamples, 1); tempF = tempC; %Kasutame seekord for-tsüklit, et teha etteantud arv %temperatuurinäitu

Ahela jaoks:

indeksi = 1 korral: numSamples %loeb pinget tempPin ja salvestab muutuva voltidega voltides = readVoltage (a, tempPin); tempC (indeks) = -1*tempCfromVolts (volt+0,3); tempF (indeks) = tempC (indeks)*(9/5) +32; %Kuva vormindatud väljund, mis edastab praeguse temperatuurinäidu fprintf ('Temperatuur %d sekundis on %5,2f C või %5,2f F. / n',… samplingTimes (indeks), tempC (indeks), tempF (indeks)); %märkus see kuvaväljund muutub nähtavaks alles pärast koodi täitmist, kui te ei kopeeri/kleepige koodi tavalisse skripti faili. paus (samplingInterval) %viivitus järgmise proovi lõpuni

Seejärel loome kasutajamenüü, et kasutaja saaks otsustada, kas lülitada termostaat käsitsi või automaatrežiimi. Samuti loome veakoodi, kui kasutaja ei vali kumbagi kahest suvandist.

Käsirežiimi menüü nõuab, et kasutaja määraks termostaadi temperatuuri numbri, seejärel soojendab see kodu, jahutab kodu või töötab näitude põhjal jõude. Selle koodi osa seadistamiseks kasutasite temperatuurianduri temperatuurinäiteid ja koostasite koodi, mis jahutab kodu, kui temperatuurinäit on seadistatud temperatuurist kõrgem, ja soojendab kodu, kui temperatuurinäit on seadistatud temperatuurist madalam.

Kui teil on temperatuurinäidud, saate luua koodi, mis käsib termostaadil kodu jahutada, kui temperatuurinäit on seadistatud temperatuurist kõrgem, ja kütta kodu, kui temperatuurinäit on seadistatud temperatuurist madalam. Prototüübi puhul süttib sinine tuli, kui termostaat peaks jahtuma, ja punane tuli süttib, kui termostaat peaks soojenema.

Menüü seadistamine:

options = {'Automatic', 'Manual'}; imode = menu ('Mode', options) if imode> 0 h = msgbox (['Valisite' valikud {imode}]); else h = warndlg ('Sulgesite menüü valikut tegemata') end waitfor (h);

Käsirežiim nõuab, et kasutaja sisestaks termostaadile temperatuuri, seejärel alustab see temperatuurianduri näitude põhjal kas maja kütmise maja jahutamist. Kui temperatuurianduri näit on seadistatud temperatuurist kõrgem, hakkab see kodu jahutama. Kui temperatuurianduri näit on seadistatud temperatuurist madalam, soojendab see kodu.

Käsitsi režiim käivitub:

if imode == 2 dlg_prompts = {'Millist temperatuuri eelistaksite?'}; dlg_title = 'Temperatuur'; dlg_defaults = {'68'}; valib. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Tühistasite käsu inputdlg'); else temp_manual = str2double (dlg_ans {1}) %[Lisa temperatuuri reguleerimise seadistamise slaid allpool] lõpp

Käsirežiimi if -avalduse sees peate kirjutama menüüliidese, et kasutaja saaks valida soovitud kodutemperatuuri, ja seejärel rakendama mõne aja lause, mis reguleerib kodutemperatuuri.

Temperatuuri reguleerimise seadistus:

samas temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); end samas temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); lõpp

Automaatrežiim nõuab rohkem sisendeid kui käsitsi. Pärast automaatrežiimi sisenemist määrab kasutaja oma termostaadile normaalse ja eemal oleva temperatuuri. Pärast nende valimist läheb termostaat selle režiimi põhjal tagasi temperatuuri reguleerimise režiimi

Automaatrežiimi seadistamine:

elseif imode == 1 dlg_prompts = {'Tavaline', 'Eemal'}; dlg_title = 'Temperatuuri seaded'; dlg_defaults = {'68', '64'}; valib. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Tühistasite käsu inputdlg'); muidu temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) end waitfor (h); %[Lisa liikumisdetektor allpool]

Samuti peame seadistama liikumisanduri automaatrežiimi seadete jaoks. Kui liikumisandur võtab liikumise vastu, hoiab see temperatuuri praegusel temperatuuril, vastasel juhul lülitub see eemal asuvale temperatuurile.

Run_Motion_Detector (a, inf) samas lightStr == 0 temp = temp_away samas temp tempF writeDigitalPin (a, 'D6', 1) ükskõik milline punane tuli on ka ventilaatori kirjutamise mootorisDigitalPin (a, 'D9', 1); end end samal ajal kui valgusStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %muutus ükskõik millise tihvtiga, kus tavaline valgus on sees, samas temp tempF writeDigitalPin (a, 'D6', 1) mis tahes punane tuli on ka sees ventilaatori kirjutamise mootor DigitalPin (a, 'D9', 1); lõpp lõpp

Täieliku koodi leiate siit.

Soovitan: