RFID RC522 Kullanımı: Arduino ile Kart Okuma ve Kartlı Kapı Kilidi
RC522 RFID modülü nasıl çalışır? 13,56 MHz kart ve anahtarlıklar, 3,3 V SPI bağlantısı, MFRC522 kütüphanesi, UID okuma, yetkili kart kontrolü, servolu kapı kilidi, ESP32 ve Pico kullanımı.
RFID (Radio Frequency IDentification), bir kartı ya da anahtarlığı okuyucuya dokundurmadan radyo dalgalarıyla tanımlama teknolojisidir. Toplu taşıma kartları, ofis giriş kartları, mağazalardaki hırsızlık etiketleri ve evcil hayvanlara takılan çipler hep RFID kullanır. RC522 ise 13,56 MHz'de çalışan, genellikle bir beyaz kart ve mavi bir anahtarlıkla birlikte satılan ucuz bir okuyucu modülüdür. Kartlı kapı kilidinden yoklama sistemine kadar birçok projenin temelidir.

RFID nasıl çalışır?
Okuyucunun kartı üzerindeki bakır anten, 13,56 MHz'lik bir manyetik alan oluşturur. Kartın ya da anahtarlığın içinde ise ince bir bobin ve küçük bir yonga vardır; pil yoktur. Kart alana yaklaştığında bobinde indüklenen enerji yongayı çalıştırır ve yonga, alanı çok hafif değiştirerek okuyucuya kendi kimliğini ve verilerini gönderir. Bu yüzden kartlar hiç şarj edilmeden yıllarca çalışır, ama okuma mesafesi RC522 ile yalnızca 3–5 santimetre kadardır.
Kitlerdeki kartlar genellikle MIFARE Classic 1K tipindedir: 1 KB belleği 16 sektöre, her sektör de 16 baytlık 4 bloğa ayrılır. Her kartın fabrikada yazılmış, genellikle 4 bayt uzunluğunda bir UID'si (benzersiz kimlik numarası) vardır. Basit projelerin çoğu kartın içine veri yazmak yerine bu UID'yi okuyup tanır.
RC522 teknik özellikleri
| Özellik | Değer |
|---|---|
| Çalışma frekansı | 13,56 MHz |
| Besleme | 3,3 V (5 V değil) |
| Akım tüketimi | 13–26 mA |
| Okuma mesafesi | Yaklaşık 3–5 cm (karta göre değişir) |
| Desteklenen kartlar | MIFARE Classic 1K/4K, Ultralight, NTAG (ISO 14443A) |
| Arayüz | SPI (yonga I2C ve UART'ı da destekler) |
RC522 pin bağlantısı (SPI)
RC522 kartla SPI üzerinden konuşur. SCK, MOSI ve MISO pinleri her kartın sabit SPI pinlerine bağlanmalıdır; SDA (SS) ve RST ise istediğin dijital pine bağlanabilir, yeter ki kodda doğru yazılsın. Kartının SPI pinlerini Pinout aracından görebilirsin.
| RC522 pini | Arduino Uno | Arduino Mega | ESP32 | Raspberry Pi Pico |
|---|---|---|---|---|
| SDA (SS) | D10 | 53 | GPIO 5 | GP17 |
| SCK | D13 | 52 | GPIO 18 | GP18 |
| MOSI | D11 | 51 | GPIO 23 | GP19 |
| MISO | D12 | 50 | GPIO 19 | GP16 |
| IRQ | Bağlanmaz | Bağlanmaz | Bağlanmaz | Bağlanmaz |
| GND | GND | GND | GND | GND |
| RST | D9 | 5 | GPIO 22 | GP20 |
| 3.3V | 3.3V | 3.3V | 3V3 | 3V3 |
MFRC522 kütüphanesi ve kart UID'sini okumak
Kütüphane Yöneticisi'nde MFRC522 ara ve GithubCommunity'nin (miguelbalboa) kütüphanesini kur. Aşağıdaki kod okutulan her kartın UID'sini onaltılık (HEX) biçimde Seri Monitör'e yazar:
1#include <SPI.h>
2#include <MFRC522.h>
3
4const int SS_PIN = 10;
5const int RST_PIN = 9;
6
7MFRC522 rfid(SS_PIN, RST_PIN);
8
9void setup() {
10 Serial.begin(9600);
11 SPI.begin();
12 rfid.PCD_Init();
13 Serial.println("Kartı okutun / scan a card");
14}
15
16void loop() {
17 if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return; // kart yok / no card
18
19 Serial.print("UID:");
20 for (byte i = 0; i < rfid.uid.size; i++) {
21 Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
22 Serial.print(rfid.uid.uidByte[i], HEX);
23 }
24 Serial.println();
25
26 rfid.PICC_HaltA(); // kartı beklemeye al / halt the card
27 rfid.PCD_StopCrypto1();
28}Yetkili kart kontrolü
Okunan UID'yi önceden kaydettiğin değerle karşılaştırarak kartın yetkili olup olmadığına karar verebilirsin. Aşağıdaki örnek tek bir yetkili kartı kontrol eder; birden fazla kart için bu diziyi iki boyutlu yapıp döngüyle karşılaştırman yeterlidir:
1// yukarıdaki tanımlar ve setup() aynen / definitions and setup() as above
2byte allowed[4] = {0xDE, 0xAD, 0xBE, 0xEF}; // kendi kartının UID'si / your card's UID
3
4bool isAllowed() {
5 if (rfid.uid.size != 4) return false;
6 for (byte i = 0; i < 4; i++) {
7 if (rfid.uid.uidByte[i] != allowed[i]) return false;
8 }
9 return true;
10}
11
12void loop() {
13 if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
14 Serial.println(isAllowed() ? "İzin verildi / access granted" : "Reddedildi / access denied");
15 rfid.PICC_HaltA();
16 rfid.PCD_StopCrypto1();
17}Servolu kartlı kapı kilidi
Yetkili kart okutulunca bir servo motoru 90 derece çevirip kilidi 3 saniye açan, yetkisiz kartta ise buzzerdan kısa bir uyarı sesi veren bir kilit yapalım. Servo bağlantısı için Servo Motor Nedir?, uyarı sesi için Buzzer Nedir? yazılarına bakabilirsin. Uno'da Servo kütüphanesi Timer1'i, tone() ise Timer2'yi kullandığı için ikisi birlikte sorunsuz çalışır.
1#include <SPI.h>
2#include <MFRC522.h>
3#include <Servo.h>
4
5MFRC522 rfid(10, 9); // SS, RST
6Servo lock;
7const int BUZZER_PIN = 8;
8byte allowed[4] = {0xDE, 0xAD, 0xBE, 0xEF};
9
10void setup() {
11 SPI.begin();
12 rfid.PCD_Init();
13 lock.attach(6);
14 lock.write(0); // kilitli / locked
15}
16
17void loop() {
18 if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
19 bool ok = rfid.uid.size == 4 && memcmp(rfid.uid.uidByte, allowed, 4) == 0;
20 if (ok) {
21 lock.write(90); // kilidi aç / unlock
22 delay(3000);
23 lock.write(0); // tekrar kilitle / lock again
24 } else {
25 tone(BUZZER_PIN, 400, 600); // reddedildi sesi / denied beep
26 }
27 rfid.PICC_HaltA();
28 rfid.PCD_StopCrypto1();
29}ESP32 ve Raspberry Pi Pico ile RC522
ESP32'de aynı MFRC522 kütüphanesi çalışır; VSPI pinlerini kullanıp nesneyi MFRC522 rfid(5, 22); şeklinde tanımlaman yeterlidir. ESP32 3,3 V ile çalıştığı için RC522 ile mükemmel uyum sağlar ve Wi-Fi sayesinde okunan kartları internete kaydedebilirsin. Pico'da MicroPython için mfrc522.py dosyasını (örneğin danjperron'un kütüphanesi) Pico'ya kopyalayıp şöyle kullanabilirsin:
1from mfrc522 import MFRC522 # mfrc522.py Pico'da olmalı / mfrc522.py must be on the Pico
2import time
3
4reader = MFRC522(spi_id=0, sck=18, miso=16, mosi=19, cs=17, rst=20)
5
6while True:
7 reader.init()
8 stat, tag_type = reader.request(reader.REQIDL)
9 if stat == reader.OK:
10 stat, uid = reader.SelectTagSN()
11 if stat == reader.OK:
12 print("UID:", "".join("{:02X}".format(b) for b in uid))
13 time.sleep_ms(200)RFID türleri: RC522 hangi kartları okur?
| Tür | Frekans | Okuma mesafesi | Örnek kullanım |
|---|---|---|---|
| LF RFID | 125 kHz | Yaklaşık 10 cm | Eski kapı kartları, evcil hayvan çipleri (EM4100) |
| HF RFID / NFC | 13,56 MHz | 1–10 cm | Toplu taşıma kartları, MIFARE, telefonlardaki NFC |
| UHF RFID | 860–960 MHz | Metrelerce | Depo, lojistik ve mağaza etiketleri |
RC522 yalnızca 13,56 MHz'lik HF kartları okur. Apartman ve site girişlerinde kullanılan 125 kHz'lik kartlar (çoğu zaman "EM" yazar) RC522 ile okunamaz; onlar için RDM6300 gibi 125 kHz okuyucular gerekir. NFC de 13,56 MHz RFID'nin telefonların okuyabildiği bir türüdür; RC522 NTAG etiketlerin UID'sini okuyabilir.
RFID ile proje fikirleri
- Kartlı kapı ya da çekmece kilidi: Yetkili kartla açılan, yetkisiz kartta uyarı veren bir kilit.
- Yoklama sistemi: Her kartı bir isimle eşleştirip giriş saatini SD karta ya da internete kaydet.
- Karşılama ekranı: Kart okutulunca LCD'de "Hoş geldin" ve kişinin adını göster; ekran için I2C LCD Ekran Kullanımı.
- Hikâye kutusu: Her karta farklı bir ses dosyası atayıp DFPlayer ile çocuklar için sesli bir oyuncak yap.
- Akıllı mama kabı: Tasmasındaki etiketi okutan evcil hayvana mama ver.
- Kartlı oyun: Kartlarla soru-cevap ya da hafıza oyunu kur.
Sık yapılan hatalar ve çözümleri
- Kart hiç okunmuyor ve sürüm 0x0 görünüyor: SPI kabloları yanlış pinlerde; özellikle MOSI ve MISO'nun yerini kontrol et.
- Modülü 5V'a bağlamak: RC522 3,3 V ile beslenir; 5 V modülü bozabilir.
- 125 kHz kart okutmaya çalışmak: RC522 bu kartları göremez; 13,56 MHz kart kullan.
- Kart çok uzakta ya da metal yüzeyde: Kartı 1–3 cm'ye yaklaştır; metal yüzeyler alanı bozar.
- Aynı kart sürekli tekrar okunuyor: PICC_HaltA() çağrılmamış; kartı okuduktan sonra beklemeye al.
- Uzun kablolar: SPI hattı uzun kablolarda bozulur; kabloları 20 cm'nin altında tut.
RFID, "kimsin?" sorusunu bir dokunuşla yanıtladığı için güvenlik ve otomasyon projelerine çok şey katar. BlueGrays uygulamasında RFID değer okuma, LCD ekranlı kart okuyucu ve servolu RFID kapı kilidi projelerini devre şemaları ve kodlarıyla adım adım bulabilirsin.
Sıkça sorulan sorular
RC522 kaç santimetreden kart okur?
Kitlerdeki kart ve anahtarlıklarla genellikle 3–5 cm'den okur. Kartın türü, antenin boyutu ve çevredeki metaller mesafeyi etkiler. Daha uzak mesafe için farklı frekanslarda çalışan UHF okuyucular gerekir.
RC522 hangi kartları okur, 125 kHz kartları okur mu?
RC522 yalnızca 13,56 MHz'lik ISO 14443A kartları okur: MIFARE Classic 1K/4K, Ultralight ve NTAG etiketleri gibi. Apartman girişlerinde yaygın olan 125 kHz EM kartları okuyamaz; onlar için RDM6300 gibi bir 125 kHz okuyucu kullanılır.
RC522 5V ile çalışır mı?
Hayır, RC522 3,3 V ile beslenmelidir. 5V pinine bağlamak modülü bozabilir. Veri pinleri Uno'nun 5 V sinyalleriyle çoğu zaman çalışsa da yonga resmi olarak 5 V toleranslı olmadığından kalıcı projelerde seviye dönüştürücü önerilir.
Kartın UID'si değişir mi, kopyalanabilir mi?
Normal kartların UID'si fabrikada yazılır ve değişmez. Ancak UID'si değiştirilebilen "magic" kartlar vardır ve MIFARE Classic UID'leri bu kartlara kopyalanabilir. Bu yüzden yalnızca UID'ye güvenen bir sistem gerçek güvenlik sağlamaz.
RC522 ile karta veri yazılabilir mi?
Evet. MIFARE Classic kartlarda her sektör bir anahtarla korunur; yeni kartlarda varsayılan anahtar FF FF FF FF FF FF'dir. MFRC522 kütüphanesindeki ReadAndWrite örneğiyle bloklara veri yazıp okuyabilirsin. Her sektörün son bloğu anahtarları tuttuğu için oraya rastgele veri yazmamalısın.
Telefonumu RC522'ye kart gibi okutabilir miyim?
Genellikle güvenilir şekilde olmaz. iPhone'lar NFC'yi kart taklidi için açmaz; Android telefonlar ise her okutmada değişen rastgele bir UID gönderir. Telefonla çalışan bir sistem için NFC etiketi telefonla okutup sonucu Wi-Fi ya da Bluetooth üzerinden karta göndermek daha doğru bir yoldur.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
RFID Değer Okuma
RC522 RFID modülü ile kart veya anahtarlık yaklaştırıldığında seri numarasını Serial Monitor'da okuyan proje. SPI haberleşme ve RFID okuma temellerini öğretir.

ESP32 RFID RC522 Kart Okuyucu (LCD Ekranlı)
Bu projede MFRC522 tabanlı RC522 RFID modülünü ESP32'ye SPI üzerinden bağlayıp kart/etiket UID'sini okuyacağız. Kapı kilidi, üyelik sistemi ve giriş kontrolü gibi uygulamaların temelini oluşturur. Okunan UID'yi LCD ekranda göstereceğiz ve yetkili kart listesi ile karşılaştırma örneği vereceğiz. **DİKKAT:** RC522 sadece **3.3V** ile çalışır, 5V verirseniz modül yanar!

ESP32 RFID Kapı Kilidi (RC522 + Servo + OLED + Buzzer + LED)
ESP32 ile RC522 RFID modülü, SG90 servo motoru, SSD1306 OLED ekran, aktif buzzer ve 2 LED kullanarak akıllı bir kapı kilidi yapıyoruz. Kart okutulduğunda, UID kod içinde tanımlı yetkili kartlar listesiyle karşılaştırılır — yetkiliyse servo motoru döndürerek kilit açılır (yeşil LED + 2 kısa bip), 5 saniye sonra otomatik kilitler. Yetkisiz kartta kırmızı LED yanar, 3 hızlı bip ile uyarı verir ve OLED'de yakalanan UID gösterilir. Gerçek IoT güvenlik senaryosu için pratik ve öğretici — SPI protokolü

Akıllı Elektronik Kasa
Akıllı Elektronik Kasa, Arduino tabanlı şifre korumalı bir güvenlik sistemidir. 4x4 tuş takımı üzerinden girilen 4 haneli şifreyle servo motor kontrollü kilit mekanizmasını açıp kapatır; tüm durum bil

4x4 Keypad LCD Ekran Şifre Uygulaması
4x4 keypad ile şifre girişi yaparak doğruysa servo ile kapı açan, yanlışsa kırmızı LED yakan güvenlik projesi. Şifre karşılaştırma ve servo-LCD-keypad entegrasyonunu öğretir.

ESP32 Hareket Alarm Sistemi (PIR + Buzzer + LED + Telegram)
PIR sensörü hareket algıladığında buzzer ve LED'i aktif eden, aynı anda Telegram üzerinden sahibine anlık bildirim gönderen akıllı bir güvenlik alarm sistemidir. Yanlış alarmları önlemek için 30 saniyelik cooldown (bekleme süresi) mekanizması vardır. Ev güvenliği, garaj izleme, depo veya çalışma odası gibi alanlarda kullanılabilir. Telegram entegrasyonu sayesinde nerede olursanız olun anında haberdar olursunuz. ESP32-CAM kullanılırsa fotoğraflı bildirim eklenebilir, klasik ESP32 DevKit V1 ile me

ESP32 Hareket Algılama Alarmı
ESP32 ve PIR sensörü kullanılarak hazırlanan bu projede hareket algılandığında buzzer devreye girerek sesli alarm verir. Basit ve düşük maliyetli bir güvenlik sistemi uygulamasıdır. (Görseller temsilidir yazılara göre bağlayınız)

ESP32 I2C LCD Ekran (16x2)
Bu projede 16x2 karakter LCD ekranı I2C protokolü üzerinden ESP32'ye bağlayarak metin görüntülüyoruz. I2C sayesinde sadece 2 data pini (SDA ve SCL) ile ekranı kontrol edebiliyoruz; klasik paralel bağlantıdaki 6+ pin israfı ortadan kalkıyor. Kod ilk satıra sabit bir mesaj, ikinci satıra ise her saniye artan bir sayaç yazdırıyor. Ayrıca başlangıçta I2C tarayıcı çalıştırarak ekranın adresini Serial Monitor'a yazdırıyoruz (genelde 0x27 veya 0x3F).
Diğer yazılar
RFID'nin pilsiz kartları nasıl okuduğunu, RC522'yi Arduino'ya güvenle bağlamayı, kart UID'sini okumayı ve yetkili kartla açılan servolu bir kapı kilidi yapmayı öğren.

