RFID

 #include <Wire.h>

#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27, 16, 2); 

// Agar display na chale to 0x3F try karein


#include <MFRC522.h>

#include <SPI.h>

#include <SD.h>

#include <RTClib.h>


#define CS_RFID 10

#define RST_RFID 9

#define CS_SD 4 


File myFile;


MFRC522 rfid(CS_RFID, RST_RFID);

RTC_DS1307 rtc;


String uidString;


const int checkInHour = 9;

const int checkInMinute = 5;


int userCheckInHour;

int userCheckInMinute;


const int redLED = 6;

const int greenLED = 7;

const int buzzer = 5;


void setup() {


  pinMode(redLED, OUTPUT);  

  pinMode(greenLED, OUTPUT);

  pinMode(buzzer, OUTPUT);


  Serial.begin(9600);


  lcd.init();

  lcd.backlight();


  SPI.begin();

  rfid.PCD_Init();


  lcd.print("Initializing SD");

  delay(2000);

  lcd.clear();


  if(!SD.begin(CS_SD)) {

    lcd.print("SD Failed!");

    return;

  }


  lcd.print("SD Done");

  delay(2000);

  lcd.clear();


  if(!rtc.begin()) {

    lcd.print("RTC Error!");

    while(1);

  }


  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

}


void loop() {

  if(rfid.PICC_IsNewCardPresent()) {

    readRFID();

    logCard();

    verifyCheckIn();

  }

}


void readRFID() {


  if(!rfid.PICC_ReadCardSerial()) return;


  lcd.clear();

  lcd.print("Tag UID:");


  uidString = "";

  for (byte i = 0; i < rfid.uid.size; i++) {

    uidString += String(rfid.uid.uidByte[i], HEX);

  }


  lcd.setCursor(0,1);

  lcd.print(uidString);


  tone(buzzer, 2000);

  delay(200);

  noTone(buzzer);

  delay(2000);

}


void logCard() {


  myFile = SD.open("DATA.txt", FILE_WRITE);


  if (myFile) {


    DateTime now = rtc.now();


    myFile.print(uidString);

    myFile.print(", ");

    myFile.print(now.year());

    myFile.print('/');

    myFile.print(now.month());

    myFile.print('/');

    myFile.print(now.day());

    myFile.print(' ');

    myFile.print(now.hour());

    myFile.print(':');

    myFile.println(now.minute());


    myFile.close();


    userCheckInHour = now.hour();

    userCheckInMinute = now.minute();


    lcd.clear();

    lcd.print("Written to SD");

    delay(2000);

  }

  else {

    lcd.print("SD Write Error");

    delay(2000);

  }

}


void verifyCheckIn(){


  lcd.clear();


  if((userCheckInHour < checkInHour) || 

     (userCheckInHour == checkInHour && userCheckInMinute <= checkInMinute)) {


    digitalWrite(greenLED, HIGH);

    lcd.print("You're Welcome");

    delay(2000);

    digitalWrite(greenLED, LOW);

  }

  else {


    digitalWrite(redLED, HIGH);

    lcd.print("You are Late");

    delay(2000);

    digitalWrite(redLED, LOW);

  }


  lcd.clear();

  lcd.print("Scan RFID...");

}

Post a Comment

Previous Post Next Post

Contact Form