NodeMCU ile RFID Kart Kontrolü ve Blynk Terminal

Bu uygulamamızda MFRC522 kart okuyucu modül kullanarak RFID kartlarımızı okuyup Blynk uygulamasında oluşturduğumuz Terminal widget ile bu verileri göreceğiz. Blynk uygulamasının içinde bulunan RTC widget ile anlık saat verisini alıp kullanacağız.

 

NOT : Bu uygulamayı yapabilmeniz için NodeMCU kartınızın Arduino IDE arayüzüne tanıtılmış ve Blynk kütüphanesinin kurulmuş olması gerekmektedir.

İlgili yazılara buradan ulaşabilirsiniz.

 

Bu uygulamada kullanacağımız malzemeler;


  • NodeMCU

  • MFRC522 Kart Okuyucu Modül

  • RFID Kart

  • Jumper Kablolar

Öncelikle devremizi şemada gördüğümüz şekilde kuruyoruz.


Bağlantılar şu şekildedir;

  • 3.3V = 3.3V

  • RST = D3

  • GND = GND

  • IRQ = KULLANILMIYOR

  • MISO = D6

  • MOSI = D7

  • SCK = D5

  • SDA = D4




Yazdığımız kodu kartımıza yüklüyoruz. Kod açıklamalarını aşağıda görebilirsiniz.


#define BLYNK_PRINT Serial
#define SS_PIN D4
#define RST_PIN D3
#define LED D1

// İlgili Kütüphaneler eklendi
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SPI.h>
#include <MFRC522.h>
#include <TimeLib.h>
#include <WidgetRTC.h>


// Projenize ait Auth Token. Uygulama içinden veya mail adresinizden erişebilirsiniz
char auth[] = "Auth Token";

//WiFi ağ adınız ve parolanız
char ssid[] = "Ağ Adınız";
char pass[] = "Ağ Parolanız";


WidgetRTC rtc;
BlynkTimer timer;
WidgetTerminal terminal(V1);

MFRC522 mfrc522(SS_PIN, RST_PIN);

//RFID Kart okuması ve değerlendirmesi
void rfidKart()
{
  //Blynk uygulamasında oluşturduğumuz RTC(RealTimeCLOCK) ile anlık saat verisini alıyoruz.
  String saat = String(hour()) + ":" + minute() + ":" + second();


  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }

  //Okunan kartın UID sini terminale yazıyoruz.
  terminal.print("UID tag :");
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    terminal.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    terminal.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  terminal.println();
  terminal.print("Mesaj   : ");
  content.toUpperCase();

  //Okunan UID ile belirlediğimiz kartın UID si eşleşirse döngü çalışır.
  if (content.substring(1) == "09 F5 B3 55")
  {
    //UID ye ait kimliği ve giriş saatini terminale yazıyoruz.
    terminal.println("Kullanici 1 giris yapti. Giris saati: " + saat);
    terminal.println();
    terminal.flush();
    delay(500);
    digitalWrite(LED, HIGH);
    delay(2000);
    digitalWrite(LED, LOW);
  }

  //Okunan UID ile belirlediğimiz kartın UID si eşleşirse döngü çalışır.
  if (content.substring(1) == "46 E0 2F F8")
  {
    //UID ye ait kimliği ve giriş saatini terminale yazıyoruz.
    terminal.println("Kullanici 2 giris yapti. Giris saati: " + saat);
    terminal.println();
    terminal.flush();
    delay(500);
    digitalWrite(LED, HIGH);
    delay(2000);
    digitalWrite(LED, LOW);
  }

}

BLYNK_CONNECTED() {
  //Blynk uygulamasında oluşturduğumuz RTC modülü başlangıçta senkronize ediliyor.
  rtc.begin();
}
void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  SPI.begin();
  mfrc522.PCD_Init();
  terminal.clear();

  pinMode(LED, OUTPUT); // LED pinini ÇIKIŞ olarak ayarlıyoruz

  // Saniyede 1 defa rfidKart fonksiyonu çağırıyoruz
  timer.setInterval(1000L, rfidKart);
}

void loop()
{
  Blynk.run();
  timer.run();
}


Blynk uygulamasında öncelikle RTC(Real Time Clock) widgeti ekleyip zaman dilimi ayarlarını yapıyoruz. Türkiye için GMT+3 ü seçmeniz gerekiyor.



Son olarak Terminal widgeti ekliyoruz. Giriş pinini V1 sanal pini olarak ayarlıyoruz. Bu uygulamada terminale sadece veri göndereceğimiz için INPUT LINE seçeneğini kapalı konuma getiriyoruz. İstediğiniz arka plan ve yazı renklerini ayarlayarak tamamlıyoruz.



Widgetlarımızı ekleyip ayarlarını yaptıktan sonra sağ üstteki çalıştır butonu ile uygulamamızı çalıştırıyoruz.




İlgili kütüphaneler;



Projenizi yaparken karşılaştığınız problemleri yorumlar kısmında belirtirseniz ekibimiz en kısa sürede size yardımcı olacaktır.

Son Paylaşımlar