Arduino Rfid Kart Uygulaması

Arduino Rfid Kart Uygulaması

Radyo Frekanslı Tanıma (Radio Frequency Identification-RFID) teknolojisi, canlı ve cansız her türlü nesnenin dokunmadan belirli bir mesafeden tanınmasında ve izlenmesinde kullanılır.  RFID teknolojileri giderek artan büyük bir oranda dünya genelinde ve ülkemizde yaygınlaşmakta ve birçok sektörde kullanılmaktadır. Otomotiv, akaryakıt, lojistik, perakendecilik, tarım, sağlık, ilaç, tekstil, finans, bankacılık, enerji, kamu, üretim, güvenlik, turizm gibi birçok sektörde geniş uygulama alanlarında aktif ve yaygın olarak kullanılmaktadır.

RC522 RFID kartı, NFC frekansı olan 13,56 MHz frekansında çalışan tagler üzerinde okuma ve yazma işlemeni yapabilen, düşük güç tüketimli, ufak boyutlu bir karttır.

Not: 125 KHz frekansında çalışan RFID kartlarını desteklememektedir. Yalnızca 13,56 MHz frekansında çalışan kartları desteklemektedir. NFC modülleri bu frekansta çalıştığı için NFC kartları ile beraber kullanılabilir.

Rfid Kart - Rfid Anahtarlık - Rfid Okuyucu
rfid devre Şeması
Rfid Bağlantı Tablosu

Arduino Uno Bağlantıları aşağıdaki gibi olmalıdır.

  • MOSI: Pin 11
  • MISO: Pin 12
  • SCK: Pin 13
  • SS/SDA: Pin 10
  • RST: Pin 9

Arduino’ya Rfid kütüphanemizi zip olarak kitaplığa eklemek için buradan indirebilirsiniz.

Arduino uygulamamızı iki aşamalı olarak yapıyoruz. Birinci aşamada arduino kodlarımız ile rfid kart ve rfid anahtarlığımızın seri numaraları bilgilerini okuyoruz. Daha sonra önce ikinci aşamada bu kartların seri numara bilgilerini kullanarak ledlerimiz kontrol edeceğiz.

Arduino Kodlarımız – Rfid Kart Okuma

#include <SPI.h>   // SPI haberleşme kütüphanesi ekliyoruz.
#include <RFID.h>  // Rfid kütüphanemizi ekliyoruz.
RFID rfid(10,9); //SS veya SDA pini, RST pini
void setup() {
  Serial.begin(9600);  //Serial port kanalımızı açıyoruz.
  SPI.begin();         // SPI çalıştır.
  rfid.init();         //  Rfid okumaya hazır.
}

void loop() {
  
  if(rfid.isCard())      // Kart algılandı mı?
  {
    if(rfid.readCardSerial())   // Kart seri numaraları bilgileri okunuyor.
    {
// Seri numarasını dizi olarak öğreniyoruz. Hexadecimal'a çeviriyoruz.
      Serial.print("Kart ID: ");
      Serial.print(rfid.serNum[0],HEX);   
      Serial.print(rfid.serNum[1],HEX);  
      Serial.print(rfid.serNum[2],HEX);
      Serial.print(rfid.serNum[3],HEX);
      Serial.println(rfid.serNum[4],HEX);
    }
    rfid.halt();     // Kart yeninden okumaya hazır.
  }
}

Buradaki kodlarımız ile rfid kart ve rfid anahtarlığımızı okutuyoruz. Rfid Kartlarımızın seri numaralarını öğreniyoruz.

Şimdi uygulamamızı geliştiriyoruz. Burada hem kart okuyoruz hem de okuduğumuz kartlarla ledlerimizi yakıyoruz.

#include <SPI.h>
#include <RFID.h>
RFID rfid(10,9); //SS veya SDA pini, RST pini
void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.init();
  pinMode(2, OUTPUT);  // yeşil led bağlantısı
  pinMode(3, OUTPUT);  // kırmızı led bağlantısı
}
// yukarıda öğrendiğimiz Rfid seri kart numarasını buraya girebiliriz.
byte kartim[5] = {0x14,0x42,0x68,0xEB,0xD5}; 
void loop() {
  boolean gecerlikart = true;
  if(rfid.isCard())
  {
    if(rfid.readCardSerial())
    {
      Serial.print("Kart ID: ");
      Serial.print(rfid.serNum[0],HEX);
      Serial.print(rfid.serNum[1],HEX);
      Serial.print(rfid.serNum[2],HEX);
      Serial.print(rfid.serNum[3],HEX);
      Serial.println(rfid.serNum[4],HEX);
    }
    for(int i=0; i<5; i++)
    {
      if(rfid.serNum[i] != kartim[i])
      {
        gecerlikart = false;
      }
    }
    if(gecerlikart==true)
    {
      Serial.println("Merhaba");
      digitalWrite(2, HIGH);
      delay(1000);
      digitalWrite(2, LOW);
    }
    else
    {
      Serial.println("Eslesme Saglanamadi!");
      digitalWrite(3, HIGH);
      delay(1000);
      digitalWrite(3, LOW);
    }
    rfid.halt();
  }
}

Daha önce okuttuğumuz rfid kartların seri numaralarını burada birini geçerli kart olarak tanımladık. Geçerli kartı okuttuğumuzda devremize bağladığımız yeşil led yanacak ve serial ekranda “Merhaba” diyecek. Diğer rfid kartı okuttuğumuzda ise kırmızı led yanacak ve “Eşleşme Sağlanamadı” diyecek.

Paylaş,

Yazar hakkında

Orhan Gazi DEMİRCİ administrator

1984 Samsun doğumluyum. Ondokuz Mayıs Üniversitesi Bilgisayar öğretmenliği 2007 Mezunuyum. Bafra İlçe Milli Eğitim Müdürlüğünde Fatih Projesi eğitmenliği görevinde bulunmaktayım. KodlaBafra yürütücülüğü 2017 yılından beri yürütmekteyim. Evli ve bir çocuk babasıyım.