[adinserter block=”6″]
Merhaba arkadaşlar bu makalemde sizlere Arduino ile RFID yani NFC olarak adlandırılan kart sisteminin genel çalışma prensibini elimden geldiğince anlatmaya çalışacağım. İlk öncelikle bize gerekli olan malzemeler ile başlamak istiyorum.
Yukarıdaki malzemelerimizi ayarladığımıza göre artık işleme başlayabiliriz. Aşağıdaki resimdeki gibi devre bağlantılarımızı düzgün bir biçimde yapıyoruz.
Bağlantılarımızı resimdeki gibi yaptığımıza göre artık Arduinomuzun kod kısmına geçebiliriz. Öncelikle bu adresten kartımızı çalıştırmamızda gerekli olan kütüphaneyi indirerek Arduino programının kurulu olduğu klasör altındaki libraries klasörüne MFRC522 ismiyle kaydediyoruz. (Arduinomuzun kurulu olduğu klasör içerisinde “libraries” adında klasörün içerisine direk olarak çıkartın veya rar arşiv dosyası içerisideki klasörü içine sürükleyip bırakın)
Daha sonra Arduino editörümüze aşağıdaki kodları yazıp test ettikten sonra Arduino UNO kartımıza yüklüyoruz. 1 kere kartımızı çalıştırıp emin olmalıyız.
#include <SPI.h>
#include <MFRC522.h>
#include <EEPROM.h>
#define RST_PIN 9
#define SS_PIN 10
byte readCard[4];
int successRead;
MFRC522 mfrc522(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("RFID KART KAYIT UYGULAMASI");
Serial.println("————————–");
Serial.println("Lutfen 1 numarali karti okutun");
Serial.println();
do {
//okuma başarılı olana kadar getID fonksiyonunu çağır
successRead = getID();
}
while (!successRead);
for ( int i = 0; i < mfrc522.uid.size; i++ )
{
//kartın UID’sini EEPROM’a kaydet
EEPROM.write(i, readCard[i] );
}
Serial.println("Kart EEPROM’a kaydedildi.");
Serial.println();
Serial.println("Lutfen 2 numarali karti okutun.");
Serial.println();
do {
successRead = getID();
}
while (!successRead);
for ( int i = 0; i < mfrc522.uid.size; i++ )
{
EEPROM.write(i + 4, readCard[i] );
}
Serial.println("Kart EEPROM’a kaydedildi.");
Serial.println();
Serial.println("Kart kayit islemi basarili!");
}
void loop(){
}
int getID() {
//yeni bir kart okunmadıysa 0 döndür
if (!mfrc522.PICC_IsNewCardPresent())
{return 0;}
if (!mfrc522.PICC_ReadCardSerial())
{return 0;}
Serial.print("Kart UID’si:");
//kartın UID’sini byte byte oku ve seri monitöre yaz
for (int i=0; i<mfrc522.uid.size; i++)
{
readCard[i] = mfrc522.uid.uidByte[i]; Serial.print(readCard[i], HEX);
}
Serial.println("");
//kart okumayı durdur ve 1 döndür (okuma başarılı)
mfrc522.PICC_HaltA();
return 1;
}
Yukarıdaki kodlarımızı arduinomuza yüklediğimize göre artık arduinomuzu portlardan dinlemeye alalım.
Burada dikkat etmemiz gereken nokta, 1 ve 2 numaralı kartların birbirinden farklı olması. Eğer okuma işlemi sırasında 1 ve 2 numaralı kart olarak aynı kartı seçersek, bir sonraki adımda kullanacağımız kod çalışmayacaktır. Kart okuma işlemi yapıldıktan sonra, aşağıdaki kodu Arduino’muza yükleyerek bir sonraki adıma geçiyoruz:
#include <SPI.h>
#include <MFRC522.h>
#include <EEPROM.h>
#define RST_PIN 9
#define SS_PIN 10
#define ledPin 7
MFRC522 mfrc522(SS_PIN, RST_PIN);
String lastRfid = "";
String kart1 = "";
String kart2 = "";
MFRC522::MIFARE_Key key;
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode(ledPin, OUTPUT);
Serial.println("RFID KART OKUMA UYGULAMASI");
Serial.println("————————–");
Serial.println();
//EEPROM’dan kart bilgisini oku
readEEPROM();
}
void loop()
{
//yeni kart okununmadıkça devam etme
if ( ! mfrc522.PICC_IsNewCardPresent())
{ return; }
if ( ! mfrc522.PICC_ReadCardSerial())
{ return; }
//kartın UID’sini oku, rfid isimli string’e kaydet
String rfid = "";
for (byte i = 0; i < mfrc522.uid.size; i++)
{
rfid += mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "; rfid += String(mfrc522.uid.uidByte[i], HEX);
}
//string’in boyutunu ayarla ve tamamını büyük harfe çevir
rfid.trim();
rfid.toUpperCase();
if (rfid == lastRfid) return;
lastRfid = rfid;
Serial.print("Kart 1:");
Serial.println(kart1);
Serial.print("Kart 2:");
Serial.println(kart2);
Serial.print("Okunan: ");
Serial.println(rfid);
Serial.println();
//1 nolu kart okunduysa LED’i yak, 2 nolu kart okunduysa LED’i söndür
if (rfid == kart1)
{
digitalWrite(ledPin, HIGH);
Serial.println("LED yandi.");
}
if (rfid == kart2)
{
digitalWrite(ledPin, LOW);
Serial.println("LED sondu.");
}
Serial.println();
delay(200);}
void readEEPROM()
{
//EEPROM’dan ilk kartın UID’sini oku (ilk 4 byte)
for (int i = 0 ; i < 4 ; i++)
{ kart1 += EEPROM.read(i) < 0x10 ? " 0" : " "; kart1 += String(EEPROM.read(i), HEX);
}
//EEPROM’dan ikinci kartın UID’sini oku
for (int i = 4 ; i < 8 ; i++)
{
kart2 += EEPROM.read(i) < 0x10 ? " 0" : " "; kart2 += String(EEPROM.read(i), HEX);
}
//Okunan stringleri düzenle
kart1.trim();
kart1.toUpperCase();
kart2.trim();
kart2.toUpperCase();}
Bu kod sayesinde, 1 numaralı kartımızı okuttuğumuzda Arduino, RC522 modülün okuduğu UID değerini EEPROM’da kayıtlı olan 1 numaralı kart değeriyle karşılaştırıyor, eğer iki değer birbirinin aynısı ise 7 numaralı pine bağladığımız LED’i yakıyor. Arduino’muz, yeni bir kart okumak üzere hazır bekler haldeyken 2 numaralı kartı okutur isek, bu sefer yanmakta olan LED söndürülüyor. Eğer EEPROM’da UID’si kayıtlı olmayan bir kart okutursak LED’in durumunda herhangi bir değişiklik olmuyor.
Sizler de elinizdeki farklı RFID kartlarla deneme yaparak farklı kartları kaydedebilirsiniz. RC522 modül, bu uygulamada karta yazma işlemi yapmadığından, uygulamayı elinizdeki desteklenen tüm kartlarla sorunsuzca kullanabilirsiniz.
MakerWorld Koleksiyon İndirici MakerWorld üzerinde koleksiyonunuza eklediğiniz modelleri tek tek indirmek zaman alıcı ve zahmetli…
Elektronik Raf Etiketi (ESL) Nedir? Fiyatları, Avantajları ve Mağazalar İçin Dijital Dönüşüm Rehberi Perakende sektörü…
Gigabyte G6 Boot Sorunu Çözümü (KF ve MF 2024) – No OS Will Boot Fix…
Microsoft Office 2016, 2019 ve 2021 KMS Aktivasyonu Nasıl Kaldırılır? [Detaylı Rehber] Office KMS kaldırma,…
Merhaba!Bu yazıda WooCommerce Kategori Menü Eklentisi anlatıyor olacağım. WooCommerce mağazalarında menü yönetimini kolaylaştıran, akıllı hale…
microsoft ace oledb 12.0 hatası,oledb 12.0 provider not registered,microsoft access database engine indir,accessdatabaseengine.exe indir,oledb provider…