Rfid kart ile Bilgisayarda Oturum Açma

Oğuzhan Yılmaz
4 min readSep 27, 2019

--

Beraber yapacağımız projedeki amacımız Windows kullanıcı giriş ekranında, “RFID” kartımızı okuttuğumuz zaman giriş yapılabilmesini amaçlıyoruz.

Her şeyden önce Rfid teknolojisine değinecek olursak:

Rfid Logo

“Radio-FrequencyIDentification” tanımının baş harflerinden adını alan RFID, küçük bir çip ve anten içeren küçük devrelere sahip bir elektronik cihazdır. İçerdiği çip genellikle 2,000 byte veya daha azı kapasitesinde bilgi içerebilir. RFID teknolojisi, adından da anlaşılacağı gibi, radyo frekansı kullanarak nesneleri tekil ve otomatik olarak tanıma yöntemidir.

Yapmak istediğimiz proje için ihtiyacımız olan ürünler olacak bunları benim belirttiğim linklerden veya siz nereden daha uygun bulabilirseniz alabilirsiniz. Arduino Leonardo aynı chipseti kullandığı sürece klon olması önemli değil.

Arduino Leonardo

Arduino Leonardo

RC522 RFID Kiti

Micro Usb Kablo

Arduino IDE

7 adet Female-Male Jumper Kablo

Mini breadboard (Opsiyonel)

Projede Arduino Leonardo kullanmamızdaki amacımız; ATmega32u4 mikrodenetleyici sayesinde bilgisayarımızın Arduino’yu fiziksel bir klavye olarak görmesini sağlar.

Amacımız bilgisayarın açılış ekranı geldikten sonra rfid kartını okuyup kontrol ettikten sonra, eğer veriler uyuşuyorsa “Enter” tuş girişi gönderilecek. Sonrasında kullanıcı girişi sayfası gelecek ve sonrasında kodumuzda yazdığımız şifreyi klavye girişi olarak bilgisayarımıza yollayıp giriş yapmamız sağlanacak.

RC522 RFID Kitini, Arduino Ide’de programlayabilmemiz için kütüphanesinin Arduino Ide’ye eklenmesi gerekiyor. Buradan zip dosyasını indirin. Arduino Ide’deki taslak sekmesini seçin orada library ekleyin’i seçin. “.ZIP Kitaplığı Ekleyin” kısmını seçerek vermiş olduğum ZIP dosyasını buradan ekleyin.

Aşağıda Fritzing’de çizmiş olduğum devre şemasına uygun bir şekilde devreyi kurunuz.

Devre Şeması

Elimizde bulunan kartın decimal numaralarını öğrenmemiz gerekiyor. Bunun için Arduino IDE’de öncü bir program yükleyip; seri port ekranından bu numaraları öğrenmemiz gerekir.

Seri Port Ekranı

Arduino Leonardo’yu devre şemasına göre bağlayın, üzerindeki micro usb ile bilgisayara bağlayın. Arduino IDE’yi açtıktan sonra menüden “araçlar” seçeneği seçin ve orada “kart:…” kısmından Arduino Leonardo’yu seçin. Port kısmından Arduino Leonardo’nun bağlı olduğu portu seçin. Sonrasında aşağıdaki kodu Arduino’nuza yükleyin. Yüklendikten sonra “araçlar” seçeneğinden “Seri Port Ekranı” seçeneğini seçiniz. Kartınızı okutunun ve decimal kısmını bir yere not edin giriş işlemi kısmında kullanmamız gerekecek.

#include <SPI.h>
#include <RFID.h>

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);

// Setup variables:
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;

void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.init();
Serial.println(“Hazır”);

}

void loop()
{

if (rfid.isCard()) {
if (rfid.readCardSerial()) {
if (rfid.serNum[0] != serNum0
&& rfid.serNum[1] != serNum1
&& rfid.serNum[2] != serNum2
&& rfid.serNum[3] != serNum3
&& rfid.serNum[4] != serNum4
) {
/* Yeni bir kart numarası göster. */
Serial.println(“ “);
Serial.println(“Kart Bulundu!”);
serNum0 = rfid.serNum[0];
serNum1 = rfid.serNum[1];
serNum2 = rfid.serNum[2];
serNum3 = rfid.serNum[3];
serNum4 = rfid.serNum[4];

//Serial.println(“ “);
Serial.println(“Kart Numarası:”);
Serial.print(“Decimal: “);
Serial.print(rfid.serNum[0],DEC);
Serial.print(“, “);
Serial.print(rfid.serNum[1],DEC);
Serial.print(“, “);
Serial.print(rfid.serNum[2],DEC);
Serial.print(“, “);
Serial.print(rfid.serNum[3],DEC);
Serial.print(“, “);
Serial.print(rfid.serNum[4],DEC);
Serial.println(“ “);

Serial.print(“Hexadecimal: “);
Serial.print(rfid.serNum[0],HEX);
Serial.print(“, “);
Serial.print(rfid.serNum[1],HEX);
Serial.print(“, “);
Serial.print(rfid.serNum[2],HEX);
Serial.print(“, “);
Serial.print(rfid.serNum[3],HEX);
Serial.print(“, “);
Serial.print(rfid.serNum[4],HEX);
Serial.println(“ “);
} else {
/* Aynı ID’ye sahipse, sadece bir nokta yaz. */
Serial.print(“.”);
}
}
}

rfid.halt();
}

Şimdi en başından beri uğraştığımız programı Arduino’muza yükleyebiliriz. Aşağıdaki vermiş olduğum kodu Arduino IDE’ye yapıştırın ve size not etmenizi söylediğim rfid kartınızın decimal numarasını aşağıdaki kodda belirtilen bölgedeki sayılarla değiştirin. Sonrasında kodu Leonardo’ya yükleyin. Sonrasında Arduino Leonardo’nuz ile ne zaman isterseniz Rfid kartınız ile bilgisayarınıza giriş yapabileceksiniz.

#include <SPI.h> //SPI, RFID ve Keyboard kütüphanelerimizi ekliyoruz
#include <RFID.h>
#include <Keyboard.h>

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);
int ledpini = 13;

void setup()
{
pinMode(ledpini,OUTPUT);
SPI.begin(); //SPI iletişimini başlatıyoruz
rfid.init();
Keyboard.begin(); //Klavye olarak kullanmak için bu özelliği açıyoruz.
digitalWrite(ledpini,LOW);
}

void loop()
{

if (rfid.isCard()) { //Yeni bir RFID kart okundu mu onu kontrol ediliyor.
if (rfid.readCardSerial()) {
if (rfid.serNum[0] == 9 //Okunan RFID kartının bize özel kart olup olmadığı RFID kart numarasının ilk 5 hanesi ile kontrol ediliyor.
&& rfid.serNum[1] == 45 //Buradaki 5 adet sayıyı kendi kartınızın sayıları ile değiştirmeniz gerekecek.
&& rfid.serNum[2] == 243
&& rfid.serNum[3] == 81
&& rfid.serNum[4] == 134
) {
Keyboard.press(KEY_RETURN); //Klavyeden ENTER tuşuna basılıyor.
delay(50);
Keyboard.releaseAll(); //Keyboard.releaseAll(); basılı olan tuşu geri çekmek için bu fonksiyonu kullanıyoruz. Bu fonksiyon olmazsa enter tuşu hep basılı kalıyor.
delay(500);
Keyboard.print(“211416”); //Buraya kısıma bilgisayar şifreniz gelecek.
} else {
digitalWrite(ledpini,HIGH); //Farklı kart okutulduğunda Arduino üzerindeki led yanacak.
delay(10);
}
digitalWrite(ledpini,LOW);
}
}

rfid.halt();
}

--

--