
Arkadaşlar Merhaba ;
2 dönem serimizin ilk uygulaması olan RFID ile manyetik kart kapı açma kapama uygulamasını yapacağız
öncelikle bağlantı şemamızı yapalım

bu uygulamamızda ilk defa servo motor kullanacağız bu nedenle yazılan kodları iyice anlayarak hakim olmaya çalışalım elimizdeki kartı önce seri ekranda okutup id sini alalım daha sonra kodların içerisine ekleyerek geçerli kart olmasını sağlayalım
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Pin Tanımlamaları
#define RST_PIN 9
#define SS_PIN 10
#define SERVO_PIN 6
MFRC522 rfid(SS_PIN, RST_PIN);
Servo kilitServo;
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD adresi genellikle 0x27'dir
// --- KART EKLEME BÖLÜMÜ ---
// Buraya istediğin kadar kart ID'si ekleyebilirsin.
// Kendi kart ID'lerini seri port ekranından öğrenip buraya yazmalısın.
String izinVerilenKartlar[] = {
"63 EA F6 04",
"C3 12 37 16",
"XX XX XX XX" // Yeni kartları buraya ekle
};
int kartSayisi = sizeof(izinVerilenKartlar) / sizeof(izinVerilenKartlar[0]);
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
kilitServo.attach(SERVO_PIN);
kilitServo.write(0); // Başlangıçta kilitli (0 derece)
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Sistem Hazir");
lcd.setCursor(0, 1);
lcd.print("Kart Okutunuz...");
Serial.println("RFID Okuyucu Hazir...");
}
void loop() {
// Yeni kart okunduğunda
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
return;
}
// Okunan kartın ID'sini String formatına çevirelim
String okunanUID = "";
for (byte i = 0; i < rfid.uid.size; i++) {
okunanUID += String(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
okunanUID += String(rfid.uid.uidByte[i], HEX);
}
okunanUID.trim();
okunanUID.toUpperCase();
Serial.print("Okunan Kart ID: ");
Serial.println(okunanUID);
bool erisimIzni = false;
// Kartın listede olup olmadığını kontrol et
for (int i = 0; i < kartSayisi; i++) {
if (okunanUID == izinVerilenKartlar[i]) {
erisimIzni = true;
break;
}
}
if (erisimIzni) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Erisim Onaylandi");
lcd.setCursor(0, 1);
lcd.print("Hosgeldiniz!");
kilitServo.write(90); // Kapıyı aç (90 derece)
delay(3000); // 3 saniye bekle
kilitServo.write(0); // Kapıyı kapat
ekraniSifirla();
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("GECERSIZ KART!");
lcd.setCursor(0, 1);
lcd.print("ID: " + okunanUID);
delay(2000);
ekraniSifirla();
}
rfid.PICC_HaltA(); // Okumayı durdur
}
void ekraniSifirla() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistem Hazir");
lcd.setCursor(0, 1);
lcd.print("Kart Okutunuz...");
}
- Kodu yükledikten sonra Arduino IDE’de Seri Port Ekranını (Serial Monitor) aç.
- Kartını RFID okuyucuya yaklaştır. Ekranda
Okunan Kart ID: A3 B1 C2 D4gibi bir kod göreceksiniz. - Bu kodu koddaki
izinVerilenKartlardizisinin içine kopyalamalısınız.
Eğer LCD’de yazı görünmezse, LCD’nin arkasındaki küçük potansiyometreyi (mavi kutu) bir tornavida ile çevirerek kontrastı ayarlamalıyız
kodlarımızı attıktan sonra MFRC522 hatası alabilirsiniz telaşlanmayın bu mfrc kütüphanesinin yüklü olmadığının uyarısıdır bunu gidermek için ise öncelikle kütüphaneleri yönet sekmesini açıyoruz

açılan sekmenin arama kısmına MFRC522 yazıp ilgili kütüphaneyi bulup “kur” butonuna tıklayarak kurulmasını sağlıyoruz

bu işlemden sonra MFRC522 hatası almayacaksınız…
servo motor ile ilgili bilmemiz gerekenler
kullandığımız servo motor 180 derece dönmektedir ve en önemlisi bu 180 derece dönüşünü 0.3 saniyede yapmaktadır yani kodlarımızın içeridine bir hamlesinin ardından delay(200); komutunu yazarsanız kendi hareketini tamamlamadan yeni komut istendiği için titreme yapıp kararsız davranacaktır , bu nedenle mutlaka hareketler arası minimum delay(300); olmalıdır.

servo motor bağlantısı 3 kablodan oluşur data,voltaj ve gnd

aşşağıda basit bir kod örneği bulunmaktadır..

