Arduino Eğitim Kiti – Tüm Yıl İçin Arduino Müfredatı: Ders 36 İleri Düzey Uygulamalar /RFID için isterseniz sunu şeklinde alt taraftaki kutucuğu büyüterek takip edebilir, isterseniz de tüm sunu sayfalarının makale haline dönüştürülmüş versiyonu takip edebilirsiniz. İçerikler büyük oranda aynıdır. Sınıf ortamında kolaylık olması açısından sunu şeklinde de sunulmuştur.

Ders İçeriği:

İleri Düzey Uygulamalar

Ders Kazanımları:

  • Röle’nin çalışma mantığını açıklar.
  • RFID modülün çalışma mantığını açıklar.
  • RFID İle Kapı Açma programını yardım almadan başarılı bir şekilde tasarlar.

Oluşabilecek Hatalar:

Aşağıdaki programları çalıştırırken birtakım hatalarla karşılaşabilirsiniz. Bu hataların kodların yazımında meydana gelen hatalar dışında başka sebeplerle ortaya çıkması muhtemeldir. Bu hatalardan sık karşılaşılanlara aşağıda değinilmiştir.

Kart Seçilmesinden Kaynaklı Hata:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru kartın seçilmesi gerekmektedir. Kart seçilmediğinde “Karta yüklenirken bir sorun oluştu.” benzeri bir hata alabilirsiniz.

USB Portun Seçilmesiyle İlgili Hatalar:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru portun seçilmesi gerekmektedir. Bu port Arduino Uno’nun bilgisayara bağlandığı usb porttur. Farklı şekilde bilgisayarınızda usb driver yüklenmemiş olabilir. Bu gibi hatalarda “Port bulunamadı.” gibi hatalar almanız muhtemeldir.


5V Röle Kart:

  • Röleler yüksek akım ve gerilim kontrolü gereken uygulamalarda kullanılır.
  • Röle, başka bir elektrik devresinin açılıp kapanmasını sağlayan bir elektriksel anahtardır.
  • Set içerisinde bileşen üzerinde bir adet röle bulunan bir modüldür.
  • Kart üzerindeki röleyi kontrol etmeniz için 5 volt sinyal giriş pini bulunmaktadır. Buradan vereceğiniz sinyal ile rölenin anahtar konumunu ayarlayabilirsiniz.
  • Böylelikle üzerinden hem ac (alternatif akım) hem dc (doğru akım) akım geçirebilir.
  • Bu ürünün uygulama alanları oldukça geniştir.
  • Bu ürünle tek bir lambayı, tek bir motoru veya yüksek voltaj ve akım gerektiren uygulamalar yapabilirsiniz.

RC522 RFID NFC Kiti (13.56mhz):

  • Radyo Frekanslı Tanıma (Radio Frequency Identification-RFID) teknolojisi, canlı ve cansız her türlü nesnenin dokunmadan belirli bir mesafeden tanınmasında ve izlenmesinde kullanılır.
  • Arduino başta olmak üzere bir çok mikrodenetleyeci platformu ile beraber rahatlıkla kullanılabilir.
  • Set içerisinde modül pleksiye monte edilmiştir.
  • Kart ve anahtarlık ayrıca set içerisinde bulunmaktadır.
  • Harici bir RFID Kit aldığınızda anahtarlık, kart, RFID modül ve headerlar ile birlikte gelmektedir.

Uyarı:

Aşağıdaki programı tasarlayıp çalıştırdığınızda LCD ekranda sadece parlaklık varsa ve bilgi alamıyorsanız bunun sebebi LCD ekranın kontrast ayarının düşük olması olabilir.

Bu ayar LCD ekranın arka kısmında (LCD ekranı yıldız tornavida ile sökmeniz gerekecek) I2C modülünün üzerindeki potansiyometre ile yapılabilir. Tornavida yardımı ile potansiyometreyi çevirerek kontrast düzeyini ayarlayabilirsiniz.

Ayrıca kodları yazarken I2C modül adresini kendi I2C modülünüzün adresine göre düzeltmeyi unutmayın!

(I2C adres bulma 15. derste ele alınmıştır. Kendi I2C modülünüzün adresini derste bahsedilen yöntemleri takip ederek bulabilirsiniz.)


Uygulama 1: RFID İle Kapı Açma Uygulaması

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

  1. Arduino üzerindeki 5V pini breadboard üzerinde “+” hatta, GND pini ise yine breadboard üzerinde “-” hatta bağlanır.
  2. LCD ekranın pinleri aşağıdan yukarı doğru breadboardun “+” hattı , breadboardun “-” hattı, A4 analog pini, A5 analog pini şeklinde bağlanır.
  3. 5V Röle, “+” pini breadboardun “+” hattına, “-” pini breadboardun “-” hattına, S pini ise 7 nolu dijital pine bağlanır.
  4. RFID bağlantısı ise, 3.3V Arduino Uno üzerinde 3.3V ‘a, RST pini 9 nolu pine, GND pini “-” hatta, MISOI 12 nolu pine, MOSI 11 nolu pine, SCK 13 nolu pine, SDA pini ise 10 nolu pine bağlanır.
  5. İki uygulama içinde aynı bağlantıyı kullanabilirsiniz.

Kodlar:

Uygulamanın “.ino” dosyasını (kod dosyasını) buradan indirebilirsiniz.

  • Bu uygulamada iki farklı program yazacağız.
  • Her mavi anahtarlığın kendine ait bir adresi vardır ve bunun RFID içerisindeki EEPROM hafızaya kaydedilmesi gerekir.
  • Bu işlem için önce EEPROM_KAYIT adlı Arduino programı tasarlanacaktır.
  • İkinci olarak okutulan anahtarların EEPROM’da kayıtlı anahtarlar ise kapı açıldı uyarısını veren, kayıtlı değil ise hiçbir işlem yapılmayan RC522 adlı Arduino programı tasarlanacak.

Anahtarların EEPROM’a Kayıt Edilmesi:

#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;
}

  • Uygulamayı yazmayı tamamlayıp çalıştırın.
  • Arduino IDE programına ait serial ekranı açın.
  • Kartı RFID modüle okuttuğunuzda (yaklaştırdığınızda) serial ekranda kartın okunup kaydedildiğine dair uyarıyla karşılaşırsınız.
  • Kartların numaraları EEPROM’a kaydedildikten sonra bu programı kapatıp diğer uygulamaya geçebilirsiniz.

RFID İle LCD Ekranda “Kapı Açıldı” Uyarısı Alma:

#include <SPI.h>
#include <MFRC522.h>
#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
#define RST_PIN 9
#define SS_PIN 10
#define Role 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();
lcd.begin();
lcd.backlight();
// Ekrana yazdırılacak metin
lcd.setCursor(0,0);
lcd.print("RFID Kapi");
lcd.setCursor(0,1);
lcd.print("Kilit Sistemi");
delay(5000);
lcd.clear();
pinMode(Role, 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(Role,HIGH);
Serial.println("Kart1 Tarafindan Kapi Acildi");
lcd.setCursor(0,0);
lcd.print("Kart1 Tarafindan");
lcd.setCursor(0,1);
lcd.print("KAPI Acildi");
delay(2500);
digitalWrite(Role,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("IYI GUNLER");
lcd.setCursor(0,1);
lcd.print("TAG'i Okutun");
}
if (rfid == kart2)
{
digitalWrite(Role, HIGH);
Serial.println("Kart2 Tarafindan KAPI Acildi.");
lcd.setCursor(0,0);
lcd.print("Kart2 Tarafindan");
lcd.setCursor(0,1);
lcd.print("KAPI Acildi");
delay(2500);
digitalWrite(Role,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("IYI GUNLER");
lcd.setCursor(0,1);
lcd.print("TAG'i Okutun");
}
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();
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • İlk uygulamada anahtarlıklar RFID modüle okutuldu. Böylelikle RFID modüle anahtarların adresleri kaydedildi.
  • Bu uygulama karta yüklendiğinde “Tagı Okutun” uyarısı LCD ekranda görülünce anahtarlık RFID Modüle tekrar okutulur.
  • Anahtarlığın adresi ile RFID içerisindeki adres uyuştuğunda röle çalışır, kapı açılmış olur.
  • LCD ekranda kapı açıldı uyarısı alınır.
  • Uyuşmadığında ise herhangi bir işlem yapılmaz

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz