Arduino RFID RC522 ile Servo Motor Kontrolü 2025 | Kartlı Güvenlik Sistemi Nasıl Yapılır?

Arduino RFID RC522 Servo Motor Kontrol Projesi Nedir?

Arduino RFID RC522 ile servo motor kontrol projesi, RFID kartları veya etiketleri kullanarak servo motoru otomatik olarak hareket ettiren akıllı güvenlik sistemidir. Bu proje ile kartlı kapı kilidi, otomatik geçiş sistemi veya güvenlik kontrol mekanizması yapabilirsiniz. Yetkili kart algılandığında servo motor harekete geçer ve LED’ler durumu görsel olarak bildirir.

RFID RC522 Modülü Nedir?

RFID RC522, 13.56MHz frekansında çalışan temassız kart okuyucu modülüdür. NFC (Near Field Communication) teknolojisini kullanarak RFID kartlarını 0-3cm mesafeden okuyabilir. Mifare Classic, Mifare Ultralight ve NTAG serisli kartlarla uyumludur.

📡 RFID Teknolojisi Çalışma Prensibi:

  • Elektromanyetik İndüksiyon: 13.56MHz RF sinyali
  • Passive Cards: Kart kendi enerjisini RF’den alır
  • Near Field: 3cm maksimum okuma mesafesi
  • ISO 14443 Protokolü: Standart iletişim protokolü

🔑 Sistem Bileşenleri:

  1. RFID Okuyucu (RC522): Kart algılama
  2. RFID Kartlar/Etiketler: Kimlik tanımlama
  3. Arduino Uno: Ana kontrol ünitesi
  4. Servo Motor: Mekanik hareket
  5. LED Göstergeler: Durum bildirimi

Arduino RFID RC522 Teknik Özellikleri

⚡ RC522 Elektriksel Özellikler:

  • Çalışma Voltajı: 3.3V (Arduino’dan 3.3V besleyin)
  • Akım Tüketimi: 13-26mA
  • Frekans: 13.56MHz ±7kHz
  • İletişim: SPI protokolü
  • Okuma Mesafesi: 0-30mm
  • Veri Hızı: 106 kbit/s

📊 Desteklenen Kart Türleri:

  • Mifare Classic 1K: 1024 byte hafıza
  • Mifare Classic 4K: 4096 byte hafıza
  • Mifare Ultralight: 512 bit hafıza
  • NTAG213/215/216: NFC Forum Type 2
  • ISO 14443 Type A: Standart kartlar

📏 Fiziksel Özellikler:

  • Boyutlar: 40mm x 60mm
  • Anten: PCB üzerinde spiral anten
  • Bağlantı: 8 pin header
  • İndikator: Power ve RF LED’leri

Arduino RFID RC522 Servo Motor Kontrol Malzemeleri

📦 Temel Elektronik Bileşenler:

  • Arduino Uno R3 – Ana mikrokontrolcü kartı
  • RFID RC522 Kart Okuyucu ve Kartlar – Kimlik tanımlama sistemi
  • SG90 Servo Motor – 180° hareket motoru
  • Kırmızı LED – Yetkisiz erişim göstergesi
  • Yeşil LED – Yetkili erişim göstergesi

🔧 Yardımcı Malzemeler:

  • 220Ω Dirençler (2 adet) – LED koruma dirençleri
  • Jumper Kablolar – Bağlantı kabloları
  • Breadboard – Devre montaj tahtası
  • RFID Kartları (çeşitli) – Test kartları
  • RFID Etiketleri – Anahtarlık etiketleri

🏠 Uygulama Malzemeleri:

  • Plastik Kutu – Sistem muhafazası
  • Kapı Kilidi Mekanizması – Servo motor bağlantısı
  • Güç Kaynağı (7-12V) – Harici besleme
  • Mounting Bracket – Servo motor montajı
  • Cable Management – Kablo düzeni

🔒 Güvenlik Geliştirmeleri:

  • Buzzer – Sesli alarm sistemi
  • LCD Ekran – Kullanıcı arayüzü
  • RTC Modülü – Zaman kayıtları
  • SD Kart Modülü – Erişim logları
  • WiFi Modülü – Uzaktan izleme

Arduino RFID RC522 Devre Şeması

📺 Detaylı Çalışma Videosu:

👉 Arduino RFID RC522 Servo Motor Kontrol Projesi – Video Rehber

Video içeriği: RC522 SPI bağlantıları, RFID kart programlama, servo motor kalibrasyonu, güvenlik algoritması geliştirme ve pratik kapı kilidi uygulaması

🔌 RFID RC522 SPI Bağlantıları:

  • 3.3V → Arduino 3.3V (5V değil!)
  • RST → Arduino Pin 9
  • GND → Arduino GND
  • MISO → Arduino Pin 12
  • MOSI → Arduino Pin 11
  • SCK → Arduino Pin 13
  • SDA/SS → Arduino Pin 10

🎛️ Servo Motor Bağlantısı:

  • Kırmızı (VCC) → Arduino 5V
  • Kahverengi (GND) → Arduino GND
  • Turuncu (Signal) → Arduino Pin 6 (PWM)

💡 LED Gösterge Bağlantıları:

  • Yeşil LED → Pin 7 → 220Ω → GND
  • Kırmızı LED → Pin 8 → 220Ω → GND

⚠️ Önemli Bağlantı Uyarısı:

RC522 modülü mutlaka 3.3V ile beslenmelidir. 5V bağlantı modülü kalıcı olarak bozabilir!

Arduino RFID RC522 Servo Kontrol Kodları

📚 Gerekli Kütüphaneler:

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

🔐 Premium Üyeler İçin Komple Kod Paketi:

[Üye Girişi Yaparak Tüm Kodlara Erişin]

Premium paket: Çoklu kart yönetimi, master kart sistemi, erişim zamanı kontrolü, log kayıtları, LCD arayüzü, WiFi uzaktan yönetim

🔑 Temel Arduino RFID Servo Kontrol Kodu:

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

// RFID RC522 pin tanımlamaları
#define RST_PIN 9
#define SS_PIN 10

// LED pin tanımlamaları
#define GREEN_LED 7
#define RED_LED 8

// Servo motor pin
#define SERVO_PIN 6

// RFID ve Servo nesneleri
MFRC522 rfid(SS_PIN, RST_PIN);
Servo doorServo;

// Yetkili kartların UID'leri (örnek değerler)
byte authorizedCards[][4] = {
  {0xDE, 0xAD, 0xBE, 0xEF}, // Kart 1
  {0xCA, 0xFE, 0xBA, 0xBE}, // Kart 2
  {0x12, 0x34, 0x56, 0x78}, // Kart 3
  {0xAA, 0xBB, 0xCC, 0xDD}  // Kart 4
};
const int authorizedCardCount = 4;

// Sistem durumu değişkenleri
bool doorOpen = false;
unsigned long lastCardTime = 0;
unsigned long doorTimeout = 5000; // 5 saniye açık kalma süresi
int attemptCount = 0;
unsigned long blockTime = 0;
const int maxAttempts = 3;
const unsigned long blockDuration = 10000; // 10 saniye blok süresi

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  
  // Servo motor başlatma
  doorServo.attach(SERVO_PIN);
  doorServo.write(0); // Kapalı pozisyon
  
  // LED pinleri
  pinMode(GREEN_LED, OUTPUT);
  pinMode(RED_LED, OUTPUT);
  
  // Başlangıç LED testi
  ledTest();
  
  Serial.println("RFID Kapı Kontrol Sistemi Başlatıldı");
  Serial.println("Yetkili kart sayısı: " + String(authorizedCardCount));
  Serial.println("Kartınızı okutun...");
  
  // Başlangıç durumu
  setAccessDenied();
}

void loop() {
  // Sistem bloklu mu kontrol et
  if (isSystemBlocked()) {
    if (millis() - blockTime > blockDuration) {
      attemptCount = 0;
      Serial.println("Sistem bloku kaldırıldı");
    } else {
      blinkRedLED();
      delay(500);
      return;
    }
  }
  
  // Kapı otomatik kapanma kontrolü
  if (doorOpen && millis() - lastCardTime > doorTimeout) {
    closeDoor();
  }
  
  // RFID kart algılama
  if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
    processRFIDCard();
  }
  
  delay(100);
}

void processRFIDCard() {
  // Okunan kartın UID'sini al
  byte cardUID[4];
  for (int i = 0; i < 4; i++) {
    cardUID[i] = rfid.uid.uidByte[i];
  }
  
  // UID'yi seri porta yazdır
  Serial.print("Okunan kart UID: ");
  printUID(cardUID);
  
  // Yetki kontrolü
  if (isAuthorizedCard(cardUID)) {
    accessGranted();
    attemptCount = 0; // Başarılı girişte sayacı sıfırla
  } else {
    accessDenied();
    attemptCount++;
    
    if (attemptCount >= maxAttempts) {
      blockSystem();
    }
  }
  
  // Kartı durdur
  rfid.PICC_HaltA();
  rfid.PCD_StopCrypto1();
}

bool isAuthorizedCard(byte* cardUID) {
  for (int i = 0; i < authorizedCardCount; i++) {
    bool match = true;
    for (int j = 0; j < 4; j++) {
      if (cardUID[j] != authorizedCards[i][j]) {
        match = false;
        break;
      }
    }
    if (match) {
      Serial.println("Yetkili kart! (Kart " + String(i + 1) + ")");
      return true;
    }
  }
  Serial.println("Yetkisiz kart!");
  return false;
}

void accessGranted() {
  Serial.println("ERİŞİM İZİN VERİLDİ");
  
  // Yeşil LED yak
  setAccessGranted();
  
  // Kapıyı aç
  openDoor();
  
  // Başarı sesi (opsiyonel buzzer için)
  // successBeep();
  
  lastCardTime = millis();
}

void accessDenied() {
  Serial.println("ERİŞİM REDDEDİLDİ");
  
  // Kırmızı LED animasyonu
  for (int i = 0; i < 3; i++) {
    digitalWrite(RED_LED, HIGH);
    delay(200);
    digitalWrite(RED_LED, LOW);
    delay(200);
  }
  
  setAccessDenied();
  
  // Hata sesi (opsiyonel buzzer için)
  // errorBeep();
  
  Serial.println("Kalan deneme hakkı: " + String(maxAttempts - attemptCount));
}

void openDoor() {
  if (!doorOpen) {
    Serial.println("Kapı açılıyor...");
    doorServo.write(90); // 90 derece açık pozisyon
    doorOpen = true;
    
    // Açılma animasyonu
    for (int i = 0; i < 5; i++) {
      digitalWrite(GREEN_LED, HIGH);
      delay(100);
      digitalWrite(GREEN_LED, LOW);
      delay(100);
    }
    digitalWrite(GREEN_LED, HIGH);
  }
}

void closeDoor() {
  if (doorOpen) {
    Serial.println("Kapı kapanıyor...");
    doorServo.write(0); // 0 derece kapalı pozisyon
    doorOpen = false;
    setAccessDenied();
  }
}

void setAccessGranted() {
  digitalWrite(GREEN_LED, HIGH);
  digitalWrite(RED_LED, LOW);
}

void setAccessDenied() {
  digitalWrite(GREEN_LED, LOW);
  digitalWrite(RED_LED, HIGH);
}

void blockSystem() {
  blockTime = millis();
  Serial.println("SİSTEM BLOKE EDİLDİ - " + String(blockDuration/1000) + " saniye");
  
  // Alarm animasyonu
  for (int i = 0; i < 10; i++) {
    digitalWrite(RED_LED, HIGH);
    digitalWrite(GREEN_LED, HIGH);
    delay(100);
    digitalWrite(RED_LED, LOW);
    digitalWrite(GREEN_LED, LOW);
    delay(100);
  }
}

bool isSystemBlocked() {
  return (attemptCount >= maxAttempts && millis() - blockTime < blockDuration);
}

void blinkRedLED() {
  static bool ledState = false;
  ledState = !ledState;
  digitalWrite(RED_LED, ledState);
  digitalWrite(GREEN_LED, LOW);
}

void ledTest() {
  Serial.println("LED test başlatılıyor...");
  
  // Kırmızı LED test
  digitalWrite(RED_LED, HIGH);
  delay(500);
  digitalWrite(RED_LED, LOW);
  
  // Yeşil LED test
  digitalWrite(GREEN_LED, HIGH);
  delay(500);
  digitalWrite(GREEN_LED, LOW);
  
  // Her ikisi birden
  digitalWrite(RED_LED, HIGH);
  digitalWrite(GREEN_LED, HIGH);
  delay(500);
  digitalWrite(RED_LED, LOW);
  digitalWrite(GREEN_LED, LOW);
  
  Serial.println("LED test tamamlandı");
}

void printUID(byte* uid) {
  for (int i = 0; i < 4; i++) {
    if (uid[i] < 0x10) Serial.print("0");
    Serial.print(uid[i], HEX);
    if (i < 3) Serial.print(":");
  }
  Serial.println();
}

// Opsiyonel: Yeni kart ekleme fonksiyonu
void addNewCard() {
  Serial.println("Yeni kart ekleme modu aktif");
  Serial.println("Master kartı okutun...");
  
  // Master kart kontrolü ve yeni kart ekleme
  // Bu fonksiyon gelişmiş uygulamalar için
}

// Opsiyonel: Kart silme fonksiyonu
void removeCard() {
  Serial.println("Kart silme modu aktif");
  // Kart silme algoritması
}

// Opsiyonel: Erişim log kayıtları
void logAccess(byte* uid, bool granted) {
  // SD kart veya EEPROM'a log kaydetme
  Serial.print("LOG: ");
  printUID(uid);
  Serial.println(granted ? " - GRANTED" : " - DENIED");
}

RFID Kart Programlama ve Yönetimi

🔑 Kart UID Okuma:

void readCardUID() {
  if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
    Serial.print("Kart UID: ");
    for (int i = 0; i < rfid.uid.size; i++) {
      if (rfid.uid.uidByte[i] < 0x10) Serial.print("0");
      Serial.print(rfid.uid.uidByte[i], HEX);
      if (i < rfid.uid.size - 1) Serial.print(":");
    }
    Serial.println();
  }
}

📝 Kart Veri Yazma:

void writeToCard() {
  byte dataBlock[] = {0x01, 0x02, 0x03, 0x04};
  byte blockAddr = 4;
  
  MFRC522::StatusCode status = rfid.MIFARE_Write(blockAddr, dataBlock, 16);
  if (status == MFRC522::STATUS_OK) {
    Serial.println("Veri yazıldı");
  } else {
    Serial.println("Yazma hatası");
  }
}

Servo Motor Kontrolü ve Optimizasyon

⚙️ Servo Motor Özellikleri (SG90):

  • Tork: 1.8kg/cm (4.8V)
  • Hız: 0.1s/60° (4.8V)
  • Açı Aralığı: 180°
  • Kontrol Sinyali: PWM (50Hz)
  • Pulse Width: 1-2ms (1.5ms=90°)

🎯 Servo Kalibrasyonu:

void calibrateServo() {
  Serial.println("Servo kalibrasyon başlatılıyor...");
  
  // Minimum pozisyon (0°)
  doorServo.write(0);
  delay(1000);
  Serial.println("0° pozisyon - Kapı kapalı");
  
  // Maksimum pozisyon (90°)
  doorServo.write(90);
  delay(1000);
  Serial.println("90° pozisyon - Kapı açık");
  
  // Başlangıç pozisyonu
  doorServo.write(0);
  delay(500);
  Serial.println("Kalibrasyon tamamlandı");
}

RFID Güvenlik Algoritmaları

🔒 Çoklu Güvenlik Katmanları:

  1. UID Doğrulama: Kart kimlik kontrolü
  2. Zaman Kontrolü: Erişim saatleri sınırlaması
  3. Deneme Sayısı: Brute force koruması
  4. Master Kart: Yönetici yetkisi
  5. Log Kayıtları: Erişim geçmişi

🛡️ Anti-Cloning Koruması:

bool validateCard(byte* uid) {
  // Challenge-response authentication
  byte challenge[16] = {0x01, 0x02, 0x03, /*...*/};
  byte response[16];
  
  // Karttan response al
  if (authenticateCard(challenge, response)) {
    return verifyResponse(challenge, response);
  }
  return false;
}

Arduino RFID RC522 Avantajları

🎯 Teknolojik Üstünlükler:

  • Temassız Teknoloji: Fiziksel temas gerektirmez
  • Hızlı Okuma: <100ms tepki süresi
  • Güvenilir: ISO 14443 standartı
  • Düşük Güç: Passive kart teknolojisi

🔐 Güvenlik Avantajları:

  • Kopya Koruması: Unique ID sistemi
  • Şifreleme: Crypto1 algoritması
  • Çoklu Kart: Farklı yetki seviyeleri
  • Log Sistemi: Erişim kayıtları

💡 Uygulama Avantajları:

  • Kolay Kullanım: Kart yaklaştırma yeterli
  • Dayanıklı: Aşınma yok
  • Hızlı: Anlık erişim kontrolü
  • Genişletilebilir: Modüler sistem

RFID RC522 Kurulumu ve Kalibrasyon

🔧 Donanım Kurulumu:

  1. SPI Bağlantısı: Doğru pin mapping
  2. Güç Besleme: 3.3V kritik önemde
  3. Anten Konumu: RF alanı optimizasyonu
  4. Servo Montajı: Mekanik bağlantı
  5. LED Göstergeler: Kullanıcı geri bildirimi

📡 RF Optimizasyonu:

  1. Anten Yönelimi: Maksimum okuma mesafesi
  2. Metal Engeller: RF gölgelenmesi
  3. Elektronik Gürültü: EMI filtreleme
  4. Kart Kalitesi: Uyumlu kart seçimi

RFID Sorun Giderme

⚠️ Yaygın Problemler:

Kart Okunmuyor:

  • Güç Kontrolü: 3.3V besleme kontrolü
  • SPI Bağlantısı: MISO/MOSI/SCK kontrol
  • Kart Mesafesi: 0-30mm arası
  • Kart Türü: Desteklenen format kontrolü

Servo Çalışmıyor:

  • PWM Sinyali: Pin 6 PWM kontrolü
  • Güç Yetersizliği: Servo için yeterli akım
  • Bağlantı: Signal, VCC, GND kontrol
  • Kalibrasyon: Servo pozisyon ayarı

Yanlış UID Okuma:

  • Kart Kalitesi: Hasarlı/kirli kart
  • RF Girişimi: Elektromanyetik gürültü
  • Çoklu Kart: Aynı anda birden fazla kart
  • Okuma Hızı: Çok hızlı hareket

İleri Seviye RFID Uygulamaları

🌐 IoT Entegrasyonu:

  • WiFi Modülü: Uzaktan erişim kontrolü
  • Cloud Database: Merkezi kart yönetimi
  • Push Notifications: Anlık bildirimler
  • Web Interface: Browser’dan yönetim

📱 Mobil Uygulama:

  • NFC Phone: Telefon kartı olarak kullanım
  • Admin Panel: Kart ekleme/silme
  • Access Logs: Erişim geçmişi görüntüleme
  • Real-time Status: Anlık durum bilgisi

🤖 Yapay Zeka Özellikleri:

  • Pattern Recognition: Kullanım alışkanlığı analizi
  • Anomaly Detection: Anormal erişim tespiti
  • Predictive Security: Öngörülü güvenlik
  • Adaptive Timeout: Akıllı zaman aşımı

RFID vs Diğer Erişim Kontrolü Sistemleri

ÖzellikRFIDŞifreli TuşBiyometrikMobil App
HızÇok HızlıYavaşOrtaHızlı
GüvenlikYüksekOrtaÇok YüksekYüksek
MaliyetDüşükÇok DüşükYüksekOrta
KullanımÇok KolayKolayOrtaKolay
BakımAzAzFazlaOrta
Kopya RiskDüşükYüksekÇok DüşükDüşük

Arduino RFID RC522 Maliyet Analizi 2025

MalzemeOrtalama Fiyat (TL)
Arduino Uno R345-60
RFID RC522 Modülü15-25
RFID Kartları (5 adet)10-15
SG90 Servo Motor12-20
LED’ler ve Dirençler3-5
Breadboard ve Kablolar10-15
Plastik Kutu8-15
Güç Kaynağı15-25
Montaj Malzemeleri10-20
Toplam128-200 TL

Güvenlik ve Yasal Konular

🔒 Veri Güvenliği:

  • Şifreleme: Kart verileri şifreleme
  • Access Control: Yetkilendirme matrisi
  • Audit Trail: Erişim denetim izi
  • Data Protection: Kişisel veri koruması

📋 Yasal Gereklilikler:

  • GDPR Uyumluluk: Avrupa veri koruma
  • KVKK: Türkiye kişisel veri kanunu
  • ISO 27001: Bilgi güvenliği standardı
  • Access Logs: Yasal kayıt tutma

⚠️ Güvenlik Riskleri:

  • Cloning: Kart kopyalama riski
  • Eavesdropping: RF dinleme saldırıları
  • Relay Attack: Mesafe uzatma saldırısı
  • Side Channel: Yan kanal saldırıları

Pratik Uygulama Örnekleri

🏠 Ev Güvenlik Sistemi:

  • Kapı Kilidi: Otomatik kapı açma
  • Garaj Kapısı: Araç girişi kontrolü
  • Alarm Entegrasyonu: Güvenlik sistemi
  • Misafir Kartları: Geçici erişim

🏢 Ofis Uygulamaları:

  • Personel Girişi: Çalışan erişim kontrolü
  • Zaman Takibi: Mesai saatleri kayıtları
  • Bölgesel Erişim: Departman bazlı yetki
  • Ziyaretçi Yönetimi: Misafir kartları

🎓 Eğitim Kurumları:

  • Öğrenci Kartları: Okul girişi
  • Laboratuvar Erişimi: Bölüm bazlı yetki
  • Kütüphane Sistemi: Kitap ödünç alma
  • Kantin Ödemeleri: Cashless sistem

Sonuç

Arduino RFID RC522 ile servo motor kontrol projesi, modern erişim kontrolü ve güvenlik sistemlerinin temellerini öğrenmek için mükemmel bir başlangıç projesidir. Bu proje ile RFID teknolojisi, servo motor kontrolü ve güvenlik algoritmaları konularında praktik deneyim kazanabilirsiniz. Ev güvenliğinden endüstriyel uygulamalara kadar geniş kullanım alanına sahiptir.

Önemli Notlar:

  • RC522 modülü mutlaka 3.3V ile beslenmelidir
  • RFID kartların UID’lerini önce okuyup koda ekleyin
  • Servo motor için yeterli güç kaynağı sağlayın
  • Güvenlik algoritmasını projenize göre optimize edin
  • 📺 Gerekli tüm bilgiler videoda detaylı anlatılmıştır
  • ⚠️ Lütfen öncelikle videoyu dikkatlice izleyiniz

🎥 Video Rehber İçeriği:

  • RFID RC522 modülü tanıtımı ve SPI protokolü
  • Arduino Uno ile doğru bağlantı şeması
  • RFID kart UID okuma ve kaydetme
  • Servo motor kalibrasyonu ve pozisyonlama
  • Güvenlik algoritması programlama
  • LED gösterge sistemi entegrasyonu
  • Pratik kapı kilidi uygulaması
  • Sorun giderme ve optimizasyon teknikleri
  • İleri seviye güvenlik özellikleri
  • Gerçek hayat uygulama örnekleri

Anahtar Kelimeler: RFID servo motor kontrol, RC522 kart okuyucu, Arduino kapı kilidi, RFID güvenlik sistemi, servo motor RFID projesi, Arduino erişim kontrolü, RFID kart programlama, RC522 SPI bağlantısı, otomatik kapı sistemi, Arduino güvenlik projesi

Devre Şeması

Çalışma Videosu

Gerekli Kodlar :

Kütüphane Dosyası : 


Premium Üyeler İçin Gerekli Kodlar: 

[member]   [/member]


NOT : Değiştirmeniz gereken yerleri video da bahsettik. Yapamazsanız lütfen videoyu izlemeyi unutmayınız.