manşet

Arduino ile Rfid Sİstem


Bu projede rfid  kartımın ID numarasını öğrenerek yazılıma atayıp , sisteme bu ID numaralı kart okutulunca ledleri yak , kart okutulmaz ise veya başka ID numaraya sahip kart okutulursa kartınızı okutunuz yazısını yazdırdım.  Program kodlarında okutulan kartların ID numaralarını SD karta kaydetmeside yazılıdır. İsterseniz pasif hale getirebilirsiniz , Serial monitörden de okunabileceği için isteğinize bağlı olarak lcd yi de pasif hale getirebilirsiniz.





 Projede kullanılan ekipmanlar:

  • Lcd(2,16)
  • Arduino mega
  • Sd kart shield
  • Rfid kart okuyucu ve kartı
  • Bol miktarda jumper kablo
  • Led-direnç




Dipçe: Sd kart bağlantıları  Arduino uno  veya mega ya göre değişmektedir. Bağlantılarını arduinonun kendi sitesinden bakabilirsiniz. 

SD kart kullanımı ve detayları  hakkında yabancı kaynaklar internette mevcut olup veya Coşkun TAŞDEMİR ' in kitabını temin edip  konu anlatımına ulaşabilirsiniz.

Rfid kütüphanesine buradan indirebilirsiniz.


    Rfid sistem bağlantıları 

  • Vcc -- 5 volt
  • GND
  • D0 -- Dijital pin 2 
  • D1 -- Dijital pin 3






Program Kodları: 


char deger;
float a=2352510;         // rfıd kart numaram kendi kartınızın numarasını buraya yerleştircekiniz
#include // I2C (Two wire) haberleşme
#include 
#include 
#include // Arduino LCD Kütüphanesini çağırdık.
#include 
WIEGAND wg; // rfıd için 
LiquidCrystal lcd(32,30,28,26,24,22); // lcd bağlantıları
int leds=47;
int led=45;


File dosya; // kayıt edicek dosyaya ait değişken

void setup () {
pinMode(led,OUTPUT);

pinMode(leds,OUTPUT);

Serial.begin(9600);
Wire.begin(); // I2C haberleşmesi
wg.begin();
lcd.begin(16, 2);

lcd.setCursor(4,0);
lcd.print("SD Kart");
lcd.setCursor(2,1);
lcd.print("Baslatiliyor");
delay(2000);
lcd.clear();

Serial.print("SD card Baslatiliyor!");
// SD kütüphanesinin çalışması içi SPI SS pininin çıkış olarak ayarlanması gerekiyor
// Bu Arduino UNO için 10, Mega içinse 53
pinMode(53, INPUT);

if (!SD.begin(53)) {
Serial.println("SD Kart Hatasi!");
lcd.setCursor(4,0); // Burada, bundan sonra yazılacak yazıların 0. satır ve 0. sütundan başlamasını istedik. Yani en sol üst köşe anlamına geliyor.
lcd.print("SD Kart ");
lcd.setCursor(5,1);
lcd.print("Hatası!");
delay(2000);
lcd.clear(); 
hataDurumuOlustu();
}

Serial.println("SD Kart baslatma basarili");
lcd.setCursor(0,0);
lcd.print("SD Kart Baslatma");
lcd.setCursor(4,1);
lcd.print("Basarili");
delay(2000);
lcd.clear(); 

/* Yazmak üzere ornek.txt adına bir dosya oluşturuyoruz */
dosya = SD.open("rfid.txt",FILE_WRITE); 

if(dosya) // dosya oluşturma başarılı ise
{
Serial.println("Dosya acma BASARILI");
lcd.setCursor(3,0);

lcd.print("Dosya Acma ");
lcd.setCursor(4,1);
lcd.print("Basarili");
delay(2000);
lcd.clear(); 
}
else // dosya açma başarısız
{
Serial.println("Dosya acma BASARISIZ");
lcd.setCursor(3,0);

lcd.print("Dosya Acma ");
lcd.setCursor(3,1);
lcd.print("Basarisiz");
delay(2000);
lcd.clear();
hataDurumuOlustu();
} 
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(500);
digitalWrite(leds,HIGH);
delay(1000);
digitalWrite(leds,LOW);

}

void loop () { 

lcd.setCursor(0,0);    // Burada, bundan sonra yazılacak yazıların 0. satır ve 0. sütundan başlamasını    //istedik. Yani en sol üst köşe anlamına geliyor.
lcd.print("Lutfen Kartinizi");
lcd.setCursor(4,1);
lcd.print("Okutunuz");
delay(1000);
lcd.clear();
/* 
Dosyaya verilerin kaydedilmesini sağlamak için
her seferinde dosyı açıp işlem sonunda kapatıyoruz
*/
dosya = SD.open("rfid.txt",FILE_WRITE); 
if(wg.available()) {

// DateTime zaman = RTC.now(); 
Serial.print(" Kart ID numarasi = ");
Serial.print(wg.getCode()); 
lcd.setCursor(0,0);
lcd.print("Kart ID Numarasi");
lcd.setCursor(4,1);
lcd.print(wg.getCode());
delay(2000);
lcd.clear();

dosya.print("Kart ID Numarasi");
dosya.print(wg.getCode()); 
if(wg.getCode()==a)
{
digitalWrite(leds,HIGH);
delay(500);
digitalWrite(leds,LOW);
delay(250);
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);

lcd.setCursor(0,0); // Burada, bundan sonra yazılacak yazıların 0. satır ve 0. sütundan başlamasını istedik. Yani en sol üst köşe anlamına geliyor.
lcd.print("Sistem Onaylandi");
delay(1000);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Onay Kodu");

lcd.setCursor(4,1);
lcd.print(a);
delay(1000);
lcd.clear();
}
else
{
digitalWrite(led,LOW);
digitalWrite(leds,LOW);

}

dosya.close(); //Verilen dosyaya kaydedilmesi için kapatıyoruz 
delay(1000);

}
else 
{
lcd.setCursor(0,0);
lcd.print("Lutfen Kartinizi");
lcd.setCursor(4,1);
lcd.print("Okutunuz");


}

}
void hataDurumuOlustu()
{
// Hata oluştuğunda programı olduğu yerde kilitliyoruz
while(1);
}





Hiç yorum yok:

Yorum Gönder