Arduino İle RFID İle Açılıp Kapanan Led Yapma

Projeye Geçmeden Önce Biraz RFID Teknolojisinden Bahsedelim.RFID Genel Anlamıyla Nesnelerin Radyo Dalgaları İle Algılanmasını Tanımasını Sağlayan Bir Teknolojidir.Günümüzde RFID Akbil Sistemlerinde Ve İş-Okul Giriş Çıkışlarındaki Turnikelerde Rastlanmaktadır.

RFID Kartlarının Kendine Ait UID Numaraları Vardır.Her Kartta Farklı Olan Bu Numara Kartın Tanınmasını Sağlar.RFID Modülümüze Bu Kartı Okutunca RFID Modülü Kartın UID Numarasını Okur Ve Daha Önce Kayıtlıysa Yaptığımız Sistemi Çalıştırır.

Biz Bu Projemizde 2 Kart Kullanacağız Siz Akbil Kartlarınızıda Kullanabilirsiniz.Projede 1 Kart Ledi Açacak Başka Kart İse Ledi Kapatacak.

Gerekli Malzemeler:
•Arduino
•RFID RC522 Modülü
•2 Kart
•Led
•220 Ohm Direnç
•Jumper Kablolar

Öncelikle Resimdeki Bağlantıyı Yapalım
rfid
Şimdi Bu Kısmı Dikkatlice Okuyun
İlk Olarak Arduinoya Bu Kütüphaneyi Yüklüyoruz
Kütüphane: https://github.com/miguelbalboa/rfid
Arduino Programına Sağ Tık İle Basıyoruz
Dosya Konumunu Aç Diyoruz.
Açılan Yerdeki Libraries Kısmına Basıyoruz
Ve İndirdiğimiz Kütüphaneyi Oraya Atıyoruz.

Şimdi Kartları Arduinoya Tanıtmamız Gerekecek İlk Olara Bu Kodu Arduinoya Yükleyin:


#include <SPI.h>
#include <MFRC522.h>
#include <EEPROM.h>

#define RST_PIN 9
#define SS_PIN 10

byte readCard[4];
int successRead;

MFRC522 mfrc522(SS_PIN, RST_PIN);

MFRC522::MIFARE_Key key;

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  Serial.println("RFID KART KAYIT UYGULAMASI");
  Serial.println("--------------------------");
  Serial.println("Lutfen 1 numarali karti okutun");
  Serial.println();
  do {
    //okuma başarılı olana kadar getID fonksiyonunu çağır
    successRead = getID(); 
  }
  while (!successRead);
  for ( int i = 0; i < mfrc522.uid.size; i++ )
  {
    //kartın UID'sini EEPROM'a kaydet
    EEPROM.write(i, readCard[i] ); 
  }
  Serial.println("Kart EEPROM'a kaydedildi.");
  Serial.println();
  Serial.println("Lutfen 2 numarali karti okutun.");
  Serial.println();
  do {
    successRead = getID();
  }
  while (!successRead);
  for ( int i = 0; i < mfrc522.uid.size; i++ )
  {
    EEPROM.write(i + 4, readCard[i] );
  }
  Serial.println("Kart EEPROM'a kaydedildi.");
  Serial.println();
  Serial.println("Kart kayit islemi basarili!");
}

void loop()
{
}

int getID() {
  //yeni bir kart okunmadıysa 0 döndür
  if ( ! mfrc522.PICC_IsNewCardPresent()) { 
    return 0;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return 0;
  }
  Serial.print("Kart UID'si: ");
  //kartın UID'sini byte byte oku ve seri monitöre yaz
  for (int i = 0; i < mfrc522.uid.size; i++) {  //
    readCard[i] = mfrc522.uid.uidByte[i];
    Serial.print(readCard[i], HEX);
  }
  Serial.println("");
  //kart okumayı durdur ve 1 döndür (okuma başarılı)
  mfrc522.PICC_HaltA();
  return 1;
}

İlk Kartımızı Rfid Modülüne Yaklaştırıp Hızlıca Çekiyoruz.

Eğer Ekranda “Kart Eeprom’a Kaydedildi” Yazarsa İşlem Başarılıdır.

2.Kartı Rfid Modülüne Yaklaştırıp Çekiyoruz.
Eğer Ekranda “Kart Eeprom’a Kaydedildi” Yazarsa İşlem Başarılıdır.

Daha Sonra Arduinoya Bu Kodu Yüklüyoruz:

#include <SPI.h>
#include <MFRC522.h>
#include <EEPROM.h>

#define RST_PIN 9
#define SS_PIN 10
#define ledPin 7

MFRC522 mfrc522(SS_PIN, RST_PIN);

String lastRfid = "";
String kart1 = "";
String kart2 = "";

MFRC522::MIFARE_Key key;

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  pinMode(ledPin, OUTPUT);
  Serial.println("RFID KART OKUMA UYGULAMASI");
  Serial.println("--------------------------");
  Serial.println();
  //EEPROM'dan kart bilgisini oku
  readEEPROM();
}

void loop()
{
  //yeni kart okununmadıkça devam etme
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  //kartın UID'sini oku, rfid isimli string'e kaydet
  String rfid = "";
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    rfid += mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ";
    rfid += String(mfrc522.uid.uidByte[i], HEX);
  }
  //string'in boyutunu ayarla ve tamamını büyük harfe çevir
  rfid.trim();
  rfid.toUpperCase();
  
  if (rfid == lastRfid)
    return;
  lastRfid = rfid;

  Serial.print("Kart 1: ");
  Serial.println(kart1);
  Serial.print("Kart 2: ");
  Serial.println(kart2);
  Serial.print("Okunan: ");
  Serial.println(rfid);
  Serial.println();
  //1 nolu kart okunduysa LED'i yak, 2 nolu kart okunduysa LED'i söndür
  if (rfid == kart1)
  {
    digitalWrite(ledPin, HIGH);
    Serial.println("LED yandi.");
  }
  if (rfid == kart2)
  {
    digitalWrite(ledPin, LOW);
    Serial.println("LED sondu.");
  }
  Serial.println();
  delay(200);

}

void readEEPROM()
{
  //EEPROM'dan ilk kartın UID'sini oku (ilk 4 byte)
  for (int i = 0 ; i < 4 ; i++)
  {
    kart1 += EEPROM.read(i) < 0x10 ? " 0" : " ";
    kart1 += String(EEPROM.read(i), HEX);
  }
  //EEPROM'dan ikinci kartın UID'sini oku
  for (int i = 4 ; i < 8 ; i++)
  {
    kart2 += EEPROM.read(i) < 0x10 ? " 0" : " ";
    kart2 += String(EEPROM.read(i), HEX);
  }
  //Okunan stringleri düzenle
  kart1.trim();
  kart1.toUpperCase();
  kart2.trim();
  kart2.toUpperCase();
}
 

Artık 1.Kartı Modüle Yaklaştırınca Led Yanıcak 2.Kartı Yaklaştırınca Sönecektir.
Her Türlü Sorunuzu Yorum Olarak Bırakabilirsiniz.

  1. yucel 16 Kasım 2016 18:58

    hocam ben aynısını yaptım cok guzel calsıyor ben aynı uygulamadan uctane kart kaydedıp ucuylede aynı buzzere ses gondermek k ısıtıyorum 200 ms sonra kapatmak ısıtıyorum ve sureklı bu ıslemın devam etmesını ısıtıyorum kart ıdsını de ekrana yazdırmak ısıtıyorum kodlarınınz la bıraz oynadım tam ıstedıgım sonucu alamadım bu sekıl bır kod yazarsanaız cok makbule gecmıs olur

    Cevapla
  2. Robotbeyin 23 Nisan 2016 10:18

    Hocam yapacağım proje şöyle,
    Cizgi izleyen robot üzerinde rfid alıcı olacak, Robot üzerinde ki butonlar da hangisine basılır sa robot yoluna devam edecek ve o butonda tanımli karta gelince duracak.
    Kartlar durak görevi görecek yani , böyle bir projem var yardımcı olurmusunuz

    Cevapla
  3. Arduinocu 31 Ocak 2016 13:07

    ahmet bey başarılar
    #include
    #include
    #include
    yazan kütüphanelerin neler olduğunu belirtebilir misiniz.

    Cevapla
    • Ahmet Emin Dilben 31 Ocak 2016 14:39

      #include
      #include
      #include

      İyi Projeler

      Cevapla
      • Ahmet Emin Dilben 31 Ocak 2016 14:54

        Çıkmamış Tekrar Yazıyorum
        SPI.h
        MFRC522.h
        EEPROM.h

        Cevapla
        • Arduinocu 31 Ocak 2016 15:40

          teşekkürler ahmet bey

          Cevapla
          • Ahmet Emin Dilben 31 Ocak 2016 15:48

            Rica Ederim İyi Günler

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.