Arduino ile bir odayı tıpkı akıllı eve çevirme

doktorlevi

Üye
Katılım
23 Kas 2020
Mesajlar
25
Puanları
1
Selamlar arkadaşlar; ben odamdaki elektronik eşyaları tıpkı bir akıllı evde olduğu gibi kontrol etmek, izinsiz çalışmamalarını sağlamak, blueetooth ve uzaktan internetle açıp kapama rfid ile bu tarz kontrollere erisim izni verme ve lcd ile neyin açılıp neyin kapalı olduğunu görmek istiyorum. Projenin yarısında iken kodlarda sanırım bir hata var ama çözemiyorum. Acaba yardım edebilir misiniz?

Kodlar ve sorun

Sorun: daha 220v bağlı deilken sadece arduinodan güç ve sinyal pini bağla olan röle ben daha Arduinoyu açar açmaz aşırı hızlı bir şekilde açılıp kapanıyor rfid okumam veya butonlar üzerinden kapatmam işe yaramıyor anlayamadım. RFID ise okunmuyor normalde okunduğunda lcd üzerinde giriş başarılı yazması gerekirken hiçbir şey yazmıyor ve üstüne butonlara bu nedenle erişim sunamıyorum.

Kodlar ise;

C++:
#include <dht11.h>
#include <LiquidCrystal.h>
#include <SPI.h>
#include <RFID.h>

RFID rfid(32, 33);
#define dhtpin 8
int buton1 = 9;
int buton2 = 10;
int buton3 = 49;
int buton4 = 48;
int role = 51;
int buzzer = 50;
int kilit;
dht11 DHT11;
String readString;
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

void setup() {
lcd.begin(16,2);
pinMode(buton1, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(buton2, INPUT);
pinMode(buton3, INPUT);
pinMode(buton4, INPUT);
pinMode(role, OUTPUT);
  SPI.begin();
  rfid.init();
digitalWrite(buzzer, LOW);
digitalWrite(role, HIGH);
delay(1000);
digitalWrite(buzzer, HIGH);
delay(3000);
digitalWrite(buzzer, LOW);
lcd.print("HOS GELDİN.");

Serial.begin(9600);


}

void loop() {
  int chk = DHT11.read(dhtpin);
  while (Serial.available()) {
    delay(3);
    char c = Serial.read();
    readString += c;
  }

if (rfid.isCard()) {


    if (rfid.readCardSerial()) {

      Serial.println("Kart Bulundu ID : ");
      Serial.print(rfid.serNum[0]);
      Serial.print(" , ");
      Serial.print(rfid.serNum[1]);
      Serial.print(" , ");
      Serial.print(rfid.serNum[2]);
      Serial.print(" , ");
      Serial.print(rfid.serNum[3]);
      Serial.print(" , ");
      Serial.print(rfid.serNum[4]);
      Serial.println(" ");
   
       if(rfid.serNum[0] == 83 &&  rfid.serNum[1] == 16 && rfid.serNum[2] == 223 && rfid.serNum[3] == 12 && rfid.serNum[4] == 144) {
        Serial.println("doğru kart");
        digitalWrite(buzzer, HIGH);
        delay(1000);
        digitalWrite(buzzer, LOW);
        lcd.clear();
        lcd.print("Giris Basarili");
        delay(1000);
        kilit = 1;
       }
       else{
        Serial.println("yok yanlış");
          digitalWrite(buzzer, HIGH);
        delay(1000);
        digitalWrite(buzzer, LOW);
        lcd.clear();
        lcd.print("Izinsiz giris");
        delay(1000);
        kilit = 0;
        }
    }
  }
  if (readString.length() >0) {
    Serial.println(readString);
    if(kilit == "1"){
    if (readString == "roleac")    
    {
     digitalWrite(buzzer, HIGH);
  delay(1000);
  digitalWrite(buzzer, LOW);
  digitalWrite(role, LOW);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Role acildi!");
  lcd.setCursor(0,1);
  lcd.print("1saat icinde kpnck");
      }
    if(readString == "rolekapa"){
    digitalWrite(buzzer, HIGH);
    delay(1000);
    digitalWrite(buzzer, LOW);
    digitalWrite(role, HIGH);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Role kapandi!");
}
   if(readString == "sicaklik"){
      digitalWrite(buzzer, HIGH);
  lcd.clear();
  delay(1000);
  digitalWrite(buzzer, LOW);
  lcd.setCursor(0,0);
  lcd.print("SICAKLIK:");
  lcd.setCursor(0,1);
  lcd.print((float)DHT11.temperature);}

  } else{
          digitalWrite(buzzer, HIGH);
        delay(1000);
        digitalWrite(buzzer, LOW);
        lcd.clear();
        lcd.print("Lutfen giris yapiniz");
        delay(1000);
    }readString="";}


   if(digitalRead(buton1) == 1 || digitalRead(buton1) == 1 || digitalRead(buton1) == 1 || digitalRead(buton1) == 1 ){
    if(kilit == 1){
if(digitalRead(buton1) == 1  ){
  digitalWrite(buzzer, HIGH);
  delay(1000);
  digitalWrite(buzzer, LOW);
  digitalWrite(role, LOW);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Role acildi!");
  lcd.setCursor(0,1);
  lcd.print("1 saat icinde kpnck");


  }

  if(digitalRead(buton2) == 1){
    digitalWrite(buzzer, HIGH);
    delay(1000);
    digitalWrite(buzzer, LOW);
    digitalWrite(role, HIGH);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Role kapandi!");

    }

if(digitalRead(buton3) == 1){
  digitalWrite(buzzer, HIGH);
  lcd.clear();
  delay(1000);
  digitalWrite(buzzer, LOW);
  lcd.setCursor(0,0);
  lcd.print("SICAKLIK:");
  lcd.setCursor(0,1);
  lcd.print((float)DHT11.temperature);

  }  

if(digitalRead(buton4) == 1){
  digitalWrite(buzzer, HIGH);
  delay(4000);
  digitalWrite(buzzer, LOW);
  lcd.clear();
  lcd.print("SISTEM KILITLENDI");
  kilit = 0;
  delay(5000);
  lcd.clear();
  lcd.print("...");
  }
  }else{  digitalWrite(buzzer, HIGH);
        delay(1000);
        digitalWrite(buzzer, LOW);
        lcd.clear();
        lcd.print("Lutfen giris yapiniz");
        delay(1000);}}
}


Bağlantılarda hata olabilir ama sırf bu nedenle onlarca kabloyu çıkartıp yeniden bağladım ek olarak çok karmaşık bir kablo düzeni var sayıdan dolayı hata olsada kolay bulunamıyor ama yinede dediğim gibi çıkartıp yeniden yaptım bağlantıları
 
Son düzenleme:
Röle çok hızlı anahtarlama yapıyorsa, rölenin bobin uçlarına 1000uF bir sığaç (kondansatör) bağlamamak yeterli olacaktır.

Burada kutuplu sığaç kullanılıyorsa, + ve - uçlara dikkat etmek gerekir.

role.png
 
Röle çok hızlı anahtarlama yapıyorsa, rölenin bobin uçlarına 1000uF bir sığaç (kondansatör) bağlamamak yeterli olacaktır.

Burada kutuplu sığaç kullanılıyorsa, + ve - uçlara dikkat etmek gerekir.

Ekli dosyayı görüntüle 68860
cevabın için teşekkür ederim ama sanırsam bu yazılımsal bir şey ama bir türlü bulamadım rölede ya da herhangi bir malzeme ile alakalı değil kablolomada da bir sorun yok sanırsam ama bir ütlrü bulamadım en başta rfid okumuyor normalde okuyan çalışan bir malzeme ama ne lcdde okuduğuna dair bir bilgi var ne de serial portta bir oynama var anlayamadım maalesef :(
rfid okumuyor maalesef oysaki bütün parçaları deneyip devreye soktum şu an sadece rfidyi test ediyorum bağlantısında bir sorun yok yazılım olarakta bu sefer sorun yok çünkğ sadece rfid için kodu deniyorum ama çalışmıyor maalesef :rolleyes:
 
Son düzenleme:
Öncelikle devre şeması olmadan ayrıntılı yorum yapmak mümkün değil.

Eğer hazır bir röle kontrol kartı değil normal röle kullanıyorsanız, diyelim ki düğmeye basınca röle tetiklensin istedim. Özellikle küçük rölelerde saniyede 50 kere aç kapa yapabilir. Bu nedenle harici bir sığaç kullanmak gerekiyor.

Hobi amaçlı bir uygulama ise Şebeke gerilimi ile uğraşmak yerine elektrikli cihazları kontrol etmek için 433 Mhz RF ASK uzaktan kumandalı priz kullanabilirsiniz.

Uygulamalar karmaşıklaştıkça parçalara bölmek faydalı olabilir.

Örneğin :

- Arduino ile 12volt röleyi açma kapama
- RFID kart okuyucu temel kullanım. Burada bir örnek var.
- RFID kart okuyucu ile röle tetikleme
- Arduino ile sıcaklık okuyucu kullanımı
- Arduino ile LCD kullanımı

Uzaktan elektrikli cihazları kontrol etmek için de benzer bir yol izlenebilir.

Örneğin:

- abc.com isimli bir sunucu üzerinde bir düğmeye basıldığında , Arduino'nun sayısal çıkışlarından bir tanesine bağlı olan ışığı yakıp söndürebilsin.

En sonunda bu her birinin doğru çalıştığından emin olduğumuz uygulamaları birleştirmek düşünülebilir.
 
Öncelikle devre şeması olmadan ayrıntılı yorum yapmak mümkün değil.

Eğer hazır bir röle kontrol kartı değil normal röle kullanıyorsanız, diyelim ki düğmeye basınca röle tetiklensin istedim. Özellikle küçük rölelerde saniyede 50 kere aç kapa yapabilir. Bu nedenle harici bir sığaç kullanmak gerekiyor.

Hobi amaçlı bir uygulama ise şebeke gerilimi ile uğraşmak yerine elektrikli cihazları kontrol etmek için 433 Mhz RF ASK uzaktan kumandalı priz kullanabilirsiniz.

Uygulamalar karmaşıklaştıkça parçalara bölmek faydalı olabilir.

Örneğin :

- Arduino ile 12volt röleyi açma kapama
- RFID kart okuyucu temel kullanım. Burada bir örnek var.
- RFID kart okuyucu ile röle tetikleme
- Arduino ile sıcaklık okuyucu kullanımı
- Arduino ile LCD kullanımı

Uzaktan elektrikli cihazları kontrol etmek için de benzer bir yol izlenebilir.

Örneğin:

- abc.com isimli bir sunucu üzerinde bir düğmeye basıldığında , Arduino'nun sayısal çıkışlarından bir tanesine bağlı olan ışığı yakıp söndürebilsin.

En sonunda bu her birinin doğru çalıştığından emin olduğumuz uygulamaları birleştirmek düşünülebilir.
Bu güzel cevabı yazdığınız için teşekkür ederim. Dediğiniz gibi yapıp her parça için ayrı ayrı dosya oluşturup en baştan kodlayarak tekrar test edeceğim. Daha sonra gene olmazsa kodları ve bir fritzing temasını tekrardan sizde kabul ettiğiniz takdirde bu konu altında tekrardan atarım. Teşekkürler sağlıklı günler dilerim :).

Öncelikle devre şeması olmadan ayrıntılı yorum yapmak mümkün değil.

Eğer hazır bir röle kontrol kartı değil normal röle kullanıyorsanız, diyelim ki düğmeye basınca röle tetiklensin istedim. Özellikle küçük rölelerde saniyede 50 kere aç kapa yapabilir. Bu nedenle harici bir sığaç kullanmak gerekiyor.

Hobi amaçlı bir uygulama ise şebeke gerilimi ile uğraşmak yerine elektrikli cihazları kontrol etmek için 433 Mhz RF ASK uzaktan kumandalı priz kullanabilirsiniz.

Uygulamalar karmaşıklaştıkça parçalara bölmek faydalı olabilir.

Örneğin :

- Arduino ile 12volt röleyi açma kapama
- RFID kart okuyucu temel kullanım. Burada bir örnek var.
- RFID kart okuyucu ile röle tetikleme
- Arduino ile sıcaklık okuyucu kullanımı
- Arduino ile LCD kullanımı

Uzaktan elektrikli cihazları kontrol etmek için de benzer bir yol izlenebilir.

Örneğin:

- abc.com isimli bir sunucu üzerinde bir düğmeye basıldığında , Arduino'nun sayısal çıkışlarından bir tanesine bağlı olan ışığı yakıp söndürebilsin.

En sonunda bu her birinin doğru çalıştığından emin olduğumuz uygulamaları birleştirmek düşünülebilir.

Dostum dediğin gibi yaptığımda beni epey şaşırtan bir sorunla karşılaştım. Kodlarda fark ettiysen 50, 51 gibi pinler var yani klon Arduino Mega kullanıyorum malum dijital pin sayısı yetmez ve bunu kullanıp tek tek kompanant ve sensörleri kontrol ederken RFID modülün tek başına halde de klon bir Arduino Mega'da çalışmadığını fark etmiştim o ysaki ben kablo kalabalığından ve en son RFID'yi denediğimden testimi klon bir Arduino Uno'da yapmıştım. Tahmin edilebiliceği gibi sorunsuz çalıştı. Şimdi senin dediğini yapıp, tüm kompanentlerin kodlarını ayrı ayrı yazıp sonradan birleştirme yapıp test ederken RFID okuyucunun klon Mega'da işe yaramadığını fark ettim acaba RFID kart 3.3v ile çalışırken ben yanlışlıkla 5v verip yaktım mı diye düşünüp tıpkı başta yaptığım gibi klon Arduino Uno'ya taktığımda aynı bağlantı ve kodla okuduğunu fark ettim. Yanlış hatırlamıyorsam ben bu Arduino Mega ile ekip arkadaşlarım ile RFID içeren bir proje yaptığımızda işe yarıyordu. Tabii ben bir süre ara vermiştim o sürede Arduinoya zarar vermiş olabilirler bilemiyorum ama sorunun kaynağının Arduino Mega kaynaklı olduğunu en azından buldum
 
Arduino'nun hakiki olup olmamasının o kadar fark edeceğini zannetmiyorum. Sadece USB bağlantısından TTL'e çeviren yonga farklı ise sürücüleri gerekebilir.

Benzer şekilde soru sorarken de uygulamanın tamamının kaynak kodunun ya da devre şemasını göndermek yerine sorun nereden kaynaklanıyorsa o kısmı tespit edip, sadece o kısmın kod örneğini ve devre şemasını paylaşmakta fayda var.
 
Arduino'nun hakiki olup olmamasının o kadar fark edeceğini zannetmiyorum. Sadece USB bağlantısından TTL'e çeviren yonga farklı ise sürücüleri gerekebilir.

Benzer şekilde soru sorarken de uygulamanın tamamının kaynak kodunun ya da devre şemasını göndermek yerine sorun nereden kaynaklanıyorsa o kısmı tespit edip, sadece o kısmın kod örneğini ve devre şemasını paylaşmakta fayda var.
Teşekkür ederim dostum şu ana kadar ki yardımların için ama baştan kodlayıp devredeki kablolamayı da sağlam şekilde yapıp Arduino'nun analog pinlerini dijital pin gibi kullanarak bütün devreyi tam sığdırdım(hiç dijital veya analog pin kalmasada tam sığdı). Fazla bir hata gözükmüyor artık sadece küçük güvenlik bugları var onları da kendim yaparım diye düşünüyorum yardımların ve tavsiyelerin için sağolasın İyi akşamlar
 

Forum istatistikleri

Konular
127,952
Mesajlar
913,874
Kullanıcılar
449,599
Son üye
Gksn

Yeni konular

Geri
Üst