26 Ekim 2026 Pazartesi


RC522 RFID Modülü

RFID Teknolojisi Nedir Ve Nasıl Çalışır?

RFID, “Radio Frequency Identification” teriminin kısaltmasıdır. Türkçe olarak “Radyo Frekansı Tanımlama” anlamına gelir. RFID teknolojisi nesnelerin radyo dalgaları kullanılarak tanınması için kullanılan teknolojidir. Bir kimliklendirme sistemi de denilebilir. Temel olarak kullanım amacı, nesneleri tanımak, bunlarla ilgili veri toplamak ve bu verileri ilgili yazılım sistemleriyle paylaşmaktır. Barkodun aksine etiketin, okuyucunun görüş alanında olması gerekmez. RFID etiketlerinde kodlanan dijital verilerin radyo dalgaları aracılığıyla okuyucular tarafından yakalandığı bir teknolojiyi ifade eder.

RFID teknolojisinin kullanım alanları oldukça geniştir. Toplu taşıma biletlerinde, işyeri ve okul girişlerindeki turnikelerde, alışveriş merkezlerinde, marketlerde, kargo firmalarında, canlı hayvan takiplerinde vs. kullanılmaktadır. RFID teknolojisi sayesinde şirketlerin insan gücü maliyeti, stok kontrolü, ürün takibi gibi konularda kayda değer kolaylıklar sunmaktadır.

RFID sistemleri temek olarak 2 bileşenden oluşur: 

  • RFID Okuyucu.

  • Etiket adı verilen, aktif veya pasif küçük bir radyo transponderi.


RFID Okuyucu: 


Çevresinde yüksek frekanslı elektromanyetik alan oluşturan bir radyo frekansı modülü ve bir anten içerir. Yakındaki bir RFID etiketine elektromanyetik sorgulama darbesi gönderir. Etiketten gelen verileri analiz ederek etiketi tanımlar. Barkod veya QR kodunun aksine, etiketin okuyucunun görüş alanında olması gerekmez.





RFID Etiketi: 


Tanımlamak veya izlemek istediğimiz herhangi bir nesneye takılır. RFID etiketinin içindeki çipte kendisi ile ilgili veriler bulunmaktadır. Bu etiket, içerdiği bilgileri okuyucuya,  okuyucunun çalıştığı veri iletim protokolü aracılığıyla iletir. 2 farklı RFID etiketi vardır:










a- Pasif Etiket: Dahili güç kaynağı olmayan bu etiketler, radyo sinyali ileten bir RFID alıcının kapsama alanına girdiklerinde, antenlerinden aldıkları sinyallerde bulunan enerji ile beslenirler. Çiplerinde bulunan bilgileri antene geri ileterek veri paylaşımında bulunurlar.







b- Aktif Etiket: Güç ünitelerini kendi içinde barındıran etiket tipleridir. Bu cihazlar, şarj edilebilir veya uzun süreli pil ömürleriyle çok daha geniş kullanım imkânları sağlarlar. Pasif etiketlerde en fazla 5 metreye kadar sinyal iletimi sağlanabilirken, aktif RFID etiketler bu mesafeyi çok daha uzak noktalara çıkarabilir.

Etiketlerin çoğu pasiftir, yani pilleri veya kendi güç kaynakları yoktur. Bunun yerine, okuyucunun elektromanyetik alanına girene kadar sessizce beklerler.

RFID etiketler yalnızca okunabilir veya hem okunabilir hem yazılabilir özellikte olabilir. Örneğin; şehir içi taşımacılıkta kullanılan kart biçimindeki RFID etiketlere kredi yüklemesi yapılabilir, kart her okutulduğunda ise bu kredi miktarı düşürülebilir. HGS (Hızlı Geçiş Sistemi) uygulamalarında orta menzilli RFID etiketler kullanılır. Araçların ön camlarına monte edilen RFID etiketler aracın hızı desteklenen seviyeyi aşmadığı sürece algılanır.

Kullandığımız RFID etiketlerin/kartların kendilerine ait UID isimli bir numarası vardır. Bu numara, her kart için farklıdır. Okuyucumuza kartımızı veya anahtarlığımızı yaklaştırdığımızda bu numara okunarak işlem yapılır. Etiketler; kart, etiket, anahtarlık veya çıkartma gibi farklı biçimlerde veya şekillerde mevcuttur.




RFID’in Yapısı ve Çalışma Prensibi




Üstteki resimlerde farklı çizimlerle anlatılan RFID sisteminde, bir etiket, okuyucunun elektromanyetik alanına girdiğinde, okuyucudan gelen radyo dalgaları etiketin anteninde küçük bir elektrik akımı oluşturur. Bu küçük akım, etiketin mikroçipini uyandırmak için yeterli gücü sağlar. Mikroçip, etiketin bağlı olduğu nesne hakkında önemli bilgiler içerir. Güç verildikten sonra, etiket bu bilgiyi okuyucuya geri gönderir. Bu işleme geri saçılım denir. Burada etiket kendi radyo sinyalini üretmez. Bunun yerine okuyucunun sinyalini değiştirir yani modüle eder. Okuyucu ise bu değiştirilmiş sinyali alır, bilgiyi çözümler ve daha fazla kullanım için bir bilgisayara veya mikro denetleyiciye gönderir.

RFID etiketlerinin çoğu pasif olsa da, küçük bir pil gibi kendi güç kaynağına sahip aktif etiketler de mevcuttur. Bu aktif etiketler, güç için okuyucunun sinyaline ihtiyaç duymadıkları için çok daha uzun mesafelerde iletişim kurabilirler.


RFID Çeşitleri

Günümüzde dört temel RFID teknolojisi türü mevcuttur:

1. LF (Düşük Frekans) Pasif: Bunlar daha kısa mesafelerde çalışır ve genellikle hayvan takibi veya erişim kartları için kullanılır.

2. HF (Yüksek Frekans) Pasif: Bu frekanslar, menzil ve veri aktarım hızı arasında iyi bir denge sunarak kütüphane kitapları, ödeme kartları ve birçok hobi projesi için mükemmeldir.

3. UHF (Ultra Yüksek Frekans) Pasif: Bu sinyaller daha uzaktan okunabilir ve depolardaki envanteri veya montaj hatlarında hızlı hareket eden ürünleri takip etmek için mükemmeldir.

4. UHF (Ultra Yüksek Frekans) Aktif: En uzak mesafelerde okuma işlemi yapılır.


LF ve HF Pasif RFID, güç ve veri aktarımı için manyetik bağlantı kullanır. UHF Pasif ve Aktif RFID, e-alan bağlantısına dayanır. Bağlantı türü, okuma mesafesi, veri hızı ve çevresel dayanıklılık gibi faktörleri etkiler. Aşağıdaki tabloda her RFID teknolojisi için temel özellikler, resimde ise dört farklı frekans standardının radyo frekansı ve okuma menzili açısından birbirleriyle nasıl ilişkili olduğu gösterilmektedir.


Parametreler

Teknoloji


LF Passive

<135 kHz

HF Passive

13.56 MHz

UHF Passive

868 – 950 MHz

UHF Active

433 MHz – 5.8 Ghz

Okuma Mesafesi

high

low - medium

high

highest

Veri Hızı

4 - 8 kbps

6.7 - 848 kbps

Freq/1, LF/2,

LF/4, LF/8

Freq/1, LF/2,

LF/4, LF/8

Çoklu Etiket Okuma

10s

100s

1000s

1000s






En sık kullanılan RFID Etiketler/Kartlar/Anahtarlıklar ve RFID Okuyucular 125 KHz ve 13.56 MHz frekans değerinde olanlardır. Bunlar:

Proximity Kart (125 KHz)

Proximity kartlar, güvenli geçiş sistemlerinde kullanılan 125 KHz frekansa sahip, temas olmaksızın kullanılabilen kartlardır. Bu kartlar, kredi kartı ebatlarındadır. Her iki yüzeye de termal baskı yapılabilir. Proximity kart 5-10 cm mesafeden okuma yapabilmektedir.

Mifare Kart (13.56 MHz)

Mifare kartlar 13.56 MHz frekansa sahip, temas olmaksızın kullanılabilen akıllı kartlardır. Bu kartlar, kredi kartı ebatlarındadır. Her iki yüzeye de termal baskı yapılabilir. Mifare kartlar 5-10 cm mesafeden okuma yapabilmektedir.


Tam Çift Yönlü-Full Duplex (FDX, FDX-B) ve Yarım Çift Yönlü- Half Duplex (HDX) Modlar

Etiketler, Tam Çift Yönlü (FDX, FDX-B) veya Yarım Çift Yönlü (HDX) modda çalışabilir:

FDX tabanlı bir sistemde, veri ve enerji aynı anda hareket eder. Bu, LF 125kHz ila 135kHz aralığındaki teknoloji için geçerlidir. HF veya UHF pasif teknolojileri için geçerli değildir. Aşağıdaki resim, bir iletim sırasında okuyucu ve etiket(transponder) sinyallerini göstermektedir. Hem okuyucunun hem de etiketin aynı anda iletim yaptığı görülmektedir. 





HDX tabanlı bir sistemde, aşağıdaki resimde görüldüğü üzere ya okuyucu ya da etiket iletim yapar. İkisi aynı anda iletim yapmaz. Etiket(transponder) üzerinde entegre bir şarj kapasitörü bulunur. Okuyucu ilk bağlandığında, kapasitörü şarj eder. Okuyucu iletimi durdurduğunda, transponder şarj edilmiş kapasitör tarafından beslenir ve istenen verileri okuyucuya iletebilir.




HDX etiketleri, FDX etiketlerine kıyasla daha yüksek güvenilirlik ve daha düşük maliyetle birlikte performansta önemli bir iyileşme (yani, ~1,5 kat okuma menzili) sağlar. Bu fark, FDX tabanlı bir okuyucu için gereken karmaşıklıktan kaynaklanmaktadır. Bir FDX iletimi sırasında, okuyucunun etiket sinyalini kendi iletiminden ve ortam gürültüsünden ayırması gerektiğini düşünün. HDX tabanlı bir etiketle, etiket okuyucu aynı anda iletim yapmak zorunda olmadığı için, okuyucu daha basit kod çözme teknikleri kullanabilir. Sonuç olarak daha yüksek güvenilirlik, daha geniş menzil ve daha düşük okuyucu maliyeti elde edilir.


Uygulamalarımızda kullanacağımız RC522 RFID okuyucu, yüksek frekans aralığında olan 13,56 MHz'de çalışmaktadır. Bu özelliğiyle, elektronik kapı kilitleri, yoklama sistemleri veya interaktif ekranlar gibi etiketleri birkaç santimetre uzaktan okumanız gereken projeler için idealdir.


RC522 RFID Modülünün Yapısı ve Çalışması


NXP'nin MFRC522 çipini temel alan RC522 RFID modülü, günümüzde mevcut en uygun fiyatlı RFID seçeneklerinden biridir. Bu da onu hobi projeleri ve deneyler için mükemmel bir seçim haline getiriyor. Modül genellikle iki tür RFID etiketiyle birlikte gelir: Kredi kartına benzeyen bir MIFARE kart ve anahtarlığınıza takabileceğiniz bir MIFARE anahtarlık. Bu etiketlerin her ikisi de 1 kilobayt (1 KB) belleğe sahiptir. Bu bellek boyutu, microSD kartlarla karşılaştırıldığında çok fazla görünmeyebilir. Ancak birçok proje için yeterli alandır. Özellikle heyecan verici olan şey, RC522'nin bu etiketlerden bilgi okuyabilmesinin yanı sıra bunlara yeni bilgiler de yazabilmesidir. Bu, etiketlere istediğiniz mesajları, kodları veya tanımlayıcıları kaydedebileceğiniz anlamına gelir.

RC522 RFID okuyucu, 13,56 MHz frekansında çalışmak üzere tasarlanmıştır ve ISO 14443A standardına (RFID cihazlarının birlikte nasıl çalışması gerektiğine dair ortak bir kurallar kümesi) uyan RFID etiketleriyle iletişim kurar.

RC522 üç farklı iletişim protokolünü destekler: SPI, I2C veya UART. Bunlardan en hızlısı SPI’dır. Bu iletişim protokolü esnekliği, projeniz veya kullandığınız mikrodenetleyici için en uygun iletişim yöntemini seçebileceğiniz anlamına gelir.

RC522'nin özellikle kullanışlı bir özelliği, kesmeler üretebilme yeteneğidir. Arduino'nuzun sürekli olarak "Yakında bir kart var mı?" diye tekrar tekrar sorması yerine, modül menzil içinde bir etiket algıladığında Arduino'nuzu uyarabilir. Bu, projelerinizi daha verimli ve hızlı yanıt veren hale getirir.

RC522 modülü kendi başına 2,5V ile 3,3V arasında bir voltajda çalışır. Ancak iletişim pinleri "5V toleranslı"dır. Yani mantık seviyesi dönüştürücüye ihtiyaç duymadan iletişim pinleri 5V olan bir Arduino'ya veya başka herhangi bir mikro denetleyiciye kolayca bağlayabilirsiniz.

RC522 RFID modülü, okuma, yazma ve kimlik doğrulama işlemlerini destekler. Bu modülde: 

Temassız okuyucu kart: PCD (Proximity Coupling Device - Yakınlık Bağlantı Cihazı) olarak, 

Etiket/kart ise: PICC (Proximity Integrated Circuit Card - Yakınlık Entegre Devre Kartı) olarak isimlendirilir.


RC522 RFID Modülünün Teknik Özellikleri





RC522 modülünde, NXP'nin MFRC522 RFID çipi yer alır. 49S paketindeki yerleşik kristal osilatör tarafından 27,12 MHz'de saatlenir. Kart ayrıca gerekli EMI filtre devresini ve eşleştirme devresini de içerir. Ayrıca RFID etiketleriyle iletişim kurmak ve onları enerjilendirmek için bir PCB anteni de içerir.

Frekans Aralığı : 13,56 MHz ISM Bandı

Bilgisayar Arayüzü : SPI(10 Mbit/sn), I2C(400 kBd- 3400 kBd), UART(1228,8 kBd)

Çalışma Gerilimi : 2,5 V ila 3,3 V

Çalışma Akımı : 13-26mA

Minimum Akım : 10µA

Mantık Girişleri : 5V (Toleranslı)

Okuma Mesafesi : 5 cm



RC522 RFID Modülünün Devre Şeması




Devre, en temel bileşenlerden oluşmaktadır. Ana bileşen MFRC522 çipidir. Geri kalan bileşenler, anten için eşleştirme devresiyle birlikte EMI filtresini oluşturur.


RC522 RFID Modülünün Pin Yapısı





VCC :Modüle güç sağlar. 2,5 ila 3,3 volt arasında olmalıdır. Dikkat! Yanlışlıkla mikro denetleyicinin 5V besleme çıkışına bağlamayın.

GND :Bu pin topraklama pinidir

RST :Bu, sıfırlama/güç kapatma pinidir. Bu pin LOW yapıldığında, modül güç kapatma moduna girer. Bu modda, osilatör kapanır ve giriş pinleri bağlantısı kesilir. Bu pin LOW’dan HIGH’a değiştiğinde, modül sıfırlanır ve tekrar aktif hale gelir.

IRQ :Bu pin, yakınlarda bir RFID etiketi algılandığında mikro denetleyiciye sinyal gönderen kesme pinidir.

MISO / SCL / Tx :Bu, modülle nasıl iletişim kurduğunuza bağlı olarak işlevi değişen çok amaçlı bir pindir:

  • MISO: SPI modunda modülün, mikro denetleyiciye veri gönderdiği pinidir.

  • SCL: I2C modunda modülün, mikro denetleyiciden seri saat sinyalini aldığı pinidir.

  • Tx: UART modunda modülün seri veri gönderdiği pinidir.

MOSI : Modülün, SPI iletişiminde, mikro denetleyiciden veri aldığı pinidir.

SCK :Modülün, SPI iletişiminde, mikro denetleyiciden saat sinyali aldığı pinidir.

SS / SDA / Rx :Bu, modülle nasıl iletişim kurduğunuza bağlı olarak işlevi değişen çok amaçlı bir pindir:

  • SS: SPI modunda, modülün köle olarak seçilmesini sağlayan pinidir.

  • SDA: I2C modunda, modülün, gelen seri veriyi alan pinidir.

  • Rx: UART modunda modülün veri aldığı pinidir.

SS/SDA/Rx pini, devre kartı üzerinde kare şeklindedir. Kare şeklindeki bu durumu, aynı zamanda, diğer pinleri de belirlemenize yardımcı olur.

MIFARE Kartının(Etiket) Klasik 1K Bellek Düzeni

Etiketi etkili bir şekilde kullanmak için, hafızasının nasıl organize edildiğini anlamak önemlidir. Etiketin 1K'lık belleği, bir apartman binasının katlara, dairelere ve odalara bölünmesine benzer şekilde, çok özel bir biçimde düzenlenmiştir.





Etiket belleğinin tamamı 16 sektöre (0'dan 15'e kadar numaralandırılmış) bölünmüştür. Her sektör ayrıca 4 bloğa (0'dan 3'e kadar bloklar) ayrılmıştır. Her blok 16 bayt veri (0'dan 15'e kadar) depolayabilir. Hesaplamaları yaptığımızda, "1K" boyutunun nasıl çıktığını görebiliriz:

16 sektör × 4 blok × 16 bayt veri = 1024 bayt = 1 KB bellek


Her sektörün son bloğu (3. Blok) “Sektör Son Bloğu (Trailer Block)” olarak adlandırılır. Bu blok, o sektördeki kalan üç bloğun okuma ve yazma izinlerini kontrol eden “Erişim Bitleri” olarak bilinen özel veriler içerir. Bu nedenle, her sektörün yalnızca 3 bloğu (0, 1 ve 2. Bloklar) kendi verilerinizi yazmak için kullanılabilir. Bu durum, sektör başına yalnızca 48 baytı kendi verilerimiz için kullanılabileceğimiz anlamına gelir. 

Ek olarak, etiket belleğinin tamamındaki ilk blok (0. Sektörün 0. Bloğu) “Üretici Bloğu” olarak adlandırılır. Bu özel blok, IC Üreticisi verileri ve etiketin “Benzersiz Tanımlayıcısı (UID)” dâhil olmak üzere fabrika tarafından programlanmış bilgileri içerir. 





Uyarı:

“Üretici Bloğunu” veya herhangi bir “Sektör Son Bloğunu(Trailer) – key hariç” asla değiştirmeye veya üzerine yazmaya çalışmayın! Bunu yapmak son derece risklidir ve etiketi kalıcı olarak kilitleyerek kullanılamaz hale getirebilir.




Sektör Son Bloğu (Trailer Block) Yapısı

Sektör son blokları içerisinde güvenlik anahtarı bilgileri bulunur. 6 bayt olan bu güvenlik anahtarı, RFID kartına erişim sağlamak için kullanılır. 2 adet anahtar bulunur. Key A ve Key B. Kartın/etiketin bellek dökümünü/haritasını seri port ekranına yazdırdığımızda, Key B 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF şeklinde görünürken, Key A gizlendiği için 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, şeklinde görünür. Yeni RFID kartlarının tümünün fabrikasyon güvenlik anahtarı varsayılan olarak 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF olarak belirlenmiştir. Ancak, kart daha önce programlanmışsa, farklı bir anahtar atanmış olabilir. Bu durumda, kartın hafızasına erişmek için doğru anahtarı bilmeniz gerekir.





Örnek:




SAK (Select Acknowledge) Nedir?

Kart bilgilerini seri port ekranına yazdırdığımızda gördüğümüz “Card SAK: 08”, kartın hangi protokolü kullandığını ve ne tür bir kart olduğunu belirten bir bayttır. 08 değeri: Bu kartın bir MIFARE Classic 1K olduğunu gösterir. Eğer 09 ise;  MIFARE Classic 1K'nın farklı bir varyasyonu, 18 ise; MIFARE Classic 4K, 20 ise; MIFARE DESFire veya Plus olduğunu belirtir.

Bu kod, kartın iletişim kurarken hangi "dili" konuştuğunu söyler. 08 değeri, bu kartın ISO/IEC 14443-A standardına tam uyumlu olduğunu ve "Anticollision" (çarpışma önleme) sürecini başarıyla geçtiğini gösterir. Kartla iletişim için kullanacağımız MFRC522.h kütüphanesi, kartla nasıl konuşacağını bu SAK değerine bakarak anlar.


RC522 ve Diğer Modüller


Module

Frequency

Range

Best For

RC522

13.56MHz

2-5cm

Başlangıç ​​Seviyesi RFID Arduino Projeleri

PN532

13.56MHz

3-8cm

NFC özellikli Arduino RFID sistemleri

UHF RFID

860-960MHz

1-5m

Uzun menzilli Arduino RFID uygulamaları



RC522 RFID Modülünün Arduino İle Kullanımı





  • RC522 modülündeki VCC pinini Arduino'nuzdaki 3.3V pinine bağlayın.

  • Kullanacağımız Arduino kütüphanesi kesme işlevini desteklemediği için IRQ (Kesme İsteği Çıkışı) pini bağlantısız kalacaktır.

  • RC522 modülünün verileri hızlı bir şekilde aktarması gerektiğinden, uygulamalarda SPI iletişimi kullanacağız. Modül SPI pinlerine bağlandığında en iyi performansı gösterir. UNO veya Nano V3.0 gibi Arduino kartları için bu pinler şunlardır: 13 (SCK), 12 (MISO), 11 (MOSI) ve 10 (SS).



Kütüphanelerin İndirilmesi ve Komutların Kullanımı

Uygulamalarımızda “Github Community” (Github Topluluğu) tarafından geliştirilen ve “miguelbalboa” nın “rfid” sayfasında yer alan “MFRC522.h” kütüphanesini kullanacağız. Bu kütüphaneyi github.com/miguelbalboa/rfid sayfasından ya da Arduino kütüphane yöneticine “mfrc522” yazarak “Github Community” tarafından geliştirilen kütüphaneyi indirerek kullanabiliriz. Kütüphaneye ait .zip dosyası “rfid-master” ismiyle klasör içerisinde yer almaktadır. Aşağıda yer alan linkte de kütüphaneye ait tüm versiyonlar bulunmaktadır:

https://www.arduinolibraries.info/libraries/mfrc522

“MFRC522.h” kütüphanesi “SPI” iletişim protokolünü desteklediği için Arduino ve RC522 modül arasındaki iletişimi SPI türünde yapacağız.

Kütüphane kurulumunu yaptıktan sonra, kütüphane içerisindeki örnek bir uygulamayla RFID etiketini okumaya geçelim. Arduino IDE'de Dosya > Örnekler > MFRC522 > “DumpInfo” taslağını seçin. Bu taslak, bir RFID etiketini okur ve üzerinde depolanan tüm bilgileri görüntüler. Yeni başlayanlar için etiketlerinizde neler olduğunu keşfetmenin harika bir yoludur.

Şimdi, taslağı Arduino'nuza yükleyin ve Seri Monitörü açın. RFID etiketini (kart veya anahtarlık) modüle yaklaştırdığınızda, ekranda bilgiler görünecektir. Bu bilgiler arasında etiketin Benzersiz Kimliği (UID), sahip olduğu bellek miktarı ve hatta 1K belleğinin tamamının içeriği yer almaktadır. Tüm bilgiler okunup görüntülenene kadar etiketi modülün yakınında sabit tuttuğunuzdan emin olun.

Kütüphane Komutları

1. #include <MFRC522.h>

Kütüphaneyi programa ekler.


2. MFRC522 rfid(SS_PIN, RST_PIN);

“rfid” isminde bir nesne tanımlandı ve bu nesne içerisinde “SS_PIN” değişkeni ile slave seçme pini, “RST_PIN” değişkeni ile reset pini belirlendi.


3. rfid.PCD_Init();

“rfid” nesnesini başlatır.


4. rfid.PCD_DumpVersionToSerial();

RC522 kart/etiket okuyucu modülün bilgilerini seri port ekranına yazdırır.


5. rfid.PICC_IsNewCardPresent();

Yeni bir kart/etiket algılanıp algılanmadığını kontrol eder. Algılandıysa “1 (true)”, algılanmadıysa “0 (false)” değerini döndürür.


6. rfid.PICC_ReadCardSerial();

Kartın/etiketin UID (Benzersiz Kimlik)’sinin okunup okunamadığını belirler. Eğer okunabiliyorsa “1 (true)”, okunamıyorsa “0 (false)” değerini döndürür.


7. rfid.PICC_DumpToSerial(&(rfid.uid));

Kart/etiket hakkında tüm bilgileri ve kartın/etiketin bellek dökümünü/haritasını seri port ekranına yazdırır.


8. Kart/etiket tipini okumak için aşağıdaki komutlar kullanılır:

1 byte piccType = rfid.PICC_GetType(rfid.uid.sak);

2 Serial.println(rfid.PICC_GetTypeName(piccType));


9. Kart/etiket UID’sini okumak için aşağıdaki komutlar kullanılır:

1 rfid.uid.uidByte[0] //Kart/etiket ID’sinin 0. baytı

2 rfid.uid.uidByte[1] //Kart/etiket ID’sinin 1. baytı

3 rfid.uid.uidByte[2] //Kart/etiket ID’sinin 2. baytı

4 rfid.uid.uidByte[3] //Kart/etiket ID’sinin 3. baytı


10. “Güvenlik Anahtarını” kütüphaneye bildirmek için aşağıdaki komutlar kullanılır:

Güvenlik anahtarı, karta gönderilmek üzere bir değişkene kaydedilir. Sonraki güvenlik anahtarı doğrulama kısmında bu değişken kullanılır.


1 MFRC522::MIFARE_Key key;  //'key' adında bir MIFARE_Key yapısı değişkeni oluşturuldu.

2 for (byte i = 0; i < 6; i++) 

3 {

4     key.keyByte[i] = 0xFF;

5 }


Güvenlik anahtarı yukarıdaki for() döngüsünde görüldüğü üzere her biri 1 baytlık olan 6 adet "0xFF" verisinden oluşur. RFID kartlarının tümünün güvenlik anahtarı varsayılan olarak 0xFF olarak belirlenir.


11. “Güvenlik Anahtarı” doğrulaması için aşağıdaki komut kullanılır:

Güvenlik anahtarı doğrulaması, kullanıcının şifresini girmesine benzer. Aşağıdaki komut kullanılarak, yukarıdaki komut ile değişkene kaydedilen güvenlik anahtarı, buradaki komut ile karta gönderilir. Komut, güvenlik anahtarının doğru ya da yanlış olması durumuna göre değer döndürür.

  • byte status = rfid.PCD_Authenticate(byte command, byte blockAddr, MIFARE_Key *key, Uid *uid);

byte command : Hangi anahtar tipiyle doğrulama yapacağınızı seçersiniz. İki seçenek vardır:

MFRC522::PICC_CMD_MF_AUTH_KEY_A : A anahtarını kullanarak doğrulama yapar.

MFRC522::PICC_CMD_MF_AUTH_KEY_B  : B anahtarını kullanarak doğrulama yapar.


Not: Fabrika çıkışlı kartlarda her iki anahtar da genellikle 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF şeklindedir.

byte blockAddr : Bu kısma, erişmek istediğiniz blok numarasını ya da bu bloğun trailer numarasını girebilirsiniz.

MIFARE_Key *key :MIFARE_Key yapısı türünde olan “key”, güvenlik anahtarı değişkenidir. 6 bayt boyutundadır.

Uid *uid :Uid yapısı türünde olan “uid”, kart/etiket UID’sidir.


rfid.PCD_Authenticate() komutu, kimlik doğrulaması başarılı olursa “MFRC522::STATUS_OK”, aksi takdirde aşağıdaki gibi değerler döndürür.

MFRC522::STATUS_AUTH_FAILED: Hatalı Anahtar. Karttaki şifre ile senin gönderdiğin key eşleşmiyor.

MFRC522::STATUS_TIMEOUT :Zaman Aşımı. Kart okuyucudan uzaklaştırılmış olabilir veya iletişim koptu.

MFRC522::STATUS_ERROR :Genel Hata. Donanımsal bir sorun veya veri bozulması olabilir.


PCD_Authenticate() komutunun döndürdüğü değer aslında 0,1,2… gibi birer sayıdır. “MFRC522::STATUS_OK” aslında 0’a, MFRC522::STATUS_ERROR ise 1’e eşittir. Döndürülen değerin içeriği “status” değişkenine atanır ve aşağıdaki komutla bu rakamların karşılıkları olan ifadeler ekrana yazdırılır:

  • Serial.println(rfid.GetStatusCodeName(status));

NOT: Eğer sadece Serial.println(status); dersek, ekranda sadece 0, 1 veya 4 gibi rakamlar görürüz. Bu rakamların ne anlama geldiğini ezberlemek zor olduğu için GetStatusCodeName() fonksiyonu kolaylık sağlar.


12. Bloğa veri yazmak için aşağıdaki komut kullanılır:

byte status = rfid.MIFARE_Write(byte blockAddr, byte *buffer, byte bufferSize);

blockAddr : Verinin yazılacağı blok numarası (Örn: 4, 5, 6).

*buffer : Yazmak istediğiniz 16 baytlık veriyi içeren dizi (array).

bufferSize : Yazılacak verinin boyutu. MIFARE Classic için bu değer her zaman 16 olmalıdır.

MIFARE_Write() komutu, doğrulama (authentication) işlemini başarıyla geçtiğiniz bir bloğa veri yazmanızı sağlar. MIFARE Classic 1K kartlarda her veri bloğu tam olarak 16 bayt kapasiteye sahiptir; yani bu komutla tek seferde tam 16 bayt veri gönderirsiniz.


13. Bloktan veri okumak için aşağıdaki komut kullanılır:

int buffersize = 18;

byte status = rfid.MIFARE_Read(byte blockNumber, byte arrayAddress, byte &buffersize);

blockNumber : Okumak istediğimiz bloğun numarasıdır (Örn: 4, 9, 15).

arrayAddress : Karttan gelen verilerin içine yazılacağı dizinin adıdır.

&buffersize : “arrayAddress” dizisinin boyutunu içeren “buffersize” değişkenin adresidir. “buffersize”, değişkendir, sadece bir tam sayıdır. “&buffersize” ise,  bu tam sayı değişkeninin hafızadaki konumunu gösteren bir "işaretçidir".

“buffersize” değişkeni MIFARE Classic için genellikle 18 olarak tanımlanır. 16 veri + 2 CRC’dir. 2 baytlık CRC hata kodudur. MIFARE_Read() komutu, verinin doğruluğunu kontrol etmek için bu CRC’yi kullanır. Bu yüzden veriyi saklayacağımız dizi olan “arrayAddress” en az 18 bayt kapasiteli olmalıdır. Bu nedenle “buffersize” değişkeni 18 olarak tanımlanır. Okuma işleminden sonra kütüphane, karttan tam olarak kaç bayt geldiğini bize bildirmek için bu “buffersize” değişkenini günceller. 


14. rfid.PCD_StopCrypto1();

Bu komutun görevi, okuyucu (PCD) ile kart (PICC) arasındaki şifreli iletişimi (Crypto1) güvenli bir şekilde kapatmaktır. Bir nevi, kartla yapılan şifreli görüşmeden sonra güvenli çıkış ("Log out") yapılmasını sağlar.

Eğer bu komutu kullanmazsak; okuyucu hâlâ bir önceki kartın şifresiyle işlem yapmaya çalışabilir. Böyle bir durumda yeni bir kart yaklaştırdığımızda, okuyucu onu tanımaz veya "Communication Error" (İletişim Hatası) verir. Bir diğer risk ise, okuyucunun şifreleme motoru açık kalır; bu da donanım seviyesinde istenmeyen bir durumdur.

Sonuç olarak bu komut kullanıldığında, bir sonraki kart okuma işlemi temiz bir sayfayla başlar ve haberleşme hataları engellenir.

Ne zaman kullanmalıyız:

  • Bir sektöre girmek için PCD_Authenticate() (Şifre Doğrulama) yaptıysak,

  • MIFARE_Read (Okuma) veya MIFARE_Write (Yazma) ile kartın belli bir bloğuna eriştiysek,

  • İşin bittikten sonra okuyucuyu yeni bir kart için "temizlemek" istiyorsak.


0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörler ve Aygıtların Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com

Blog Archive