Components and supplies
RFID reader (generic)
Arduino UNO
Breadboard (generic)
Alphanumeric LCD, 16 x 2
Buzzer
Button Pad 4x4 - LED Compatible
Resistor 220 ohm
Jumper wires (generic)
Tools and machines
Soldering iron (generic)
Solder Wire, Lead Free
Apps and platforms
Arduino IDE
Project description
Code
Code
arduino
1// Include required libraries 2#include <MFRC522.h> 3#include <LiquidCrystal_I2C.h> 4#include <Keypad.h> 5#include <SPI.h> 6 7// Create instances 8LiquidCrystal_I2C lcd(0x27, 16, 2); 9MFRC522 mfrc522(10, 9); // MFRC522 mfrc522(SS_PIN, RST_PIN) 10 11 12char initial_password[4] = {'0', '8', '0', '6'}; // Variable to store initial password 13String tagUID = "63 14 92 04"; // String to store UID of tag. Change it with your tag's UID 14char password[4]; // Variable to store users password 15boolean RFIDMode = true; // boolean to change modes 16char key_pressed = 0; // Variable to store incoming keys 17uint8_t i = 0; // Variable used for counter 18const int buzzer= 5; 19 20// defining how many rows and columns our keypad have 21const byte rows = 4; 22const byte columns = 4; 23 24// Keypad pin map 25char hexaKeys[rows][columns] = { 26 {'1', '2', '3', 'A'}, 27 {'4', '5', '6', 'B'}, 28 {'7', '8', '9', 'C'}, 29 {'*', '0', '#', 'D'} 30}; 31 32// Initializing pins for keypad 33byte row_pins[rows] = {A0, A1, A2, A3}; 34byte column_pins[columns] = {2, 1, 0}; 35 36// Create instance for keypad 37Keypad keypad_key = Keypad( makeKeymap(hexaKeys), row_pins, column_pins, rows, columns); 38 39void setup() { 40 lcd.init(); // LCD screen 41 lcd.backlight(); 42 SPI.begin(); // Init SPI bus 43 mfrc522.PCD_Init(); // Init MFRC522 44 pinMode(buzzer, OUTPUT); 45 46 lcd.clear(); 47 lcd.setCursor(0, 0); 48 lcd.print("-----NexGO------"); 49 lcd.setCursor(0, 1); 50 lcd.print("BeyonD Payment's"); 51 52 delay(5000); 53} 54 55void loop() { 56 // System will first look for mode 57 if (RFIDMode == true) { 58; 59 60 lcd.clear(); 61 lcd.setCursor(0, 0); 62 lcd.print("Tap Your Card!"); 63 64 // Look for new cards 65 if ( ! mfrc522.PICC_IsNewCardPresent()) { 66 return; 67 } 68 69 // Select one of the cards 70 if ( ! mfrc522.PICC_ReadCardSerial()) { 71 return; 72 } 73 74 //Reading from the card 75 String tag = ""; 76 for (byte j = 0; j < mfrc522.uid.size; j++) 77 { 78 tag.concat(String(mfrc522.uid.uidByte[j] < 0x10 ? " 0" : " ")); 79 tag.concat(String(mfrc522.uid.uidByte[j], HEX)); 80 } 81 tag.toUpperCase(); 82 83 //Checking the card 84 if (tag.substring(1) == tagUID) 85 { 86 // If UID of tag is matched. 87 lcd.clear(); 88 89 tone(buzzer,2000); 90 delay(200); 91 noTone(buzzer); 92 93 lcd.print("Card Detected :)"); 94 95 delay(1000); 96 97 lcd.clear(); 98 lcd.print("Enter Pin:"); 99 lcd.setCursor(0, 1); 100 RFIDMode = false; // Make RFID mode false 101 } 102 103 else 104 { 105 // If UID of tag is not matched. 106 tone(buzzer,2000); 107 delay(200); 108 noTone(buzzer); 109 110 lcd.clear(); 111 lcd.setCursor(0, 0); 112 lcd.print("Processing"); 113 delay(250); 114 lcd.setCursor(10, 0); 115 lcd.print("."); 116 delay(250); 117 lcd.setCursor(11, 0); 118 lcd.print("."); 119 delay(250); 120 lcd.setCursor(12, 0); 121 lcd.print("."); 122 123 delay(250); 124 125 lcd.clear(); 126 lcd.setCursor(0, 0); 127 lcd.print("Processing"); 128 delay(250); 129 lcd.setCursor(10, 0); 130 lcd.print("."); 131 delay(250); 132 lcd.setCursor(11, 0); 133 lcd.print("."); 134 delay(250); 135 lcd.setCursor(12, 0); 136 lcd.print("."); 137 138 lcd.clear(); 139 140 lcd.setCursor(0, 0); 141 lcd.print("Card Invalid!"); 142 143 tone(buzzer,5000); 144 delay(400); 145 noTone(buzzer); 146 delay(800); 147 148 lcd.clear(); 149 150 lcd.setCursor(0, 0); 151 lcd.print("Please Scan a"); 152 lcd.setCursor(0, 1); 153 lcd.print("Vaild Card."); 154 155 delay(2000); 156 157 lcd.clear(); 158 } 159 } 160 161 // If RFID mode is false, it will look for keys from keypad 162 if (RFIDMode == false) { 163 key_pressed = keypad_key.getKey(); // Storing keys 164 if (key_pressed) 165 { 166 password[i++] = key_pressed; // Storing in password variable 167 lcd.print("*"); 168 } 169 if (i == 4) // If 4 keys are completed 170 { 171 delay(200); 172 if (!(strncmp(password, initial_password, 4))) // If password is matched 173 { 174 lcd.clear(); 175 176 lcd.print("Pin Accepted."); 177 178 tone(buzzer,2000); 179 delay(200); 180 noTone(buzzer); 181 delay(500); 182 183 lcd.clear(); 184 lcd.setCursor(0, 0); 185 lcd.print("Processing"); 186 delay(250); 187 lcd.setCursor(10, 0); 188 lcd.print("."); 189 delay(250); 190 lcd.setCursor(11, 0); 191 lcd.print("."); 192 delay(250); 193 lcd.setCursor(12, 0); 194 lcd.print("."); 195 196 delay(250); 197 198 lcd.clear(); 199 lcd.setCursor(0, 0); 200 lcd.print("Processing"); 201 delay(250); 202 lcd.setCursor(10, 0); 203 lcd.print("."); 204 delay(250); 205 lcd.setCursor(11, 0); 206 lcd.print("."); 207 delay(250); 208 lcd.setCursor(12, 0); 209 lcd.print("."); 210 211 delay(500); 212 lcd.clear(); 213 lcd.setCursor(0, 0); 214 lcd.print("Transaction"); 215 lcd.setCursor(0, 1); 216 lcd.print("Completed."); 217 218 tone(buzzer,2000); 219 delay(700); 220 noTone(buzzer); 221 222 delay(2000); 223 224 lcd.clear(); 225 i = 0; 226 RFIDMode = true; // Make RFID mode true 227 } 228 else // If password is not matched 229 { 230 lcd.clear(); 231 lcd.setCursor(0, 0); 232 lcd.print("Wrong Pin"); 233 lcd.setCursor(0, 1); 234 lcd.print("Entered :("); 235 236 tone(buzzer,5000); 237 delay(500); 238 noTone(buzzer); 239 240 delay(3000); 241 242 lcd.clear(); 243 i = 0; 244 RFIDMode = true; // Make RFID mode true 245 } 246 } 247 } 248}
Downloadable files
Connection schematic diagram
Connection schematic diagram
Connection schematic diagram
Connection schematic diagram
Comments
Only logged in users can leave comments