top of page
Search

How to Make ATM machine at home






Circuit:




Download Programming:


#include <Servo.h>

#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)

Servo myservo1;



char initial_password[4] = {'0', '8', '0', '6'}; // Variable to store initial password

String tagUID = "43 19 8A 1A"; // 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;

const int motor= 7;


// defining how many rows and columns our keypad have

const byte rows = 4;

const byte columns = 4;


int val = 0;

int myval = 0;


// 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(); // initialize the lcd

lcd.init();

// Print a message to the LCD.

lcd.backlight();

SPI.begin(); // Init SPI bus

mfrc522.PCD_Init(); // Init MFRC522

pinMode(buzzer, OUTPUT);

pinMode(motor, OUTPUT);

myservo1.attach(3);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("-----ATM------");

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(500);

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("Take Your Cash");

digitalWrite(motor, HIGH);

delay(10000);

delay(500);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Transaction");

lcd.setCursor(0, 1);

lcd.print("Completed.");

digitalWrite(motor, LOW);

while (myval<=90);

myservo1.write(myval);

myval = (myval + 1);

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

}

}

}

}



Demo Video:


2,174 views0 comments

Recent Posts

See All
bottom of page