burhanuddin_kapadvanjwala
Published

RFID_Banking_System

This is an RFID card reader using Arduino UNO.

IntermediateShowcase (no instructions)2,062
RFID_Banking_System

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Alphanumeric LCD, 16 x 2
Alphanumeric LCD, 16 x 2
×1
Buzzer
Buzzer
×1
RFID reader (generic)
×1
Resistor 220 ohm
Resistor 220 ohm
×1
Breadboard (generic)
Breadboard (generic)
×1
Button Pad 4x4 - LED Compatible
SparkFun Button Pad 4x4 - LED Compatible
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free

Story

Read more

Schematics

Connection schematic diagram

Code

Code

Arduino
// Include required libraries
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <SPI.h>

// Create instances
LiquidCrystal_I2C lcd(0x27, 16, 2);
MFRC522 mfrc522(10, 9); // MFRC522 mfrc522(SS_PIN, RST_PIN)


char initial_password[4] = {'0', '8', '0', '6'};  // Variable to store initial password
String tagUID = "63 14 92 04";  // String to store UID of tag. Change it with your tag's UID
char password[4];   // Variable to store users password
boolean RFIDMode = true; // boolean to change modes
char key_pressed = 0; // Variable to store incoming keys
uint8_t i = 0;  // Variable used for counter
const int buzzer= 5;

// defining how many rows and columns our keypad have
const byte rows = 4;
const byte columns = 4;

// Keypad pin map
char hexaKeys[rows][columns] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

// Initializing pins for keypad
byte row_pins[rows] = {A0, A1, A2, A3};
byte column_pins[columns] = {2, 1, 0};

// Create instance for keypad
Keypad keypad_key = Keypad( makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);

void setup() {
  lcd.init();   // LCD screen
  lcd.backlight();
  SPI.begin();      // Init SPI bus
  mfrc522.PCD_Init();   // Init MFRC522
  pinMode(buzzer, OUTPUT);
  
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("-----NexGO------");
  lcd.setCursor(0, 1);
  lcd.print("BeyonD Payment's");
  
  delay(5000);
}

void loop() {
  // System will first look for mode
  if (RFIDMode == true) {
;

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Tap Your Card!");

    // Look for new cards
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
      return;
    }

    // Select one of the cards
    if ( ! mfrc522.PICC_ReadCardSerial()) {
      return;
    }

    //Reading from the card
    String tag = "";
    for (byte j = 0; j < mfrc522.uid.size; j++)
    {
      tag.concat(String(mfrc522.uid.uidByte[j] < 0x10 ? " 0" : " "));
      tag.concat(String(mfrc522.uid.uidByte[j], HEX));
    }
    tag.toUpperCase();

    //Checking the card
    if (tag.substring(1) == tagUID)
    {
      // If UID of tag is matched.
      lcd.clear();
      
      tone(buzzer,2000);
      delay(200);
      noTone(buzzer);
      
      lcd.print("Card Detected :)");

      delay(1000);
 
      lcd.clear();
      lcd.print("Enter Pin:");
      lcd.setCursor(0, 1);
      RFIDMode = false; // Make RFID mode false
    }

    else
    {
      // If UID of tag is not matched.
      tone(buzzer,2000);
      delay(200);
      noTone(buzzer);
      
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Processing");
      delay(250);
      lcd.setCursor(10, 0);
      lcd.print(".");
      delay(250);
      lcd.setCursor(11, 0);
      lcd.print(".");
      delay(250);
      lcd.setCursor(12, 0);
      lcd.print(".");
        
      delay(250);

      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Processing");
      delay(250);
      lcd.setCursor(10, 0);
      lcd.print(".");
      delay(250);
      lcd.setCursor(11, 0);
      lcd.print(".");
      delay(250);
      lcd.setCursor(12, 0);
      lcd.print(".");
       
      lcd.clear();
      
      lcd.setCursor(0, 0);
      lcd.print("Card Invalid!");
      
      tone(buzzer,5000);
      delay(400);
      noTone(buzzer);
      delay(800);
      
      lcd.clear();

      lcd.setCursor(0, 0);
      lcd.print("Please Scan a");
      lcd.setCursor(0, 1);
      lcd.print("Vaild Card.");

      delay(2000);
  
      lcd.clear();
    }
  }

  // If RFID mode is false, it will look for keys from keypad
  if (RFIDMode == false) {
    key_pressed = keypad_key.getKey(); // Storing keys
    if (key_pressed)
    {
      password[i++] = key_pressed; // Storing in password variable
      lcd.print("*");
    }
    if (i == 4) // If 4 keys are completed
    {
      delay(200);
      if (!(strncmp(password, initial_password, 4))) // If password is matched
      {
        lcd.clear();
        
        lcd.print("Pin Accepted.");
        
        tone(buzzer,2000);
        delay(200);
        noTone(buzzer);
        delay(500);

        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Processing");
        delay(250);
        lcd.setCursor(10, 0);
        lcd.print(".");
        delay(250);
        lcd.setCursor(11, 0);
        lcd.print(".");
        delay(250);
        lcd.setCursor(12, 0);
        lcd.print(".");
        
        delay(250);

        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Processing");
        delay(250);
        lcd.setCursor(10, 0);
        lcd.print(".");
        delay(250);
        lcd.setCursor(11, 0);
        lcd.print(".");
        delay(250);
        lcd.setCursor(12, 0);
        lcd.print(".");
        
        delay(500);
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Transaction");
        lcd.setCursor(0, 1);
        lcd.print("Completed.");
        
        tone(buzzer,2000);
        delay(700);
        noTone(buzzer);
        
        delay(2000);
        
        lcd.clear();
        i = 0;
        RFIDMode = true; // Make RFID mode true
      }
      else    // If password is not matched
      {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Wrong Pin");
        lcd.setCursor(0, 1);
        lcd.print("Entered :(");
        
        tone(buzzer,5000);
        delay(500);
        noTone(buzzer);

        delay(3000);

        lcd.clear();
        i = 0;
        RFIDMode = true;  // Make RFID mode true
      }
    }
  }
}

Credits

burhanuddin_kapadvanjwala
0 projects • 0 followers

Comments