0
Bu yazıyı " 3 " dakikada okuyabilirsiniz. 🙂

Bu yazıda, Arduino ile RFID (Radio-Frequency Identification) kart okuyucu ve RFID kartlar kullanarak kartlara veri yazmayı inceleyeceğiz. Bu, kimlik bilgileri, erişim kodları veya diğer verileri depolamak için kullanışlı bir yöntemdir.

Gerekli Malzemeler:

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • RFID kart okuyucu modülü (örneğin, RC522)
  • RFID kartlar (okuyucu ile uyumlu ve yazılabilir)
  • Breadboard
  • Jumper kablolar

Devre Kurulumu:

RFID Okuyucu Bağlantıları:

  • SDA pinini Arduino’nun SDA pinine bağlayın (Uno’da A4, Mega’da 20).
  • SCK pinini Arduino’nun SCL pinine bağlayın (Uno’da A5, Mega’da 21).
  • MOSI pinini Arduino’nun MOSI pinine bağlayın (Uno’da 11, Mega’da 51).
  • MISO pinini Arduino’nun MISO pinine bağlayın (Uno’da 12, Mega’da 50).
  • RST pinini Arduino’nun dijital pinlerinden birine bağlayın (örneğin, pin 9).
  • 3.3V pinini Arduino’nun 3.3V pinine bağlayın.
  • GND pinini Arduino’nun GND pinine bağlayın.

Devre Bağlantı Tablosu:

Arduino PinleriRFID Okuyucu (RC522) Pinleriİşlev
GNDGNDToprak Bağlantısı
3.3V3.3VGüç Kaynağı (3.3V)
A4SDAI2C Veri Hattı
A5SCLI2C Saat Hattı
11MOSISPI MOSI Hattı
12MISOSPI MISO Hattı
Pin 9RSTReset Pini

Kodlama:

  • Kütüphane Kurulumu:
  • MFRC522 kütüphanesini daha önce yüklediyseniz, bu adımı atlayabilirsiniz.
  • Arduino IDE’sinde “Araçlar” > “Kütüphane Yöneticisi” yolunu izleyin.
  • “MFRC522” arayın ve MFRC522 kütüphanesini yükleyin.
    • Kod Yazma:
  • Aşağıdaki kodu Arduino IDE’ye yazın:
#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN         9          // RFID okuyucunun RST pini
#define SS_PIN          10         // RFID okuyucunun SS pini

MFRC522 mfrc522(SS_PIN, RST_PIN);  // RFID okuyucu nesnesini oluşturun

MFRC522::MIFARE_Key key; 

// Varsayılan anahtar (genellikle MIFARE kartlar için kullanılır)
byte defaultKey[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

// Yazılacak veriler (16 bayt)
byte dataBlock[] = {
  0x01, 0x02, 0x03, 0x04, 
  0x05, 0x06, 0x07, 0x08,
  0x09, 0x0A, 0x0B, 0x0C, 
  0x0D, 0x0E, 0x0F, 0x10
};

// Yazılacak bloğun adresi (1-63 arası)
byte blockAddr = 1; 

void setup() {
  Serial.begin(9600);   // Seri iletişimi başlatın
  SPI.begin();      // SPI iletişimini başlatın
  mfrc522.PCD_Init();   // RFID okuyucuyu başlatın

  // Varsayılan anahtarı ayarlayın
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = defaultKey[i];
  }

  Serial.println("RFID karta veri yazmaya hazir...");
}

void loop() {
  // Yeni bir kart okundu mu kontrol edin
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Kart verilerini okuyun
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  Serial.println("Kart bulundu!");

  // Yetkilendirme (kartta yazma işlemi için gerekli)
  MFRC522::StatusCode status;
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, blockAddr, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print("Yetkilendirme hatasi: ");
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  // Veriyi karta yazın
  status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16);
  if (status != MFRC522::STATUS_OK) {
    Serial.print("Yazma hatasi: ");
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  Serial.println("Veri basariyla yazildi!");

  // Kartı durdurun
  mfrc522.PICC_HaltA(); 
}

Kod Açıklaması:

  • Kütüphaneler: MFRC522 kütüphanesi dahil edilir.
  • Pin Tanımlamaları: RFID okuyucunun RST ve SS pinleri tanımlanır.
  • RFID Okuyucu Nesnesi: MFRC522 kütüphanesini kullanarak bir RFID okuyucu nesnesi oluşturulur.
  • Anahtar Tanımlama: MIFARE kartlar için kullanılan varsayılan anahtar (6 bayt) tanımlanır.
  • Veri Tanımlama: Karta yazılacak veriler (16 bayt) tanımlanır.
  • Blok Adresi: Verinin yazılacağı bloğun adresi (1-63 arası) belirlenir.
    • setup() Fonksiyonu:
  • Seri iletişim başlatılır.
  • SPI iletişimi başlatılır.
  • RFID okuyucu başlatılır.
  • Varsayılan anahtar, key değişkenine atanır.
    • loop() Fonksiyonu:
  • Kart Kontrolü: Yeni bir kartın mevcut olup olmadığı kontrol edilir.
  • Kart Okuma: Kart verileri okunur.
  • Yetkilendirme: Karta yazmak için yetkilendirme işlemi yapılır. Bu işlemde, blok adresi, anahtar ve kart UID’si kullanılır.
  • Veri Yazma: MIFARE_Write() fonksiyonu ile veriler belirtilen blok adresine yazılır.
  • Durum Kontrolü: Yetkilendirme ve yazma işlemlerinin durumu kontrol edilir ve hata mesajları yazdırılır.
  • Kart Durdurma: Kart okuyucudan çıkarıldıktan sonra durdurulur.

Notlar:

  • Yazılabilir Kartlar: Tüm RFID kartları yazılabilir değildir. Kullandığınız kartların MIFARE Classic gibi yazılabilir bir tür olduğundan emin olun.
  • Anahtarlar ve Güvenlik: Varsayılan anahtar sadece örnek amaçlıdır. Gerçek uygulamalarda, daha güvenli bir anahtar kullanmanız önerilir.
  • Blok Boyutu: MIFARE Classic kartlarda her blok 16 bayt veri tutabilir.
  • Blok Adresleri: Blok adresleri 1 ile 63 arasındadır. 0 numaralı blok genellikle üretici bilgileri içerir ve üzerine yazılmamalıdır.

Geliştirmeler:

  • Kullanıcıdan veri alarak karta yazın.
  • Kartta depolanan verileri okuyun ve görüntüleyin.
  • Daha karmaşık veri yapıları (örneğin, stringler, sayılar) depolamak için birden fazla bloğu kullanın.
  • Şifreleme kullanarak veri güvenliğini artırın.

Özet:

Arduino ile RFID kartlara veri yazmak, kimlik doğrulama, erişim kontrolü ve veri depolama gibi uygulamalar için kullanışlı bir özelliktir. MFRC522 kütüphanesi ve uygun RFID kartları kullanarak kartlara veri yazabilir ve projelerinizde kullanabilirsiniz.

Ahmet Kemal YILDIZ
Eskişehir Osmangazi Üniversitesi Bilgisayar ve Öğretim Teknolojileri Öğretmenliği mezunu bir Bilişim Teknolojileri ve Yazılım Dersi Öğretmeniyim. Bilişim Teknolojileri ve Yazılım dersi ile ilgili ders etkinlikleri, kaynak materyaller, örnek etkinlikler ve ilgi duyduğum birçok konu hakkında vakit buldukça buradan blogluyorum. :)

    20# – Arduino ile RFID Kart Kullanımı (Okuma)

    önceki yazı

    22# – Arduino ile Renk Sensörü (TCS3200) Kullanımı

    Sonraki Yazı

    Bu Yazılar da İlgini Çekebilir!

    Yorumlar

    Yorum yap

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Daha Arduino