Mündəricat:

Ağıllı Ev Termostatı: 4 addım
Ağıllı Ev Termostatı: 4 addım

Video: Ağıllı Ev Termostatı: 4 addım

Video: Ağıllı Ev Termostatı: 4 addım
Video: Zigbee термостат для теплого пола MOES - возможности, настройка, интеграция в Home Assistant 2024, Noyabr
Anonim
Ağıllı Ev Termostatı
Ağıllı Ev Termostatı

Ağıllı Ev Termostatımız, bir şəxsin seçimlərinə əsaslanaraq kommunal xərclər üçün bir ev pulunu avtomatik olaraq saxlaya biləcək bir proqramdır.

Addım 1: Baxış

Ağıllı Ev Termostatı evin istiliyini əldə etmək üçün bir temperatur sensoru istifadə edir. Bu temperatur oxunması, kondisioner sisteminin istədiyi ev sahibinin istiliyinə əsasən evi istiləşdirməsi və ya soyutması lazım olduğuna qərar verəcəyi proqrama daxil edilir.

Termostatın iki rejimi var: mexaniki və avtomatik. Evin istiliyini istifadəçi tərəfindən istənilən istiliyə uyğunlaşdıran əl rejimi. Termostatın avtomatik rejimi evin istiliyini istifadəçi tərəfindən əvvəlcədən təyin edilmiş temperatura dəyişəcək. Avtomatik rejim üçün iki temperatur ayarı olacaq: uzaqlıq temperaturu və indiki temperatur. İstifadəçi evdə olmadığı zaman termostatı əvvəlcədən təyin edilmiş enerji qənaət edən bir temperatura dəyişdirərək enerjiyə qənaət etmək üçün uzaqdakı temperatur istifadə olunur. İstifadəçi evdə olduğu və rahat bir temperatur istədiyi zaman mövcud temperatur istifadə ediləcək. Termostatın avtomatik rejimində olduqda, hərəkət sensorları kiminsə evdə olub olmadığını müəyyən etmək üçün fəal şəkildə hərəkət axtarırlar. Oxuduqlarına əsasən, evin temperaturu ya uzaqdakı temperatura, ya da indiki temperatura təyin olunacaq.

Addım 2: hissələr və materiallar

(15) Jumper Telləri

(4) 220 Ohm Rezistorlar

(1) 10K Ohm Rezistor

(1) Temp Sensor

(1) Şəkil Rezistoru

(1) DAGU Mini DC sürət qutusu

(1) Diod

(1) Transistor

(1) Fotoresistor

(1) Çörək lövhəsi

(1) Arduino MKR

Addım 3: Dövrə

Dövrə
Dövrə
Dövrə
Dövrə
Dövrə
Dövrə
Dövrə
Dövrə

Şəkil 1 = Böyük Sol şəkil

Şəkil 2 = Sağ üst

Şəkil 3 = Orta Sağ

Şəkil 4 = Aşağı Sağ

Şəkil 1

Yuxarıdakı diaqramdan istifadə edərək üç LED -in hər birini bağladıq. Böyük bir çörək lövhəsi ilə işlədiyimiz üçün hər bir LED -ni ayırdıq. Kiçik çörək lövhələri üçün LED -ləri bir -birinə yaxınlaşdırmaq lazım ola bilər. Ayrıca, LED -lər çox az enerji çəkdiyindən çörək taxtasına güc vermək lazım deyil. LEDlər üçün çörək lövhəsindəki 5V bağlantısından istifadə etmədik. LED -lərdən Arduino -ya olan hər bir əlaqə yuxarıdakı yaşıl tel kimi edildi. Qırmızı, mavi və yaşıl LED -lərimiz, şəklimizdə qırmızı, mavi və yaşıl bir tel ilə təyin olunan Rəqəmsal Pin 8, 9 və 10 -a bağlıdır.

Şəkil 2

Yuxarıdakı diaqram fotorezistoru bağlamaq üçün istifadə edilmişdir. Özümüzdən bir neçə düzəliş etdik; anlayışlar yenə də eynidir. Fotorezistor A1 pinindəki analoq pinə qoşulmalıdır. Fotorezistora ən yaxın olan rezistor üçün 10K ohm rezistor istifadə etdiyinizə əmin olun.

Şəkil 3

Bu, temperatur sensörünü bağlamaq üçün istifadə olunan diaqramdır. Burada istifadə olunan tranzistoru temperatur sensoru ilə səhv salmadığınızdan əmin olun. Demək olar ki, eynidirlər. Temperatur sensoru, ehtimal ki, sensorun düz tərəfində TMP və ya başqa bir skript yazacaq. Buradakı naqillər çox sadədir, temperatur sensörümüz ağ tel ilə A0 analog pininə qoşulmuşdur.

Şəkil 4

Yuxarıdakı şəkil DAGU Mini DC Sürət qutusuna tel çəkmək üçün istifadə edilmişdir. Şanzımana qoşulmuş yaşıl tel əslində şəklimizdə ona bağlı olan qırmızı teldir. Şanzıman, modelimizdə narıncı bir tel ilə rəqəmsal pin 11 -ə bağlıdır. Burada istifadə olunan tranzistoru temperatur sensoru ilə səhv salmadığınızdan əmin olun. Demək olar ki, eynidirlər. Temperatur sensoru, ehtimal ki, sensorun düz tərəfində TMP və ya başqa bir skript yazacaq. Burada temperatur sensoru yox, tranzistordan istifadə etməlisiniz.

Addım 4: Arduino Kodu

Burada kodun ən vacib hissələri izah edilir. Kod yalnız burada verilənlərlə işləməyəcək. Tam iş kodunu əldə etmək üçün səhifənin altındakı bir keçid var.

Proqramlaşdırıla bilən termostatın kodunu yaratarkən, etdiyiniz ilk işlərdən biri sensorlar qurmaq və daim temperatur sensorundan temperatur oxunuşlarını əldə edəcək bir döngə yaratmaqdır.

İstilik sensoru və LED qurmaq:

tempPin = 'A0';%gərginliyi tempCfromVolts = @(volts) (volts-0.5)*100-ə çevirən anonim funksiyanı təyin edir; samplingDuration = 5; %saniyə. SamplingInterval = 1 üçün nə qədər nümunə götürmək istəyirik? İstilik oxunuşları arasında neçə saniyə nümunə götürmə vaxtının vektorunu qurur örneklemeTimes = 0: samplingInterval: samplelingDuration; %müddəti və aralığına əsasən nümunələrin sayını hesablayın numSamples = uzunluq (samplelingTimes); %tempC = sıfırlar (numSamples, 1) saxlayacaq oxu sayına görə temp dəyişənlərini və dəyişəni əvvəlcədən təyin edin; tempF = tempC; Əvvəlcədən müəyyən edilmiş bir sıra temperatur oxunuşlarını almaq üçün bu dəfə for for istifadə edəcəyik

For döngəsi:

index = 1 üçün: numSamples %tempPin -dəki gərginliyi oxuyur və dəyişən volt voltlarda saxlayır = readVoltage (a, tempPin); tempC (indeks) = -1*tempCfromVolts (volt+0.3); tempF (indeks) = tempC (indeks)*(9/5) +32; Cari temperatur fprintf oxunuşunu bildirən formatlı çıxışı göstərin (' %d saniyədə temperatur %5.2f C və ya %5.2f F. / n',… samplingTimes (indeks), tempC (indeks), tempF (indeks)); Kodun düz bir skript mfile kopyalayıb yapışdırmadığınız təqdirdə, kodun işlənməsindən sonra bu ekran çıxışı yalnız bir anda görünəcəkdir. pauza (samplingInterval) %sonrakı nümunə sonuna qədər gecikmə

Bundan sonra, istifadəçinin termostatın Manuel və ya Avtomatik rejimə qoyulmasına qərar verməsi üçün istifadəçi menyusunu yaradırıq. İstifadəçi iki variantdan birini seçməsə, səhv kodu da yaradırıq.

Manuel rejim menyusu istifadəçidən termostatın temperaturu üçün bir nömrə təyin etməsini tələb edir, sonra ya evi qızdırır, ya evi sərinləşdirir, ya da oxunuşlara əsasən boş qalır. Kodun bu hissəsini qurmaq üçün, temperatur sensöründəki temperatur oxunuşlarını istifadə etdiniz və temperatur oxunuşu təyin olunan temperaturdan yüksək olduqda evi soyudacaq və temperatur oxunuşu təyin olunan temperaturdan aşağı olduqda evi qızdıracaq bir kod yaratdınız.

Temperatur oxunuşlarına sahib olduqdan sonra, temperaturun oxunması təyin olunmuş temperaturdan yüksək olduqda termostatın evi soyutmasını və temperaturun oxunuşu təyin olunan temperaturdan aşağı olduqda evi qızdırmasını bildirən kodu yarada bilərsiniz. Prototip üçün mavi işıq termostat soyudulduqda, qırmızı işıq isə termostat qızdırıldıqda yanır.

Menyu Ayarı:

choices = {'Avtomatik', 'Manuel'}; imode = menyu ('Mod', seçimlər) əgər imode> 0 h = msgbox (['Seçdiyiniz' seçimlər {imode}]); else h = warningdlg ('Seçim etmədən menyunu bağladınız') end waitfor (h);

Manuel rejim istifadəçidən termostat üçün bir temperatur daxil etməyi tələb edir, sonra temperatur sensöründəki oxunuşlara əsaslanaraq ya evi qızdırmaq üçün evi soyutmağa başlayacaq. Temperatur sensörünün oxunuşu təyin olunan temperaturdan yüksək olarsa, evi soyutmağa başlayacaq. Temperatur sensörünün göstəricisi təyin olunan temperaturdan aşağı olarsa, evi qızdıracaq.

Manual rejim başlayacaq:

əgər imode == 2 dlg_prompts = {'Hansı temperatura üstünlük verərdiniz?'}; dlg_title = 'Temperatur'; dlg_defaults = {'68'}; opts. Resize = 'açıq'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warningdlg ('inputdlg əmrini ləğv etdiniz'); başqa temp_manual = str2double (dlg_ans {1}) %[Aşağıdakı Temperatur Tənzimləmə Quraşdırma slaydını əlavə et] sonu

Əl rejimi üçün if ifadəsinin içərisində, istifadəçinin istədiyi ev temperaturunu seçməsi üçün menyu interfeysi yazmalı və sonra ev temperaturunu tənzimləyəcək bir müddət ifadəsini tətbiq etməlisiniz.

İstilik tənzimləmə qurğusu:

temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); end while temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); bitmək

Avtomatik rejim əl rejimindən daha çox giriş tələb edir. İstifadəçi avtomatik rejimə daxil olduqdan sonra öz termostatı üçün Normal və Uzaqda bir temperatur təyin edəcək, termostatın hansı rejimdə olduğuna əsaslanaraq yenidən temperatur tənzimləmə rejiminə keçəcək.

Avtomatik rejimi qurun:

elseif imode == 1 dlg_prompts = {'Normal', 'Uzaqda'}; dlg_title = 'Temperatur Ayarları'; dlg_defaults = {'68', '64'}; opts. Resize = 'açıq'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warningdlg ('inputdlg əmrini ləğv etdiniz'); başqa temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) gözləmə müddəti (h); %[Aşağıdakı Hərəkət Detektoru Addımı əlavə edin]

Avtomatik rejim parametrləri üçün hərəkət sensoru da qurmalıyıq. Hərəkət detektoru hərəkətə keçdikdə, temperaturu indiki temperaturda saxlayacaq, əks halda uzaqdakı temperatur rejiminə keçəcək.

LightStr == 0 temp = temp_away isə temp tempF writeDigitalPin (a, 'D6', 1), fan yazmaq üçün motorda nə pin qırmızı işığı varsa, Run_Motion_Detector (a, inf) (a, 'D9', 1); lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %temp, normal işığın olduğu nöqtəyə %temp tempF writeDigitalPin (a, 'D6', 1) qırmızı işıq da daxil olduqda fan yazma mühərrikiDigitalPin (a, 'D9', 1); sonu son

Tam kodu burada tapa bilərsiniz.

Tövsiyə: