kombi termostat yapımı

Kombi Termostat Yapımı

Daha önce kombi için kablosuz kombi termostat yapımı paylaşmıştım. Onu biraz daha zenginleştirerek gözede hitap etsin diye birkaç düzenleme ile yeni bir termostat yaptım. Açıkçası potansiyometrenin dengesiz çalışması beni sinir ediyordu o yüzden buton ile yapmaya karar verdim. Detaylar konu devamında..

Kombi Termostat Yapımı

Daha önce yapmış olduğum kombi termostatına buradan ulaşabilirsiniz.Aslında çok daha güzel fikirlerim vardı termostat için uzaktan yönetme vs gibi ama malum evde büyüklerimiz olduğu için teknolojiyi son anlamda kullanamıyoruz. Bu nedenle butonlu basit bir kullanım sağlamak için bu versiyonu gerçekleştirdim. 3 boyutlu yazıcı aldığım için bu konuda çok faydası oldu diyebilirim. Uğraşmadan hazır olarak kutuya malzemeleri kolayca yerleştirebiliyoruz.

Malzemelere ve kodlamalara geçmeden önce görsel olarak ne yapmışız bir bakalım.

kombi termostat yapımı

Önceki termostat adaptör ya da 9v pil ile çalışmak zorundaydı. Lcd ekranlı modellerde 9v pil çok dayanmıyor bu yüzden bende direk 220v bağlayabileceğim bir termostat planladım. Yani ister prizden kablo çekin sabitleyin isterseniz fiş yapın direkt prize bağlayın. Bu projede teyp fişi ile tak çıkar şeklinde olacak ve 220 voltu içindeki mini devreyle 5 volta düşürecek şekilde yaptım.

5 volta düşüren mini devre;

220 Voltu 5 Volta Çevirme

Şimdi malzemelere geçelim:

  1. 220v to 5v devre
  2. teyp kablosu
  3. teyp giriş soket
  4. plastik proje kutusu
  5. arduino pro mini
  6. ısı nem ölçer sensör
  7. 10k mini potansiyometre
  8. 2 adet push buton

Bağlantı şemaları

Verici:

Kombi Termostat Yapımı

 

 

Alıcı:

Kombi Termostat Yapımı

 

Pin Bağlantıları:

Verici:

Arduino pro mini

2 – buton

3 – verici data pinine

4 –  buton

5 – dht11 sıcaklık nem sensörü data pinine

7 – lcd ekran 4.pine

8 – lcd ekran 6

9 – lcd ekran 11

10 – lcd ekran 12

11 – lcd ekran 13

12 – lcd ekran 14

2 adet potansiyometre kullanıyorum 10k 1k bunlardan 10k olanı ekranı ayarlamak için orta bacağını lcd ekranın 3.pinine

diğerini ise ekran ışık şiddetini azaltıp artırmak için orta bacağını 15.pine bağlıyorum. Bağlantı şemasını incelerseniz daha iyi anlayabilirsiniz.

 

Alıcı:

Arduino pro mini

2 – led uzun bacak

3 –  alıcı data pini

4 – röle in pini

 

 

 

Şimdi görsellerle nasıl bağlantılar yapmışım buna bakalım.

kombi termostat yapımı kombi termostat yapımı kombi termostat yapımı kombi termostat yapımı kombi termostat yapımı kombi termostat yapımı

kombi termostat yapımı

kombi termostat yapımı

 

kombi termostat yapımı kombi termostat yapımı kombi termostat yapımı

 

Şimdi termostat nasıl çalışıyor kodlamasına bakalım:

Verici Kodları:

/* 433 mhz kablosuz kombi termostatı yapımı
   Ağustos 2019*/
   
 /* www.orcunakyol.com.tr */
 

#include "DHT.h" //kütüphaneyi içeri alıyoruz
#define DHTPIN 5 //sıcaklığı okuduğumuz data pini
#define DHTTYPE DHT11 // dht hangi verisyon olduğunu yazıyoruz üzerinde yazar
DHT dht(DHTPIN, DHTTYPE);  //dht kısa ismini ve pinini veriyoruz.
int b,c,d;        //  Kullanacağımız sıcaklık nem değişkenler.

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);

#include <VirtualWire.h> // Bu kartın arduino ile çalışabilmesi için gerekli kütüphane yazı içinde bulabilirsiniz.
char*mesaj; // burada bir char tanımlıyoruz göndereceğimiz mesajı bunun içine yazarak göndereceğiz.
char*ileti;

//buton kısmı

const int buton = 2; // artırma butonu
const int buton_2= 4; //azaltma butonu
int sayac = 15; // sayımızı tutacak değişken 
int butonDurumu = 0; // ilk butonu sıfırlıyoruz basılı olarak görünce 1 olacak
int sondurum = 0; // butonu tekrar sıfırlıcaz ki saymasın bi daha
int butonDurumu_2 = 0; //bunlarda ikinci buton için aynı şeyler
int sondurum_2 = 0;

//buton kısmı bitti.

int ekrana_yazma=25;
int lcd_yazma=14;
 
void setup() {
  
dht.begin(); //dht haberleşmeyi açtık
pinMode(buton,INPUT);
pinMode(buton_2, INPUT);
Serial. begin(9600); 
   vw_set_ptt_inverted(true);
   vw_set_tx_pin(3); // vericideki data yazan pini bağladığımız pin numarası.
   vw_setup(4000);
   ileti="5";
   b=dht.read();   // dht11 kontrol
c=dht.readTemperature(); // sıcaklığı c ye aktardık
d =dht.readHumidity();  // nemi d ye aktardık  
lcd.begin(16, 2); //lcd ekrana yazıyoruz
lcd.setCursor(0, 0);
lcd.print("Oda:");
lcd.print(c);
lcd.print("  Nem: %");
lcd.print(d);
lcd.setCursor(0,1);
lcd.print("istenilen:");
lcd.print(sayac);
}
 
void loop() {

butonDurumu = digitalRead(buton); 
butonDurumu_2 = digitalRead(buton_2); 
if (butonDurumu != sondurum) { 
if (butonDurumu == HIGH) { 
sayac++; 
Serial.println(sayac);
} 
delay(50); 
} 
if (butonDurumu_2 != sondurum_2) { 
if (butonDurumu_2 == HIGH) { 
sayac--; 
Serial.println(sayac); 
} 
delay(50); 
} 
sondurum = butonDurumu;
sondurum_2 = butonDurumu_2;
 
b=dht.read();   // dht11 kontrol
c=dht.readTemperature(); // sıcaklığı c ye aktardık
d =dht.readHumidity();  // nemi d ye aktardık  



  if(ekrana_yazma != c || lcd_yazma!=sayac){
    Serial.println(c);
    lcd.begin(16, 2); //lcd ekrana yazıyoruz
lcd.setCursor(0, 0);
lcd.print("Oda:");
lcd.print(c);
lcd.print("  Nem: %");
lcd.print(d);
lcd.setCursor(0,1);
lcd.print("istenilen:");
lcd.print(sayac);
    ekrana_yazma=c;
    lcd_yazma=sayac;
  }
  
  //Burada istenilen sıcaklık, oda sıcaklığından büyük ise kombi çalışır değilse çalışmaz.
  if (sayac > c) {
    mesaj = "1" ; //kombi çalışma mesajı.
    gonder();
  } 
  else if (sayac < c){
    mesaj="0"; //kombi kapat, kapalı kalmaya devam et.
    gonder();
  }
}


void gonder (){

if (ileti != mesaj){
   Serial.println(mesaj);
   vw_send((uint8_t *)mesaj, strlen(mesaj)); //hazırladığımız mesaj değişkenindeki içeriği butona basılma durumuna göre alıcıya gönderdik.
   vw_wait_tx();
   ileti = mesaj;
   delay(100);
}
}

 

Alıcı Kodları:

/* 433 mhz kablosuz kombi termostatı yapımı
   Ağustos 2019*/
   
 /* www.orcunakyol.com.tr */



#include <VirtualWire.h>  // Bu kartın arduino ile çalışabilmesi için gerekli kütüphane yazı içinde bulabilirsiniz.
char*mesaj;  // // burada bir char tanımlıyoruz alacağımız mesajı bunun içine yazarak göreceğiz.
int led=2; //yanacak olan ledi 2.pine bağlıyoruz.
int kombi=4;
 
void setup() {
pinMode(led,OUTPUT);
pinMode(kombi, OUTPUT);
digitalWrite(kombi, HIGH);
 
    vw_set_ptt_inverted(true);
    vw_set_rx_pin(3); // vericideki data yazan pini bağladığımız pin numarası.
    vw_setup(4000);
    vw_rx_start();
}
 
void loop() {
    uint8_t buf[VW_MAX_MESSAGE_LEN];  // gelen mesajı tanımlıyoruz.
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    if (vw_get_message(buf, &buflen)) // Eğer gelen mesaj var ise içerisine gir.
    {
         if(buf[0]=='1'){ //mesaj 2 ise ledi yak
         digitalWrite(led,HIGH);
         digitalWrite(kombi, LOW);
         delay(100);
         }
         if(buf[0]=='0'){ //gelen mesaj 5 ise söndür sönük kalmaya devam et.
          digitalWrite(led,LOW); 
          digitalWrite(kombi,HIGH);
          delay(100); 
         }         
   }
    
}

 

Bu video ile çalışma testini izleyebilirsiniz.

İlginize teşekkür eder, sorularınızı ve destek yorumlarınızı beklerim. Sevgiyle kalın..

 

46 Yorum

SENDE YORUM EKLE..

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

The maximum upload file size: 5 MB. You can upload: image. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here

  1. iyi günler güzel bir proje yapmışsınız elinize sağlık ben yapmış olduğunuz devreyi arduinoya yükler sürekli hata ile karşılaşıyorum hata kodu iseArduino:1.8.10 (Windows 7), Kart:”Arduino Nano, ATmega328P (Old Bootloader)”

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal 0xc0000005 code=0x0 addr=0x0 pc=0x7855fb]

    goroutine 1 [running]:
    github.com/arduino/arduino-cli/legacy/builder.ResolveLibrary(0x130d85a0, 0x1341c903, 0x5, 0x1341c903)
    /home/jenkins/workspace/arduino-builder-all-cross-cli-inception/src/github.com/arduino/arduino-cli/legacy/builder/resolve_library.go:64 +0x14b
    github.com/arduino/arduino-cli/legacy/builder.findIncludesUntilDone(0x130d85a0, 0x13348980, 0x88ed00, 0x131c06f0, 0x1337e2f8, 0x13325800, 0x0)
    /home/jenkins/workspace/arduino-builder-all-cross-cli-inception/src/github.com/arduino/arduino-cli/legacy/builder/container_find_includes.go:358 +0x3b6
    github.com/arduino/arduino-cli/legacy/builder.(*ContainerFindIncludes).Run(0xdebc68, 0x130d85a0, 0xdebc68, 0x0)
    /home/jenkins/workspace/arduino-builder-all-cross-cli-inception/src/github.com/arduino/arduino-cli/legacy/builder/container_find_includes.go:152 +0x3e5
    github.com/arduino/arduino-cli/legacy/builder.runCommands(0x130d85a0, 0x13065e1c, 0x20, 0x20, 0x409a01, 0x3ffff, 0x0)
    /home/jenkins/workspace/arduino-builder-all-cross-cli-inception/src/github.com/arduino/arduino-cli/legacy/builder/builder.go:210 +0xbd
    github.com/arduino/arduino-cli/legacy/builder.(*Builder).Run(0x13071f40, 0x130d85a0, 0xdebbb4, 0x13042c80)
    /home/jenkins/workspace/arduino-builder-all-cross-cli-inception/src/github.com/arduino/arduino-cli/legacy/builder/builder.go:117 +0xb9c
    github.com/arduino/arduino-cli/legacy/builder.RunBuilder(…)
    /home/jenkins/workspace/arduino-builder-all-cross-cli-inception/src/github.com/arduino/arduino-cli/legacy/builder/builder.go:226
    main.main()
    /home/jenkins/workspace/arduino-builder-all-cross-cli-inception/src/github.com/arduino/arduino-builder/main.go:398 +0x6d2
    C:\Users\casper\Desktop\arduino-1.8.10\arduino-builder, 2’i döndürdü
    Arduino Nano kartı için derleme hatası.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    böyle bir hata ile karşılaşıyorum yardım edermsiniz

  2. Merhaba,
    ekran görüntusu olarak hatayı atarsanız daha iyi olur birde kullandığınız arduino nano ise atmega iki cip içinde deneyin eski yazılım olabilir ya da olmayabilir.

    1. Buraya eklerseniz bi yere upload edip iyi olur aynı sorunu yaşayan olursa çözmüş oluruz.

    1. hangi arduino kullanıyorsunuz araçlar kısmındaki ayarlarını doğru mu arduino nano seçili mi işlemci doğru mu gibi

  3. Aynı sorunu bende yaşıyorum emin bey in gönderdiği sorunu bence youtube kanalınızada bu proje hakkında daha detaylı bir video paylaşmalısınız

    1. video olarak hazirlicaktim aslında ama yoğun is hayatımdan dolayı firsat olmadi. yükleme ayarlarınızı kontrol edin

  4. orçun bey hangi dht kütüphanesini kullanıyorsunuz büyük ihtimal ben farklı kütüphane kullandığım için oluyor

  5. Orçun Bey merhabalar ben üniversite projesi olarak aldım bu projeyi ama yeterli bilgiye sahip değilim o yüzden bana yardımcı olur musunuz acaba cidden çok gerekli ulaşmak isterseniz ferdi.inanc.96@gmail.com mail adresim mailinizi bekliyor olacağım

    1. Bağlantılar son paylaştığım konuda var neyi nereye takacağınız şema ile gösteriliyor onun haricinde sorun olursa buraya yazın yardımcı olabilirsem yaparım onun haricinde benimde çok fazla vaktim olmuyor.

  6. orçun bey iyi günler göndermiş oldugunuz arduino kütüphanelerini denedim ama derleme yaparken büyük ihtimalle kütüphanelerden dolayı kod hata vermektedir kodları nasıl yaptığınıza dair bir yazı ya da video bulunsa ben ve benim gibi yapacak olan için büyük kolaylık olur

    1. Aldığınız hatayı gönderin bakalim kütüphane ile alakalı olduğunu sanmıyorum. dht11 basit bir olay. hataya bakarsak belki çözebiliriz

    1. Adafiruit kütüphanesi de mi ekli en üst kısımda ? çift olan kütüphaneleri teke indir.

      Kütüphane olarak
      LiquidCrystal.h
      DHT.h
      VirtualWire.h

      bunları kullanın google da ararsanız direkt bu adlarda github üzerinden bulabilirsiniz.

  7. Çift olan kütüphane i2c lcd ye ait github üzerinden dht.h kütüphanesini indirdim kurdum ama sürekli bu hatayı vermekte

    1. DHT sensör kütüphanenle alakalısorun var bence hepsini sil sadece dht.h olan ekle master vs değil

  8. orçun bey yardımlarınız için teşekür ederim projemi yaptım yapacak arkadaşlara yardım etmek için dht kütüphanesini github üzeinden indirsinler kodta küçük bir hata var
    void gonder (){
    if (ileti != mesaj){
    Serial.println(mesaj);
    vw_send((uint8_t *)mesaj, strlen(mesaj)); //hazırladığımız mesaj değişkenindeki içeriği butona basılma durumuna göre alıcıya gönderdik.
    vw_wait_tx();
    ileti = mesaj;
    delay(100);
    }
    iletinin önümdeki ünlemi kaldırılılması gerekmektedir kaldırılmasa cihaz açılıyor ama kapatmıyor orçun bey yardımlarınız için tekrar teşekür ederim

  9. merhabalar kablosuz oda termostatları üzerine araştırma yaparken sizin projenizi gördüm fakat arduino bilgim sıfır olduğundan denemeye çekiniyorum. az çok elim havya tutar sizden ricam malzemeleri tam detaylı yazmanız ve yapmış olduğunuz bu projenin çekim gücü nedir sinyal sorunu yaşanırmı şimdiden teşekkürler.

  10. Merhaba Mehmet bey bu proje için az yer kapladığı icin 2 adet arduino nano ya da pro mini
    Ama ben nano yu tercih ederdim 2×16 lcd ekran 1 adet röle modülü 1 adet 433mhz rf alıcı verici 2 adet push buton ve 10 k pot çekim gücü için ise alıcı ve vericinin antenlerini güzel yaparsanız iyi çekiyor benim evimde 10-15 cm duvardan ve 3-4 metre uzaklıktan açıp kapatmaktadır

  11. ORÇUN bey merhaba güzel bir çalışma olmuş tekrarlamak istiyorum acaba yazılıma bir ek yapabilirmisiniz verici kısmına 2 led eklesek kombi çalışmıyorken yeşil led yansa kombi çalışıyorken kırmızı yansa bunu yazılımda nasıl yapabiliriz

  12. Orcun Bey Merhaba Devreyi tamamladım.Kurulumda hata vs herhangi bir sorun yaşamadım. Ancak display de herhangi bir yazı gelmedi.bom boş Ayar felan uğraştım ama çıkmadı herhangi bi yazı. Mesaj atmak için twitterden ekleidm ama mesaj atamadım oradan.

    1. Merhaba,
      displayde çıkmıyorsa 10k potansiyometre ayarinizi değiştirin. pinlerin dogru takildigina emin olun.

  13. Orçun Bey çalıştırdım devreyi ancak haberleşme olmadı. (Bendeki alıcı vericiden kaynaklı olabilir başka devre üzerinde onu test etmem gerekecek)

    Bu sistem elektrik gidip geldiğinde kötü.Çünkü son ayarlı dereceyi hafızasında tutmuyor.(15 derecede gelşyor açıldığında)

    Buçuklu derece olsa daha iyi olurdu sanki.

    Birde kombi ayarlanan derecenin 2 yada 3 derece üstünde kapanıp. Ayarlanan derecenin 1 derece altında çalışması daha verimli olur gibi (çoğu termostat böylepiyasadaki)

    Keşke günlük saatlik ayarlama şeklinde imkanımız olsa.

    Zaman kvramını aklında tutması için bir sensör daha konulabilir.

    Bunları eksik diye söylemiyorum.Çok güzel bir proje çıkarmışsın. Arduinoya senin Bu projene özenerek başladım ben 🙂

    Ellerine sağlık. Olurda versiyon 3 yapar bunları güncellersen bizimle paylaşır mısın.
    Bn kodlama işini şuan için kopy paste ile hallediyorum.Daha tam öğrenemedim. Ama öğrenirsem senin projeni geliştirip bu eksik kısımları eklemek istiyorum.

    1. Haberleşmenin olmamasını birçok şey etkiler kontrol etmeniz gerekiyor adım adım. Alıcı vericide sorun olabilir, pinler ya da bağlantılar hatalı olabilir.
      Onu hafızaya alabiliriz eprom üzerinde kayıt tutabiliriz ama ben gerek görmedim özellikle elektrik gittiğinde çalışmasını istemediğim için 15 ama yapılmayacak bir şey değil.
      Buçuklu dereceyi şuan evde kullanıyorum çok da bir şey değişmiyor aslında buçuk yerine hatta ,10 ,20 şeklinde bile ayarlanabilir. Yeni versiyon çıkarırsam eklerim.
      Zaman programlama vs için malzeme sayısı artıyor masraf artıyor aynı zamanda kutunun büyümesi gerekiyor o yüzden istemedim.
      Bir sonrakini web tabanlı yapıp raspberry zero w kullanarak yapacağım evden işten her yerden kullanılacak şekilde planlıyorum.

      Kendinizi ve propjeyi geliştirmeniz dileğiyle.

  14. Hocam aynısı çift arduino uno ile olur mu bende normalde nodemcu var da 433 lük alıcı verici nodemcu ile uygun değil blynk ile yapacaktım.

    1. 2 nodemcu ile web arayüzlü de yapabilirsin dshs etkili olur ama biraz tecrübe ister. Uno ilede yapabilirsin o farketmez sadece uno kullaninca kutu daha büyük oluyor.

      1. Hocam hemen dönüş yaptığınız için teşekkür ederim 2 uno kullanıcam verici unoya ekstra esp8266 bağlayıp kodun içine blynk kodlarını atsam bu azaltma artırma butonlarına cep telefonumda blynk uygulaması ile de basabilir miyim bi yolu varmıdır yoksa hiç uğraşmayayımmı?

        1. Bu şartlarda bile stabil çalışması zor oluyor. denemek gerekiyor ama fazla ihtimal vermiyorum. iki nodemcu ile yapilsa daha etkili olur hem oda içinden hemde telefondan yönetilecek şekilde yazılabilir. Benim yaşadığım en büyük sorun dht11 dht22 düzgün sıcaklık ölçmüyor. Bir diger sorunda kombiyi ac komutunu onaylı yapmak gerekiyor bazen komut ulaşmıyor tekrar göndermesi gerekiyor bunun içinde komut gonder fonk. icine iletildigini karşılıklı olarak anlayacağı biseyler yazılmalı.

  15. Bende normalde ds18b20 var ekstra dht11 aldım haberleşme için de nrf24l01 aldım 2 tane garanti olsun diye bende yeni yeni başlıyorum bu işlere artık elimdekilerle en iyi ne yapabilirsem. nodemcu tek olduğu için 2. Almak istemedim fiyat artıyor diye.

  16. Hocam kolay gelsin yine ben 😊ben bu projeyi 2 arduino uno 433 lük alıcı verici ve ds18b20 ile yaptım Led yakma denemem başarılı oldu fakat butonda sıkıntı çekiyorum 10k direnç kullandım uzun basınca ancak algılıyor başka sitelere baktım 1k kullanmışlar yine uzun basınca ancak algılıyor bazen algılamıyor doğru da bağladım diye düşünüyorum sizce sorun nedir.

    1. Merhaba, butonlarla çok uğraştım bozuk olma ihtimali yüksek farklı butonlarla deneyin. Multimetre varsa kontrol edin. Kod içerisinde delay verdiğiniz süre ne kadar artarsa buton kontrolü o kadsr düşer delay sürelerini minimum tutun. Kolaylıklar diliyorum.

      1. Çok teşekkür ederim multimetre var kontrol edeyim delayları da azaltıcam.

  17. Hocam hayırlı akşamlar bir süredir bakmamıştım projeye bugün yine el attım ds18b20 sıcaklık ölçerken unoyu kasıyor ve butona basmayı algılamıyor bende sizin projedeki dht11 alıp taktım koda tekrar bakınca sıcaklık değişiminde sadece 1 kez mesaj yolladığın gördüm bende şu satırı silerek
    if (ileti != mesaj){ her saniye mesaj göndermesini sağladım baya güzel oldu ama bir sorunum var ben anten siz rf433 almışım çekim mesafesi 1 m bile değil nasıl artırabilirim elimde çeşit çeşit kablo bulunur anten yapsam yada besleme kaynağını mı değiştirsem?

    1. Butonun kasma olayı zamanla ile alakalıdır. Yazdığınız kodu incelemek gerek. 433lerin anten yeri bar oraya bir bakir teli 17.3 cm kesin plastigini soyun kalem etrafina sarın anten olarak iş görür. Bazi üretim modellerinde işe yaramıyor şansıniza artık.

  18. projeyi yapmak isteyen arkadaşişlar dht kütüphanesini arduino ıde üzerinden kütüphaneleri yönet arama cubuguna DHT.h yazın adafruit kütüphanesini indirin ama eski versiyonları indirin yoksa çalışmamakta

  19. Hocam merhaba hersey cok guzel elınıze saglık bunda 2 derece yaklasık calısma aralıgı var bunu 10 dereceye cekebılırmıyız yanı calısmasını ıstedıgımız sıcaklık ornek 30 derece durmasını ıstedıgımız sıcaklık da 40 derece bunu nasıl yapabılrız yardımcı olursanız sevınırım. şimdiden tesekkurler

    1. Merhabalar,

      if (sayac > c)

      Bu kısımdan istediğiniz aralığı belirleyebilirsiniz örneğin 19 derece için

      if (sayac > (c+10) ) şeklinde kullanabilirsiniz.

  20. güzel görünüyor fakat bir önerim var aynı projeden iki tane yaparsak iki ayrı katta kombi olduğunu varsayarsak yada yakınlarda birisi aynısını yaptığını varsayarsak frekansalar biribirine karışacaktır.
    bu nedenle kodlara şöyle bir kimlikleme eklemek daha mantıklı olur…

    verici devresi kodları
    #include “DHT.h” //kütüphaneyi içeri alıyoruz
    #define DHTPIN 5 //sıcaklığı okuduğumuz data pini
    #define DHTTYPE DHT11 // dht hangi verisyon olduğunu yazıyoruz üzerinde yazar
    DHT dht(DHTPIN, DHTTYPE); //dht kısa ismini ve pinini veriyoruz.
    int b, c, d; // Kullanacağımız sıcaklık nem değişkenler.

    #include
    LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

    #include // Gerekli kütüphane

    char* mesaj;
    char* ileti;
    const char* kimlik = “A”; // Bu cihaza özgü kimlik, örneğin “A” veya “B” gibi olabilir

    //buton kısmı
    const int buton = 2; // artırma butonu
    const int buton_2 = 4; //azaltma butonu
    int sayac = 15; // sayımızı tutacak değişken
    int butonDurumu = 0;
    int sondurum = 0;
    int butonDurumu_2 = 0;
    int sondurum_2 = 0;

    //buton kısmı bitti
    int ekrana_yazma = 25;
    int lcd_yazma = 14;

    void setup() {
    dht.begin(); //dht haberleşmeyi açtık
    pinMode(buton, INPUT);
    pinMode(buton_2, INPUT);
    Serial.begin(9600);
    vw_set_ptt_inverted(true);
    vw_set_tx_pin(3); // vericideki data yazan pini bağladığımız pin numarası.
    vw_setup(4000);
    ileti = “5”;
    b = dht.read();
    c = dht.readTemperature(); // sıcaklığı c ye aktardık
    d = dht.readHumidity(); // nemi d ye aktardık
    lcd.begin(16, 2); //lcd ekrana yazıyoruz
    lcd.setCursor(0, 0);
    lcd.print(“Oda:”);
    lcd.print(c);
    lcd.print(” Nem: %”);
    lcd.print(d);
    lcd.setCursor(0, 1);
    lcd.print(“istenilen:”);
    lcd.print(sayac);
    }

    void loop() {
    butonDurumu = digitalRead(buton);
    butonDurumu_2 = digitalRead(buton_2);
    if (butonDurumu != sondurum) {
    if (butonDurumu == HIGH) {
    sayac++;
    Serial.println(sayac);
    }
    delay(50);
    }
    if (butonDurumu_2 != sondurum_2) {
    if (butonDurumu_2 == HIGH) {
    sayac–;
    Serial.println(sayac);
    }
    delay(50);
    }
    sondurum = butonDurumu;
    sondurum_2 = butonDurumu_2;

    b = dht.read();
    c = dht.readTemperature();
    d = dht.readHumidity();

    if (ekrana_yazma != c || lcd_yazma != sayac) {
    Serial.println(c);
    lcd.begin(16, 2);
    lcd.setCursor(0, 0);
    lcd.print(“Oda:”);
    lcd.print(c);
    lcd.print(” Nem: %”);
    lcd.print(d);
    lcd.setCursor(0, 1);
    lcd.print(“istenilen:”);
    lcd.print(sayac);
    ekrana_yazma = c;
    lcd_yazma = sayac;
    }

    // Burada istenilen sıcaklık, oda sıcaklığından büyük ise kombi çalışır değilse çalışmaz.
    if (sayac > c) {
    mesaj = “1”; // kombi çalışma mesajı.
    gonder();
    }
    else if (sayac < c) {
    mesaj = "0"; // kombi kapat.
    gonder();
    }
    }

    void gonder() {
    // Kimliği mesaj ile birleştiriyoruz
    char gonderilecekMesaj[10];
    sprintf(gonderilecekMesaj, "%s%s", kimlik, mesaj);

    if (strcmp(ileti, gonderilecekMesaj) != 0) {
    Serial.println(gonderilecekMesaj);
    vw_send((uint8_t *)gonderilecekMesaj, strlen(gonderilecekMesaj));
    vw_wait_tx();
    ileti = gonderilecekMesaj;
    delay(100);
    }
    }

    bu da alıcı devresi kodları

    #include

    const char* kimlik = “A”; // Bu alıcının tanıyacağı kimlik, örneğin “A” olarak belirlenmiş
    int led = 2; // Yanacak olan ledin bağlı olduğu pin
    int kombi = 4; // Kombiyi kontrol eden pin

    void setup() {
    pinMode(led, OUTPUT);
    pinMode(kombi, OUTPUT);
    digitalWrite(kombi, HIGH);

    vw_set_ptt_inverted(true);
    vw_set_rx_pin(3); // Vericideki data yazan pini bağladığımız pin numarası
    vw_setup(4000);
    vw_rx_start();
    }

    void loop() {
    uint8_t buf[VW_MAX_MESSAGE_LEN]; // Gelen mesajı saklayacak buffer
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) { // Eğer gelen mesaj varsa
    // Mesajın kimliğini kontrol ediyoruz
    if (buf[0] == kimlik[0]) { // İlk karakter doğru kimlikse
    if (buf[1] == ‘1’) { // Kimlikten sonraki karakter “1” ise kombiyi aç
    digitalWrite(led, HIGH);
    digitalWrite(kombi, LOW);
    delay(100);
    } else if (buf[1] == ‘0’) { // Kimlikten sonraki karakter “0” ise kombiyi kapat
    digitalWrite(led, LOW);
    digitalWrite(kombi, HIGH);
    delay(100);
    }
    }
    }
    }

    1. Tabi ki mümkün genelde kullanılmıyor düşük bir ihtimal olduğu için. alıcı verici mesaj kimlikleri farklı olsa o bile yeter o mesajı istese de almayacaktır alıcı.

  21. orçun bey merhaba elinize saglık sistem iyi çalısyor. sizden 2 isteğim olacak.
    1. verici kısmına bir led ekleyebilirmiyiz kombi calısınca yansın durunca sonsün gibi(alıcı kısmında oldugu gibi)
    2. birde lcd deki sıcaklık ve nem değerlerini 2 haneli gorebilme sansımız olurmu mesala 18,50^ gibi

    simdiden tesekkürler.

SENDE YORUM EKLE..

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

The maximum upload file size: 5 MB. You can upload: image. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here