Arduino RFID Uygulamaları – Kart Okuma ve Yazma

Kredi kartlarını, mağazalarda satın aldığımız kıyafetlerin ve binaya giriş kartlarının ortak noktası ne biliyor musunuz? İşte bu noktada karşımıza RFID kavramı çıkmaktadır. Bu sebepten ötürü başlıktan da anlaşılacağı üzere, bugün sizlerle birlikte RFID uygulamalarına küçük bir giriş yapacağız. Arduino Uno kartını kullanarak RFID etiketlerini okumanın ve tekilendirmenin nasıl yapılacağını birlikte öğreneceğiz.

RFID, Radyo Frekansı Tanımlama(Radio Frequency Identification) anlamına gelir. Genellikle Yakın Alan İletişimi anlamına gelen NFC ile karıştırılır. Ancak aralarındaki farkı iyice bilmemiz gerekmektedir.

RFID ve NFC Farkları Nelerdir?

Bu konuda bilmemiz gereken ilk önemli şey, NFC’nin aslında RFID teknolojisinin altında bulunan bir teknoloji olduğudur.

Her ikisi de aslında 13.56 Mhz frekansında çalışmaktadır. NFC diyince aklımıza veri alışverişini güvenli bir şekilde gerçekleştirmek üzere geliştirilmiş olan teknoloji gelmelidir. Günümüzde karşımıza çıkan NFC cihazları hem NFC okuyucu hem de NFC etiketi olarak çalışabilmektedirler.

RFID teknolojisinin amacı ise radyo dalgaları kullanarak öğeleri belirlemektir. RFID sistemlerin içini incelediğimizde anlıyoruzki, bir RFID sisteminde en azından, bir etiket, bir okuyucu ve bir anten içermektedir. RFID sisteminde bulunan okuyucu, anten aracılığıyla etikete bir sorgulama sinyali gönderir ve etiket eşsiz bilgiler ile yanıt verir. RFID etiketleri günümüzde aktif ve pasif olmak üzere ikiye ayrılmaktadır.

Aktif RFID

Aktif bir RFID etiketi, genellikle bir pil olmak üzere kendi güç kaynağına sahiptir.

Pasif RFID

Pasif bir RFID etiketi , gücünü elektromanyetik dalgası RFID etiketinin anteninde bir akım oluşturan okuma anteninden alır.

Bu iki sistemin genel farklarını anladığımız göre gelin RFID sisteminin biraz daha içine girelim.

RFID Teknolojisi Nerede Kullanılabilir?

  • Evcil hayvan takibi
  • Envanter yönetimi
  • Varlık ve ekipman takibi
  • Stok kontrolü
  • Kargo ve tedarik zinciri lojistiği
  • Araç takibi
  • Kayıp ürün kontrolü
  • Bina giriş ve çıkış kontrolü

Vb. bir sürü alanda karşımıza çıkmaktadır.

Aslında RFID sistemlerinin kullanımı 1940’lara kadar uzanmaktadır. Ancak, kullanın sıklığı 1970’lerde daha da artmaya başladı. Uzun bir süre boyunca etiketlerin ve okuyucuların yüksek maliyeti, yaygın ticari kullanımını engelledi. Gün geçtikçe donanım maliyetleri azaldığından dolayı RFID kullanımı da bunla orantılı olarak arttı.

RFID Uygulaması

O zaman gelin hep birlikte ilk RFID uygulamamıza başlayalım. Bu noktada ilk uygulamamızdaki amacımız, RFID kartlarının genel kullanımı yönünde olacaktır. Yani kısacası kart okuma ve yazma üzerine uygulama yapacağız.

Bu proje için gerekli olan elemanları kısaca öğrenelim:

Malzeme Listesi

  • 1 adet Arduino Uno kartı
  • 1 adet RFID okuyucu
  • 1 adet breadboard
  • 2 adet LED (tercihen bir kırmızı ve bir yeşil)
  • 2 adet 200Ω direnç
  • Birkaç adet jumper kablo

Devre Şeması

Arduino RFID Uygulamaları - Kart Okuma ve Yazma kart okuma ve yazma,arduino rfid
Devre Şeması

Şemada görüldüğü gibi RFID okuyucunun bir pini bağlı değil. Bu sadece şu anda yaptığımız projede gerekli olmadığından dolayıdır.

LED’ler pin 7 ve 8’e bağlıdır ama dilerseniz başka pin de kullanabilirsiniz, farklı pinler kullanıyorsanız kodunuzdaki doğru pinleri belirtmeyi unutmayın.

Arduino RFID Uygulamaları - Kart Okuma ve Yazma kart okuma ve yazma,arduino rfid
RFID Projesi

LED’leri dirençlerle Arduino’ya bağlamak için bir breadboard kullanmanızı öneririz. Ve ihtiyacımız olan son şey aşağıdaki programı Arduino kartına yüklemek.

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

MFRC522 mfrc522(10, 9); 
const int redLED = 7;
const int greenLED = 8;
void setup() {
  pinMode(redLED, OUTPUT);  
  pinMode(greenLED, OUTPUT);
  Serial.begin(9600);             // Seri haberleşme başlatıldı
  SPI.begin();                    // SPI haberleşmesi başlatıldı
  mfrc522.PCD_Init();             // MFRC522 tanımlandı
  Serial.println("Kartinizin okunmasi için yaklastiriniz...");
  Serial.println();
}

void loop() 
{
  // Yeni kartlar aranıyor
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  //UID numarası yazdırılıyor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  content.toUpperCase();
  if (content.substring(1) == "BD 31 15 2B") // Bu bölümü sizin kartınoz UID değerine göre değiştiriniz
  {
    digitalWrite(greenLED, HIGH);            // 8 numaralı pin yüksek durumda
    delay(3000);
    digitalWrite(greenLED, LOW);
  }
 
 else   {
    digitalWrite(redLED, HIGH);              // 7 numaralı pin yüksek durumda
    delay(3000);
    digitalWrite(redLED, LOW);
  }
}