RFID yoklama sistemi, her öğrenciye bir RFID kart verilip kartın RC522 okuyucuya okutulmasıyla çalışır. Arduino kartın UID numarasını okur, listedeki isimle eşleştirir ve ismi LCD ekranda gösterir. İsteğe bağlı SD kart modülü her okutmayı bir dosyaya kaydeder. Sistem yalnızca kart numarası ve isim saklamalıdır.
Okulunuzda yoklamayı kâğıt yerine kartla almak ister misiniz? Bu yazıda Arduino Uno, RC522 RFID okuyucu ve I2C LCD ekranla bir yoklama sistemi kuruyoruz. Kart numarasını okumayı, isimle eşleştirmeyi ve isteğe bağlı olarak SD karta kaydetmeyi anlatıyoruz. Kişisel verileri nasıl koruyacağınızı da açıklıyoruz.
RFID yoklama sistemi nedir?
RFID yoklama sistemi, öğrencilerin kartlarını bir okuyucuya yaklaştırarak "geldim" bilgisini kaydettiği elektronik bir yoklama düzenidir. RFID, radyo frekansıyla tanımlama demektir. Kartın içinde küçük bir çip ve bir anten bobini vardır; pili yoktur.
Okuyucu 13,56 MHz frekansında bir manyetik alan oluşturur. Kart bu alana girince bobininde enerji oluşur ve çip çalışır. Çip, kendine özgü kimlik numarasını (UID) okuyucuya geri gönderir. Bu iş, kart birkaç santimetre yaklaştırıldığında saniyenin küçük bir bölümünde olur. Ayrıntıları RFID nedir, RC522 nasıl kullanılır yazısında anlattık.
Hangi malzemeler gerekir?
RFID yoklama sistemi için Arduino Uno, RC522 RFID kiti, I2C modüllü 16x2 LCD ve jumper kablolar yeterlidir. SD kart modülü ve buzzer isteğe bağlıdır.
Malzeme listesi
| Malzeme | Adet | Ne işe yarar? |
|---|---|---|
| Arduino UNO R3 | 1 | Kartı okur, ismi bulur, kaydeder |
| RC522 RFID NFC kiti (kart ve anahtarlık dahil) | 1 | 13,56 MHz kartların UID'sini okur |
| 16x2 mavi LCD, I2C modüllü | 1 | Öğrencinin ismini gösterir |
| Micro SD kart okuyucu modül | 1 (isteğe bağlı) | Okutmaları dosyaya kaydeder |
| 5V aktif buzzer | 1 (isteğe bağlı) | Okutmada kısa bip sesi verir |
| Erkek-dişi jumper kablo | 15-20 | Modülleri karta bağlar |
Kitte bir kart ve bir anahtarlık bulunur. Sınıfın tamamı için aynı frekansta (13,56 MHz, MIFARE uyumlu) ek kart almanız gerekir. 125 kHz kartlar RC522 ile okunmaz. Breadboard, ortak 5V ve GND hattı için işinizi kolaylaştırır.
Devre nasıl bağlanır?
RC522 SPI hattıyla D10-D13 ve D9'a, LCD I2C hattıyla A4 ve A5'e, SD modülü aynı SPI hattına ve D4'e bağlanır. RC522 3,3V ile beslenir; 5V'a bağlamayın.
| Modül | Modül ucu | Arduino pini |
|---|---|---|
| RC522 | SDA (SS) / SCK / MOSI / MISO | D10 / D13 / D11 / D12 |
| RC522 | RST / 3.3V / GND | D9 / 3.3V / GND |
| I2C LCD | SDA / SCL / VCC / GND | A4 / A5 / 5V / GND |
| SD modülü | CS / SCK / MOSI / MISO | D4 / D13 / D11 / D12 |
| SD modülü | VCC / GND | 5V / GND |
| Aktif buzzer | + / − | D7 / GND |
SD modülü ve RC522 aynı SCK, MOSI ve MISO hatlarını paylaşır; Arduino hangisiyle konuşacağını CS (SS) pinleriyle seçer. Arduino için yapılmış SD modüllerinde 3,3V regülatörü bulunur ve 5V'a bağlanır; modülünüzde yalnızca 3V3 yazıyorsa 3,3V'a bağlayın. LCD bağlantısının ayrıntısını 16x2 LCD ekran bağlantısı yazısında bulabilirsiniz.
Kartın UID numarası nasıl okunur?
Kartın UID numarası, aşağıdaki kod yüklenip kart okuyucuya yaklaştırıldığında Seri Monitör'de ve LCD'de "A1B2C3D4" gibi onaltılık (hex) bir sayı olarak görünür. İsim listesini hazırlamak için önce her kartın UID'sini öğrenmeniz gerekir.
- Arduino IDE'de Kütüphane Yöneticisi'nden "MFRC522" ve "LiquidCrystal I2C" kütüphanelerini kurun. SD kütüphanesi IDE ile birlikte gelir.
- Aşağıdaki kodu yükleyin ve Seri Monitör'ü 9600 baud hızında açın.
- Kartları tek tek okuyucuya yaklaştırın. Her kartın UID'si ekrana yazılır.
- Her kartın üzerine bir sıra numarası yazın ve UID'leri bir kâğıda not edin.
- Koddaki listeye UID ve isimleri ekleyip kodu yeniden yükleyin.
Yoklama kodu nasıl çalışır?
Kod, okunan UID'yi listedeki kayıtlarla karşılaştırır; eşleşen ismi LCD'de gösterir, aynı kart ikinci kez okutulursa "Zaten var" yazar ve SD kart takılıysa her okutmayı YOKLAMA.CSV dosyasına ekler.
#include <SPI.h>
#include <MFRC522.h>
#include <SD.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
MFRC522 rfid(10, 9); // SS, RST
LiquidCrystal_I2C lcd(0x27, 16, 2); // ekran yoksa 0x3F deneyin
const byte SD_CS = 4, BUZZER = 7;
bool sdVar = false;
struct Ogrenci { const char* uid; const char* ad; bool geldi; };
Ogrenci liste[] = {
{"A1B2C3D4", "Ayse Y.", false},
{"0F1E2D3C", "Mehmet K.", false},
};
const byte SAYI = sizeof(liste) / sizeof(liste[0]);
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
lcd.init();
lcd.backlight();
pinMode(BUZZER, OUTPUT);
sdVar = SD.begin(SD_CS);
lcd.print(F("Karti okutun"));
}
void loop() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
String uid = "";
for (byte i = 0; i < rfid.uid.size; i++) {
if (rfid.uid.uidByte[i] < 0x10) uid += "0";
uid += String(rfid.uid.uidByte[i], HEX);
}
uid.toUpperCase();
rfid.PICC_HaltA();
String ad = "Kayitsiz kart";
for (byte i = 0; i < SAYI; i++) {
if (uid == liste[i].uid) {
ad = liste[i].geldi ? "Zaten var" : liste[i].ad;
liste[i].geldi = true;
}
}
lcd.clear();
lcd.print(ad);
lcd.setCursor(0, 1);
lcd.print(uid);
Serial.println(uid + ";" + ad);
if (sdVar) {
File f = SD.open("YOKLAMA.CSV", FILE_WRITE);
if (f) { f.print(millis() / 1000); f.print(';'); f.print(uid); f.print(';'); f.println(ad); f.close(); }
}
digitalWrite(BUZZER, HIGH); delay(150); digitalWrite(BUZZER, LOW);
delay(1500);
lcd.clear();
lcd.print(F("Karti okutun"));
}
Dosyadaki ilk sütun, Arduino açıldığından beri geçen saniyedir. Gerçek saat ve tarih için bir DS3231 saat modülü ekleyebilirsiniz. SD karta kayıt mantığını SD kart modülü ile veri kaydı yazısında anlattık. LCD Türkçe karakter gösteremez; isimleri "Ayse" gibi Türkçe karaktersiz yazın.
Kişisel veriler nasıl korunur?
Kişisel veriler, sisteme yalnızca gerekli en az bilgi (kart numarası ve isim) yazılarak ve proje öğretmen izniyle yürütülerek korunur. Öğrencilerin isimleri ve yoklama kayıtları kişisel veridir; Türkiye'de 6698 sayılı Kişisel Verilerin Korunması Kanunu (KVKK) kapsamındadır.
- Sisteme yalnızca kart UID'si ve isim yazın. T.C. kimlik numarası, telefon, adres ya da fotoğraf eklemeyin.
- Projeyi öğretmeninizin izniyle yapın. Arkadaşlarınıza verilerinin ne için kullanılacağını söyleyin ve katılmak istemeyeni zorlamayın.
- Denemelerde gerçek isim yerine "Ogrenci 1" gibi takma adlar kullanabilirsiniz.
- SD karttaki dosyayı internette paylaşmayın. Proje bitince kayıtları silin.
Hangi güvenlik kurallarına dikkat edilmeli?
Sistem USB'den 5 V ile çalıştığı için güvenlidir; yine de şu kurallara uyun:
- Devreyi yalnızca bilgisayarın USB çıkışından ya da USB powerbank'tan besleyin. 220V şebeke elektriğine hiçbir şey bağlamayın.
- Projeyi bir öğretmen ya da yetişkin gözetiminde kurun.
- RC522'yi 5V'a bağlamayın; modül 3,3V ile çalışır ve 5V'ta zarar görebilir.
- SD kartı takıp çıkarmadan önce USB kablosunu çıkarın; aksi hâlde dosya bozulabilir.
- Banka kartı gibi kişisel kartları okuyucuya okutmayın ve numaralarını kaydetmeyin.
Ödevinizi nasıl sunarsınız?
Ödevinizi, sistemi canlı çalıştırıp kâğıt yoklama ile kartlı yoklamanın süresini karşılaştırarak sunabilirsiniz.
- Problem: "Kâğıtla yoklama zaman alır ve hata yapılabilir."
- Deney: 10 kişilik bir grupta önce isim okuyarak, sonra kartla yoklama alın; iki süreyi kronometreyle ölçün.
- Test: Kayıtsız bir kartı ve aynı kartın iki kez okutulmasını gösterin.
- Gizlilik: Hangi bilgiyi neden saklamadığınızı anlatın.
- Geliştirme: Saat modülü, gelmeyenlerin listesi ya da Wi-Fi ile tabloya aktarma fikirlerini önerin.
Sunumda okuyucuyu bir kutunun kapağının altına yerleştirin ve kapağa "Kartınızı buraya okutun" yazın. RC522 ince plastik ve kartondan okur. Farklı kart ve anahtarlıklar için RFID okuyucu ve etiketler kategorisine bakabilirsiniz.
Sık sorulan sorular
Kartın UID numarası değiştirilebilir mi?
Normal MIFARE kartların UID'si fabrikada yazılır ve değiştirilemez. Ancak UID'si değiştirilebilen özel kopyalama kartları da satılır. Bu yüzden yalnızca UID'ye dayanan bir sistem, okul yoklaması gibi basit işler için uygundur, ama kapı kilidi ya da ödeme gibi güvenlik gerektiren işler için yeterli değildir. Bu sınırı sunumunuzda belirtmek iyi bir puan kazandırır.
Kart okunmuyorsa ne yapmalıyım?
Önce RC522'nin 3,3V pinine bağlı olduğunu ve SDA ucunun D10'a, RST ucunun D9'a takıldığını kontrol edin. Kartın 13,56 MHz olduğundan emin olun; 125 kHz kartlar okunmaz. Kartı okuyucunun ortasına, 1-3 cm mesafeye düz tutun. Modülün pinleri lehimsizse temas kopabilir; pin başlığını lehimletmek sorunu çoğu zaman çözer.
LCD ekranda yazı görünmüyorsa ne yapmalıyım?
LCD'de yazı görünmüyorsa önce I2C modülünün arkasındaki mavi kontrast ayarını küçük bir tornavidayla çevirin. Ekranın arka ışığı yanıyor ama yazı yoksa genellikle sorun budur. Yine görünmüyorsa koddaki 0x27 adresini 0x3F yapın. SDA ucunun A4'e, SCL ucunun A5'e takıldığını da kontrol edin.
Kaç öğrenci kaydedilebilir?
Arduino Uno'da yaklaşık 20 öğrencilik bir liste rahatça çalışır. Uno'nun yalnızca 2 KB çalışma belleği vardır ve SD kütüphanesi bunun bir bölümünü kullanır. Liste çok uzarsa kart okunurken Arduino kararsız davranabilir; derleme sonunda IDE'nin gösterdiği bellek kullanımı yüzde 75'i geçmemelidir. Daha kalabalık listeler için Arduino Mega kullanabilir ya da isim listesini SD karttaki bir dosyadan okuyabilirsiniz.
SD kart olmadan kayıt tutulabilir mi?
Evet, SD kart olmadan da kayıt tutulabilir. Kod her okutmayı Seri Monitör'e "UID;isim" biçiminde yazar. Bu satırları kopyalayıp bir tablo programına yapıştırabilirsiniz. Ancak Arduino bilgisayara bağlı değilken bilgiler kaybolur. Sistem bilgisayarsız çalışacaksa SD kart modülü kullanmak daha doğrudur. CSV dosyası daha sonra tablo programında doğrudan açılabilir.
Özet
- RFID yoklama sistemi, kartın UID numarasını okuyup listedeki isimle eşleştirir.
- RC522 SPI ile D9-D13'e bağlanır ve 3,3V ile beslenir; LCD I2C ile A4 ve A5'e bağlanır.
- SD modülü aynı SPI hattını kullanır, CS ucu D4'e bağlanır; kayıtlar YOKLAMA.CSV dosyasına yazılır.
- Sisteme yalnızca kart numarası ve isim yazın; projeyi öğretmen izniyle yapın.
- UID tek başına yüksek güvenlik sağlamaz; okul yoklaması gibi basit işler içindir.
- Devreyi yalnızca USB ile, yetişkin gözetiminde çalıştırın.
