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ı
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);
}
- 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