Satura rādītājs:

Viedās mājas termostats: 4 soļi
Viedās mājas termostats: 4 soļi

Video: Viedās mājas termostats: 4 soļi

Video: Viedās mājas termostats: 4 soļi
Video: DIY Умный котел отопления своими руками простой WiFi ZigBee терморегулятор TUYA 2024, Jūlijs
Anonim
Viedās mājas termostats
Viedās mājas termostats

Mūsu viedās mājas termostats ir programma, kas var automātiski ietaupīt mājsaimniecības naudu par komunālajiem maksājumiem, pamatojoties uz personas vēlmēm.

1. darbība. Pārskats

Viedās mājas termostats izmanto temperatūras sensoru, lai iegūtu mājokļa temperatūru. Šis temperatūras rādījums tiek ievietots programmā, kur, pamatojoties uz vēlamo mājas īpašnieka temperatūru, tā izlems, vai gaisa kondicionēšanas sistēmai ir jāsilda vai jāatdzesē māja.

Termostatam ir divi režīmi: manuāls un automātisks. Manuālais režīms, kas pielāgos mājas temperatūru jebkurai vēlamajai lietotāja iestatītajai temperatūrai. Un termostata automātiskais režīms automātiski mainīs mājas temperatūru uz lietotāja iepriekš iestatītu temperatūru. Automātiskajam režīmam būs divi temperatūras iestatījumi: temperatūra prom un pašreizējā temperatūra. Izbraukšanas temperatūra tiek izmantota, lai taupītu enerģiju, nomainot termostatu uz iepriekš iestatītu enerģijas taupīšanas temperatūru, kad lietotājs nav mājās. Pašreizējā temperatūra tiks izmantota, kad lietotājs ir mājās un vēlas ērtu temperatūru. Atrodoties termostata automātiskajā režīmā, kustības sensori aktīvi meklē kustību, lai noteiktu, vai kāds ir mājās vai nav. Pamatojoties uz viņu rādījumiem, mājas temperatūra tiks iestatīta vai nu prom, vai pašreizējā.

2. solis: detaļas un materiāli

(15) Džemperu vadi

(4) 220 omu rezistori

(1) 10K omu rezistors

(1) Temperatūras sensors

(1) Foto rezistors

(1) DAGU Mini DC pārnesumkārba

(1) Diode

(1) Tranzistors

(1) Fotorezistors

(1) Maizes dēlis

(1) Arduino MKR

3. solis: ķēde

Ķēde
Ķēde
Ķēde
Ķēde
Ķēde
Ķēde
Ķēde
Ķēde

1. attēls = liels kreisais attēls

2. attēls = augšējā labajā stūrī

3. attēls = labajā pusē

4. attēls = apakšā pa labi

1. attēls

Izmantojot iepriekš redzamo diagrammu, mēs savienojām katru no mūsu trim gaismas diodēm. Mēs izdalījām katru gaismas diodi, jo strādājām ar lielu maizes dēli. Mazākiem maizes dēļiem var būt nepieciešams tuvināt gaismas diodes. Turklāt nav nepieciešams barot maizes dēli, jo gaismas diodes patērē tik maz enerģijas. Mēs neizmantojām 5V savienojumu uz maizes dēļa gaismas diodēm. Katrs savienojums no gaismas diodēm ar mūsu Arduino tika veikts tā, kā zaļais vads ir virs. Mūsu sarkanās, zilās un zaļās gaismas diodes ir savienotas ar ciparu tapu 8, 9 un 10, kuras attēlā ir apzīmētas ar sarkanu, zilu un zaļu vadu.

2. attēls

Iepriekš redzamā diagramma tika izmantota, lai savienotu fotorezistoru. Mēs veicām dažus labojumus paši; tomēr jēdzieni joprojām ir vienādi. Fotorezistors ir jāpievieno analogajai tapai, kas mums ir tapā A1. Noteikti izmantojiet 10K omu rezistoru pretestībai, kas ir vistuvāk fotorezistoram.

3. attēls

Šī ir diagramma, ko izmanto temperatūras sensora vadīšanai. Noteikti nekļūdieties šeit izmantotajā tranzistorā ar temperatūras sensoru. Viņi izskatās gandrīz identiski. Temperatūras sensora sensora plakanajā pusē, iespējams, būs TMP vai kāds cits skripts. Elektroinstalācija šeit ir ļoti vienkārša, mūsu temperatūras sensors ir pievienots analogā tapā A0 ar baltu vadu.

4. attēls

Iepriekš redzamais attēls tika izmantots, lai savienotu DAGU Mini DC pārnesumkārbu. Pārnesumkārbai pievienotais zaļais vads patiesībā ir sarkanais vads, kas tam pievienots mūsu attēlā. Pārnesumkārba ir pievienota digitālajai tapai 11 ar oranžu vadu mūsu modelī. Noteikti nemaldiniet šeit izmantoto tranzistoru ar temperatūras sensoru. Viņi izskatās gandrīz identiski. Temperatūras sensora sensora plakanajā pusē, iespējams, būs TMP vai kāds cits skripts. Šeit jums jāizmanto tranzistors, nevis temperatūras sensors.

4. solis: Arduino kods

Šeit ir izskaidrotas vissvarīgākās koda daļas. Kods nedarbosies tikai ar šeit norādīto. Lai iegūtu pilnu darba kodu, lapas apakšā ir saite.

Veidojot programmējamo termostata kodu, viena no pirmajām lietām, ko jūs darāt, ir sensoru iestatīšana un cilpas izveidošana, kas pastāvīgi saņems temperatūras rādījumus no temperatūras sensora.

Temperatūras sensora un LED uzstādīšana:

tempPin = 'A0';%definē anonīmu funkciju, kas pārveido spriegumu par temperatūru tempCfromVolts = @(volti) (volti-0,5)*100; paraugu ņemšanas ilgums = 5; %sekundes. Cik ilgi mēs vēlamies izlasi paraugu ņemšanaiInterval = 1; %Cik sekundes starp temperatūras rādījumiem %izveidots paraugu ņemšanas laiku vektors samplingTimes = 0: samplingInterval: samplingDuration; %aprēķina paraugu skaitu, pamatojoties uz ilgumu un intervālu numSamples = garums (samplingTimes); %iepriekš sadalīt temp mainīgos lielumus un rādījumu skaita mainīgo, tajā tiks saglabāti tempC = nulles (numSamples, 1); tempF = tempC; %Šoreiz mēs izmantosim cilpu for, lai veiktu iepriekš noteiktu %temperatūras rādījumu skaitu

Cilpai:

indeksam = 1: numSamples %nolasa spriegumu pie tempPin un uzglabā mainīgajos voltos voltos = readVoltage (a, tempPin); tempC (indekss) = -1*tempCfromVolts (volti+0,3); tempF (indekss) = tempC (indekss)*(9/5) +32; %Parādīt formatētu izvadi, kas paziņo pašreizējo temperatūras rādījumu fprintf ('Temperatūra %d sekundēs ir %5,2f C vai %5,2f F. / n',… samplingTimes (indekss), tempC (indekss), tempF (indekss)); %piezīme šī displeja izvade kļūs redzama tikai uzreiz pēc tam, kad kods būs izpildīts, ja vien jūs nekopēsit/neielīmēsit kodu vienkāršā skripta failā. pauze (samplingInterval) %aizkave līdz nākamajam parauga beigām

Pēc tam mēs izveidojam savu lietotāja izvēlni, lai lietotājs varētu izlemt, vai termostatu iestatīt manuālā vai automātiskajā režīmā. Mēs arī izveidojam kļūdas kodu, ja lietotājs neizvēlas nevienu no divām iespējām.

Manuālā režīma izvēlnē lietotājam ir jāiestata termostata temperatūras skaitlis, tad, pamatojoties uz rādījumiem, tā vai nu sildīs māju, atdzesēs māju, vai arī dīkstāvē. Lai iestatītu šo koda daļu, jūs izmantojāt temperatūras rādījumus no temperatūras sensora un izveidojāt kodu, kas atdzesēs māju, kad temperatūras rādījums ir augstāks par iestatīto temperatūru, un sildīs māju, kad temperatūras rādījums ir zemāks par iestatīto temperatūru.

Kad esat nolasījis temperatūru, varat izveidot kodu, kas liks termostatam atdzist māju, kad temperatūras rādījums ir augstāks par iestatīto temperatūru, un sildīt māju, kad temperatūras rādījums ir zemāks par iestatīto temperatūru. Prototipam zilā gaisma iedegas, kad termostatam vajadzētu atdzist, un sarkanā gaisma iedegas, kad termostats sakarst.

Izvēlnes iestatīšana:

options = {'Automatic', 'Manual'}; imode = menu ('Mode', options), ja imode> 0 h = msgbox (['Tu izvēlējies' izvēles {imode}]); else h = warndlg ('Jūs aizvērāt izvēlni, neizvēloties') beigas gaidīt (h);

Manuālajā režīmā lietotājam ir jāievada temperatūra termostatam, un, pamatojoties uz temperatūras sensora rādījumiem, tas sāks vai nu sildīt māju. Ja temperatūras sensora rādījums ir augstāks par iestatīto temperatūru, tas sāks dzesēt māju. Ja temperatūras sensora rādījums ir zemāks par iestatīto temperatūru, tas sildīs māju.

Sāksies manuālais režīms:

ja imode == 2 dlg_prompts = {'Kādai temperatūrai jūs dotu priekšroku?'}; dlg_title = 'Temperatūra'; dlg_defaults = {'68'}; opts. Resize = 'ieslēgts'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Jūs atcēlāt komandu inputdlg'); else temp_manual = str2double (dlg_ans {1}) %[Zemāk pievienot temperatūras regulēšanas iestatījumu slaidu] beigas

Manuālā režīma paziņojuma if iekšpusē jums ir jāraksta izvēlnes saskarne, lai lietotājs varētu izvēlēties vēlamo mājas temperatūru, un pēc tam jāievieš brīdinājums, kas regulēs mājas temperatūru.

Temperatūras regulēšanas iestatīšana:

kamēr temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); end, kamēr temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); beigas

Automātiskais režīms prasa vairāk ievades datu nekā manuālais režīms. Pēc automātiskā režīma ievadīšanas lietotājs savam termostatam iestatīs normālu un prombūtnes temperatūru. Pēc to izvēles, pamatojoties uz to, kādā režīmā termostats ir, tas atgriezīsies temperatūras regulēšanas režīmā

Iestatiet automātisko režīmu:

elseif imode == 1 dlg_prompts = {'Normāls', 'Prom' '; dlg_title = 'Temperatūras iestatījumi'; dlg_defaults = {'68', '64'}; opts. Resize = 'ieslēgts'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Jūs atcēlāt komandu inputdlg'); cits temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) beigu gaidīšana (h); %[Pievienot kustību detektoru tālāk]

Mums ir arī jāiestata kustības sensors automātiskā režīma iestatījumiem. Kad kustības detektors uztver kustību, tas saglabās pašreizējā temperatūras iestatījumu, pretējā gadījumā tas tiks iestatīts uz attāluma temperatūras iestatījumu.

Run_Motion_Detector (a, inf), kamēr lightStr == 0 temp = temp_away, kamēr temp tempF writeDigitalPin (a, 'D6', 1) neatkarīgi no sarkanās gaismas ir arī ventilatora rakstīšanas motorāDigitalPin (a, 'D9', 1); beigu beigas, kamēr gaismaStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %mainās uz jebkuru tapu, kurā ir normālā gaisma, kamēr temp tempF writeDigitalPin (a, 'D6', 1) neatkarīgi no sarkanās gaismas motors ventilatora rakstīšanaiDigitalPin (a, 'D9', 1); beigas beigas

Pilnu kodu var atrast šeit.

Ieteicams: