An RFID door lock using Arduino is a sophisticated security system that regulates access to a door through RFID technology. By combining an RFID reader module with an Arduino microcontroller, this project enables the authentication of RFID tags or cards assigned to authorized users. When a user presents their RFID tag or card to the reader, the Arduino processes the unique identification code transmitted by the RFID reader. If the code matches an authorized user in the system's database, the Arduino activates a mechanism to unlock the door, typically through a servo motor controlling the door latch. Moreover, the Arduino can be programmed to record access attempts, issue alerts for unauthorized entries, or incorporate additional security measures. This project offers a reliable and flexible solution for access control in various settings, including homes, offices, and facilities requiring restricted entry.
Circuit Diagram :-
Code :-
// By Arduino Techy
//
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define SERVO_PIN 3
Servo myservo;
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
myservo.attach(SERVO_PIN);
myservo.write( 70 );
delay(7500);
myservo.write( 0 );
Serial.println("Put your card to the reader...");
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "69 C8 E2 2A") //change here the UID of the card
{
Serial.println("Authorized access");
Serial.println();
myservo.write( 70 );
delay(7500);
myservo.write( 0 );
}
else {
Serial.println(" Access denied");
delay(DENIED_DELAY);
}
}