Arduino RFID Security System
A complete RFID door lock with display!
Components and supplies
1
Arduino UNO
1
5V One Channel Relay Module
1
I2C LCD 1602 Module
1
Speaker
1
RFID Reader and tag kit
Apps and platforms
1
Arduino IDE
Project description
Code
Door Lock Code
arduino
1#include <LiquidCrystal_I2C.h> 2#include <SPI.h> 3#include <MFRC522.h> 4#include <Wire.h> 5LiquidCrystal_I2C lcd(0x27, 16, 2); 6 7unsigned long startMillis; //set up millis for reset 8unsigned long currentMillis; //pull up millis for reset 9const unsigned long period = 604800000; //the value is a number of milliseconds, ie 7 days 10 11#define SS_PIN 10 12#define RST_PIN 9 13#define RELAY 3 //relay pin 14#define BUZZER 2 //buzzer pin 15MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. 16void setup() { 17 Serial.begin(9600); // Initiate a serial communication 18 SPI.begin(); 19 mfrc522.PCD_Init(); 20 pinMode(RELAY, OUTPUT); 21 pinMode(BUZZER, OUTPUT); 22 noTone(BUZZER); 23 lcd.init(); 24 lcd.clear(); 25 lcd.backlight(); 26 tone(BUZZER, 1000); 27 delay(100); 28 noTone(BUZZER); 29 lcd.print(F("ARDUINO SECURITY")); 30 lcd.setCursor(0, 1); 31 lcd.print(F(" DOOR ")); 32 delay(2000); 33 lcd.clear(); 34 lcd.print(F(" ACTIVATING ")); 35 lcd.setCursor(0, 1); 36 lcd.print(F(" SYSTEM ")); 37 delay(2000); 38 lcd.clear(); 39 digitalWrite(RELAY, HIGH); 40 delay(2); 41 digitalWrite(RELAY, LOW); 42 lcd.print(" PLEASE BE "); 43 lcd.setCursor(0, 1); 44 lcd.print(" PATIENT "); 45 delay(2000); 46 digitalWrite(RELAY, LOW); 47 tone(BUZZER, 1000); 48 delay(1000); 49 noTone(BUZZER); 50 lcd.clear(); 51 lcd.print(" SCAN CARD "); 52 lcd.setCursor(0, 1); 53 lcd.print(" TO UNLOCK "); 54} 55 56void(*resetFunc) (void) = 0; 57 58void loop() { 59 currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started) 60 if (currentMillis - startMillis >= period) //test whether the period has elapsed 61 { 62 resetFunc(); //call reset 63 } 64 if ( ! mfrc522.PICC_IsNewCardPresent()) return; // Look for new cards 65 if ( ! mfrc522.PICC_ReadCardSerial()) return; // Select one of the cards 66 Serial.print(F("UID tag :")); 67 String content = ""; 68 byte letter; 69 for (byte i = 0; i < mfrc522.uid.size; i++) 70 { 71 Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); 72 Serial.print(mfrc522.uid.uidByte[i], HEX); 73 content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); 74 content.concat(String(mfrc522.uid.uidByte[i], HEX)); 75 } 76 Serial.println(); 77 content.toUpperCase(); 78 if ((content.substring(1) == "93 6D BE 0D") 79 || (content.substring(1) == "51 67 DC B0") 80 || (content.substring(1) == "A3 23 74 11") //change here the UID of the card/cards that you want to give access to 81 || (content.substring(1) == "55 42 2B 0D")) 82 { 83 lcd.clear(); 84 lcd.backlight(); 85 lcd.print(" ACCESS "); 86 lcd.setCursor(0, 1); 87 lcd.print(" GRANTED! "); 88 digitalWrite(RELAY, HIGH); 89 tone(BUZZER, 1000); 90 delay(400); 91 noTone(BUZZER); 92 delay(6600); 93 digitalWrite(RELAY, LOW); 94 lcd.clear(); 95 lcd.print(" SCAN CARD "); 96 lcd.setCursor(0, 1); 97 lcd.print(" TO UNLOCK "); 98 } 99 100 else { 101 lcd.clear(); 102 lcd.backlight(); 103 lcd.print(" ACCESS "); 104 lcd.setCursor(0, 1); 105 lcd.print(" DENIED "); 106 tone(BUZZER, 1000); 107 delay(150); 108 noTone(BUZZER); 109 delay(25); 110 tone(BUZZER, 1000); 111 delay(150); 112 noTone(BUZZER); 113 delay(25); 114 tone(BUZZER, 1000); 115 delay(150); 116 noTone(BUZZER); 117 delay(25); 118 tone(BUZZER, 1000); 119 delay(150); 120 noTone(BUZZER); 121 delay(25); 122 tone(BUZZER, 1000); 123 delay(150); 124 noTone(BUZZER); 125 delay(1000); 126 lcd.clear(); 127 lcd.print(" SCAN CARD "); 128 lcd.setCursor(0, 1); 129 lcd.print(" TO UNLOCK "); 130 } 131}
Downloadable files
Schematic
Schematic

Schematic
Schematic

Comments
Only logged in users can leave comments