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.
Ö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;
Şimdi malzemelere geçelim:
- 220v to 5v devre
- teyp kablosu
- teyp giriş soket
- plastik proje kutusu
- arduino pro mini
- ısı nem ölçer sensör
- 10k mini potansiyometre
- 2 adet push buton
Bağlantı şemaları
Verici:
Alıcı:
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.
Ş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..
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
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.
ekran görütüsünü e mail olarak mı atayım yoksa başka bir şekildemi
Buraya eklerseniz bi yere upload edip iyi olur aynı sorunu yaşayan olursa çözmüş oluruz.
yorum yaparken dosya ekleme seçeneği mevcut gönder butonu üzerinde.
Böyle bir hata ile karşılaşıyorum
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
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
video olarak hazirlicaktim aslında ama yoğun is hayatımdan dolayı firsat olmadi. yükleme ayarlarınızı kontrol edin
orçun bey hangi dht kütüphanesini kullanıyorsunuz büyük ihtimal ben farklı kütüphane kullandığım için oluyor
3 tane var deneyin
https://dosya.co/o7hyflfn4pqa/libraries.rar.html
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
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.
Usta peki bu termostatın v1 i için de bağlantnı şemaları aynı mı acaba ?
Neredeyse aynı mantık son yaptığımı yaparsan daha sağlıklı olur.
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
Aldığınız hatayı gönderin bakalim kütüphane ile alakalı olduğunu sanmıyorum. dht11 basit bir olay. hataya bakarsak belki çözebiliriz
.
,
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.
Çift olan kütüphane i2c lcd ye ait github üzerinden dht.h kütüphanesini indirdim kurdum ama sürekli bu hatayı vermekte
DHT sensör kütüphanenle alakalısorun var bence hepsini sil sadece dht.h olan ekle master vs değil
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
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.
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
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
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.
Merhaba,
displayde çıkmıyorsa 10k potansiyometre ayarinizi değiştirin. pinlerin dogru takildigina emin olun.
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.
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.
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.
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.
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ı?
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ı.
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.
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.
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.
Çok teşekkür ederim multimetre var kontrol edeyim delayları da azaltıcam.
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?
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.
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
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
Merhabalar,
if (sayac > c)
Bu kısımdan istediğiniz aralığı belirleyebilirsiniz örneğin 19 derece için
if (sayac > (c+10) ) şeklinde kullanabilirsiniz.
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);
}
}
}
}
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ı.
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.