İçindekiler:

Akıllı Ev Termostatı: 4 Adım
Akıllı Ev Termostatı: 4 Adım

Video: Akıllı Ev Termostatı: 4 Adım

Video: Akıllı Ev Termostatı: 4 Adım
Video: Cosa P4TR-21 Akıllı Oda Termostatı Kablosuz Kombi Kontrolü (Pilli veya Adaptörlü Kullanım) 2024, Temmuz
Anonim
Akıllı Ev Termostatı
Akıllı Ev Termostatı

Akıllı Ev Termostatımız, kişinin tercihlerine göre otomatik olarak bir evin parasını elektrik faturalarından kurtarabilen bir programdır.

1. Adım: Genel Bakış

Akıllı Ev Termostatı, evin sıcaklığını almak için bir sıcaklık sensörü kullanır. Bu sıcaklık okuması, istenen ev sahibinin sıcaklığına göre klima sisteminin evi ısıtması veya soğutması gerekip gerekmediğine karar vereceği programa konur.

Termostat için iki mod vardır: manuel ve otomatik. Evin sıcaklığını istenilen sıcaklığa ayarlayacak olan manuel mod, kullanıcı tarafından ayarlanır. Ve termostatın otomatik modu, evin sıcaklığını otomatik olarak kullanıcı tarafından önceden ayarlanmış sıcaklıklara değiştirecektir. Otomatik mod için iki sıcaklık ayarı olacaktır: uzak sıcaklık ve mevcut sıcaklık. Uzak sıcaklık, kullanıcı evde olmadığında termostatı önceden ayarlanmış bir enerji tasarrufu sıcaklığına değiştirerek enerji tasarrufu yapmak için kullanılır. Mevcut sıcaklık, kullanıcı evdeyken ve rahat bir sıcaklık istediğinde kullanılacaktır. Termostatın otomatik modundayken, hareket sensörleri evde birinin olup olmadığını belirlemek için aktif olarak hareketi arar. Okumalarına bağlı olarak, ev sıcaklığı ya uzaktaki sıcaklığa ya da mevcut sıcaklığa ayarlanacaktır.

Adım 2: Parçalar ve Malzemeler

(15) Atlama Telleri

(4) 220 Ohm Dirençler

(1) 10K Ohm Direnç

(1) Sıcaklık Sensörü

(1) Fotoğraf Direnci

(1) DAGU Mini DC Şanzıman

(1) diyot

(1) Transistör

(1) Fotodirenç

(1) ekmek tahtası

(1) Arduino MKR

Adım 3: Devre

Devre
Devre
Devre
Devre
Devre
Devre
Devre
Devre

Şekil 1 = Büyük Sol resim

Şekil 2 = Sağ Üst

Şekil 3 = Orta Sağ

Şekil 4 = Sağ Alt

Şekil 1

Yukarıdaki şemayı kullanarak üç LED'imizin her birini bağladık. Büyük bir ekmek tahtası ile çalıştığımız için her bir LED'i ayırdık. Daha küçük ekmek tahtaları için LED'leri birbirine yaklaştırmak gerekebilir. Ayrıca LED'ler çok az güç çektiği için devre tahtasına güç vermek gereksizdir. LED'ler için breadboard üzerindeki 5V bağlantısını kullanmadık. LED'lerden Arduino'muza her bağlantı yukarıdaki yeşil kablo gibi yapılmıştır. Kırmızı, mavi ve yeşil LED'lerimiz, resmimizde kırmızı, mavi ve yeşil kablo ile gösterilen Dijital Pin 8, 9 ve 10'a bağlıdır.

şekil 2

Yukarıdaki şema, fotodirenci bağlamak için kullanıldı. Kendimize göre birkaç düzeltme yaptık; ancak kavramlar hala aynı. Fotodirenç, A1 piminde sahip olduğumuz bir analog pime bağlanmalıdır. Fotorezistöre en yakın direnç için 10K ohm'luk bir direnç kullandığınızdan emin olun.

Figür 3

Bu, sıcaklık sensörünü bağlamak için kullanılan şemadır. Burada kullanılan transistörü sıcaklık sensörü ile karıştırmayın. Neredeyse aynı görünüyorlar. Sıcaklık sensörü muhtemelen sensörün düz tarafında yazılı TMP veya başka bir komut dosyasına sahip olacaktır. Buradaki kablolama çok basittir, sıcaklık sensörümüz beyaz bir kabloyla analog pin A0'a takılır.

Şekil 4

Yukarıdaki resim DAGU Mini DC Şanzımanı bağlamak için kullanıldı. Şanzımana bağlı olan yeşil tel aslında bizim resmimizde ona bağlı olan kırmızı teldir. Bizim modelimizde şanzıman dijital pin 11'e turuncu bir tel ile bağlanmıştır. Burada kullanılan transistörü sıcaklık sensörü ile karıştırmayın. Neredeyse aynı görünüyorlar. Sıcaklık sensörü muhtemelen sensörün düz tarafında yazılı TMP veya başka bir komut dosyasına sahip olacaktır. Burada sıcaklık sensörünü değil, transistörü kullanmalısınız.

Adım 4: Arduino Kodu

Burada, kodun en önemli kısımları açıklanmıştır. Kod sadece burada verilenlerle çalışmayacaktır. Tam çalışma kodunu almak için sayfanın altında bir bağlantı var.

Programlanabilir termostatın kodunu oluştururken, yaptığınız ilk şeylerden biri sensörleri kurmak ve sıcaklık sensöründen sürekli olarak sıcaklık okumaları alacak bir for döngüsü oluşturmaktır.

Sıcaklık Sensörü ve LED'i Ayarlama:

tempPin = 'A0';%voltajı sıcaklığa çeviren isimsiz fonksiyon tempCfromVolts = @(volt) (volt-0.5)*100; örneklemeSüresi = 5; %saniye. Örnekleme için ne kadar süre örneklemek istiyoruzInterval = 1; %Sıcaklık okumaları arasında kaç saniye var %örnekleme zamanlarının vektörünü ayarlayın örneklemeZamanı = 0:samplingInterval:samplingDuration; %süre ve aralığa göre örnek sayısını hesapla numSamples = length(samplingTimes); %preallocate temp değişkenleri ve depolayacağı okuma sayısı için değişken tempC = sıfırlar(numSamples, 1); tempF = tempC; %Sıcaklık okumalarının önceden belirlenmiş bir sayısını almak için bu sefer bir for döngüsü kullanacağız

for döngüsü:

indeks = 1:numSamples için %tempPin'deki voltajı okuyun ve değişken voltlarda saklayın volts = readVoltage(a, tempPin); tempC(indeks) = -1*tempCfromVolts(volt+0.3); tempF(indeks) = tempC(indeks)*(9/5)+32; %O anki sıcaklık okumasını bildiren biçimlendirilmiş çıktı fprintf('%d saniyedeki sıcaklık %5.2f C veya %5.2f F.\n', … sampleTimes(index), tempC(index), tempF(index)); %not edin, bu görüntü çıktısı, kodu düz bir komut dosyası mfile'sine kopyalayıp yapıştırmadığınız sürece, kod yürütüldükten sonra yalnızca bir kerede görünür hale gelir. duraklama(samplingInterval) sonraki numune sonuna kadar %delay

Ardından, Termostat'ı Manuel veya Otomatik moda alıp almayacağınıza karar vermesi için kullanıcı menümüzü oluşturuyoruz. Kullanıcı iki seçenekten birini seçmezse de bir hata kodu oluştururuz.

Manuel mod menüsü, kullanıcının termostat sıcaklığı için bir sayı ayarlamasını gerektirir, ardından okumalara göre evi ısıtır, evi soğutur veya boşta kalır. Kodun bu bölümünü ayarlamak için, sıcaklık sensöründen gelen sıcaklık okumalarını kullandınız ve sıcaklık okuması ayarlanan sıcaklıktan yüksek olduğunda evi soğutacak ve sıcaklık okuması ayarlanan sıcaklıktan daha düşük olduğunda evi ısıtacak bir kod oluşturdunuz.

Sıcaklık okumalarına sahip olduğunuzda, sıcaklık okuması ayarlanan sıcaklıktan daha yüksek olduğunda termostata evi soğutmasını ve sıcaklık okuması ayarlanan sıcaklıktan daha düşük olduğunda evi ısıtmasını söyleyecek kodu oluşturabilirsiniz. Prototip için, termostatın soğuması gerektiğinde mavi ışık, termostatın ısınması gerektiğinde kırmızı ışık yanar.

Menü Kurulumu:

seçenekler = {'Otomatik', 'Manuel'};imode = menu('Mod', seçenekler) if imode>0 h=msgbox(['Seçimleri seçtiniz{imode}]); else h=warndlg('Seçim yapmadan menüyü kapattınız') end waitfor(h);

Manuel mod, kullanıcının termostat için bir sıcaklık girmesini gerektirir, ardından sıcaklık sensöründen gelen okumalara dayanarak, ya evi ısıtmak için evi soğutmaya başlar. Sıcaklık sensörünün okuması ayarlanan sıcaklıktan yüksekse, evi soğutmaya başlayacaktır. Sıcaklık sensörünün okuması ayarlanan sıcaklıktan düşükse, evi ısıtır.

Manuel mod başlayacaktır:

if imode == 2 dlg_prompts = {'Hangi sıcaklığı tercih edersiniz?'}; dlg_title = 'Sıcaklık'; dlg_defaults = {'68'}; opts. Resize = 'açık'; dlg_ans = inputdlg(dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty(dlg_ans) h=warndlg('Inputdlg komutunu iptal ettiniz'); else temp_manual = str2double(dlg_ans{1}) %[Sıcaklık Düzenleme Ayarı slaytını aşağıya ekleyin] end

Manuel mod için if ifadesinin içinde, kullanıcının istediği ev sıcaklığını seçmesi için menü arayüzünü yazmanız ve ardından ev sıcaklığını düzenleyecek bir while ifadesi uygulamanız gerekir.

Sıcaklık Düzenleme Kurulumu:

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

Otomatik mod, manuel moddan daha fazla giriş gerektirir. Otomatik moda girdikten sonra kullanıcı termostatı için bir Normal ve bir Uzak sıcaklık ayarlayacaktır. Bunları seçtikten sonra termostatın hangi modda olduğuna bağlı olarak tekrar sıcaklık düzenleme moduna geçecektir.

Otomatik modu ayarlayın:

elseif imode == 1 dlg_prompts = {'Normal', 'Dışarıda'}; dlg_title = 'Sıcaklık Ayarları'; dlg_defaults = {'68', '64'}; opts. Resize = 'açık'; dlg_ans = inputdlg(dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty(dlg_ans) h=warndlg('Inputdlg komutunu iptal ettiniz'); else temp_normal = str2double(dlg_ans{1}) temp_away = str2double(dlg_ans{2}) end waitfor(h); %[Hareket Dedektörü Adımını aşağıya ekleyin]

Otomatik mod ayarları için de hareket sensörünü kurmamız gerekiyor. Hareket dedektörü hareketi aldığında, sıcaklığı mevcut sıcaklık ayarında tutacaktır, aksi takdirde uzak sıcaklık ayarına geçecektir.

Run_Motion_Detector(a, inf) while lightStr == 0 temp = temp_away while tempF writeDigitalPin(a, 'D6', 1) ayrıca fan için motorda pin kırmızı ışığı ne olursa olsun writeDigitalPin(a, 'D9', 1); end end while lightStr == 1 temp = temp_normal writeDigitalPin(a, 'D6', 1) %değiştir normal ışık hangi pinde ise temp tempF writeDigitalPin(a, 'D6', 1) pin kırmızı ışığı da ne olursa olsun fan için motor writeDigitalPin(a, 'D9', 1); son son

Kodun tamamı burada bulunabilir.

Önerilen: