Arduino RFID Kart İle Lamba Yakma ve Söndürme

Arduino RFID Kart İle Lamba Yakma ve Söndürme


Arduino RFID Kart İle Lamba Yakma ve Söndürme

 Merhaba arkadaşlar bu yazımda sizlere Arduino ile birlikte RFID kartı sistemde okunduğu süre boyunca yanan LED lamba uygulaması yapacağız, kart okunduğu süreye ek olarak doğru kart okunduğu zaman da yanmasını sağlayacağız yani lambayı yakmak için başka kartları kullanmak pek mümkün olmayacak hadi gelin projemize başlayalım.

Proje İçin Gerekenler

  1. Arduino
  2. RFID Seti
  3. Jumper Kablo
  4. Röle
  5. Led
Bir projeyi yapabilmek için en önemli noktanın nasıl çalıştığını anlamak olduğunu düşünüyorum, bu yüzden ilk olarak nasıl çalıştığını özetleyeyim.
Elimde bulunan 12v ile çalışan LED lambaları Arduino ya bağladığım röle ile elektriğini kesip açarak yakıp kapatıyoruz, kart sensöre yakında ise ve doğru kart ise röle açılıyor ve ışık yanmaya başlıyor, kart uzakta veya yanlış kart ise röle hiç devreye girmiyor.


Projemizin Devre Şeması

RFID Led Yakma


Projemizin Kodları

Kütüphanelerimizi dahil edelim

#include <SPI.h>
#include <MFRC522.h>
Not : Kütüphaneyi indirmeyi ve kurmayı unutmayın! Kütüphaneyi indirmek için buraya tıklayın.

Değişkenlerimizi tanımlayalım

int rf_reset = 9, rf_ss = 10;
int led_control = 8;

MFRC522 RFID(rf_ss, rf_reset);

byte card_id[4] = {185, 144, 187, 176};
bool card_statue = LOW;

Değişkenlerimizi açıklayalım

rf_reset ve rf_ss rfid kart sensörünün pinleri, led_control ise rölenin in pinini bağladığımız pin.
card_id ise sadece doğru kart yanaştırıldığı zaman çalışması için olan kartın kimlik bilgisi diyebiliriz.
card_statute ise kartın yakında olduğunda True uzakta olduğunda False alan değişkenimiz.
MFRC522 RFID olarak tanımladığımız yer ise kütüphane ile RFID sensörüne erişmemizi sağlayan sınıf.


Fonksiyonlarımızı tanımlayalım

void RFIDStatue() {

  if (!card_statue) {
    if (!RFID.PICC_IsNewCardPresent()) {
      return false;
    } else {
      card_statue = true;
      if (RFID.uid.uidByte[0] == card_id[0] && RFID.uid.uidByte[1] == card_id[1] && RFID.uid.uidByte[2] == card_id[2] && RFID.uid.uidByte[3] == card_id[3])
        ledOpen();
    }
  }

  if (!RFID.PICC_ReadCardSerial()) {
    card_statue = false;
    ledClose();
    return false;
  }


}

void ledOpen() {
  digitalWrite(led_control, LOW);
}
void ledClose() {
  digitalWrite(led_control, HIGH);
}

Fonksiyonlarımızı açıklayalım

ledOpen() ve ledClose() ledleri açıp kapatmak için sürekli olarak digitalWrite yazmak yerine oluşturduğumuz fonksiyonlar.
RFIDStatue ise RFID kartının yakında olup olmadığını ve doğru RFID kartının temas edip etmediğini anlamamızı sağlayan fonksiyondur.
"if(!RFID.PICC_ReadCardSerial())" kısmında kart hakkında herhangi bir bilgi alınmaz ise ledi söndürüyor,
"if (!RFID.PICC_IsNewCardPresent()){...}else{...}" kısmında kart hakkında bilgi alınıyor ve doğru kart ise ledi yakıyor.

Ana Fonksiyonları tanımlayalım

void setup() {
  Serial.begin(9600);
  SPI.begin();
  RFID.PCD_Init();
  pinMode(led_control, OUTPUT);
  ledClose();
}
void loop() {
  RFIDStatue();

}

Tüm kodlar

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

int rf_reset = 9, rf_ss = 10;
int led_control = 8;

MFRC522 RFID(rf_ss, rf_reset);

byte card_id[4] = {185, 144, 187, 176};
bool card_statue = LOW;
void setup() {
  Serial.begin(9600);
  SPI.begin();
  RFID.PCD_Init();
  pinMode(led_control, OUTPUT);
  ledClose();
}

void RFIDStatue() {

  if (!card_statue) {
    if (!RFID.PICC_IsNewCardPresent()) {
      return false;
    } else {
      card_statue = true;
      if (RFID.uid.uidByte[0] == card_id[0] && RFID.uid.uidByte[1] == card_id[1] && RFID.uid.uidByte[2] == card_id[2] && RFID.uid.uidByte[3] == card_id[3])
        ledOpen();
    }
  }

  if (!RFID.PICC_ReadCardSerial()) {
    card_statue = false;
    ledClose();
    return false;
  }


}

void ledOpen() {
  digitalWrite(led_control, LOW);
}
void ledClose() {
  digitalWrite(led_control, HIGH);
}

void loop() {
  RFIDStatue();

}

Projemizden Çalışırken Bir Video