How to make a ARDUINO controlled RFID keyless entry door lock

This tutorial will show you how to use a ARDUINO with a RC522 (MFRC522) RFID card reader to make a keyless entry door lock system..

Click on video below for full tutorial…

 

 

 

Click here to get the MFRC522 library

 

PARTS LIST:

ARDUINO board

RFID reader

Relay

Door Lock solenoid

Logic LVL Converter

RGB LED

1 X resistor (value depends on led you use)

Bread Board

Jumper Wires

 

SCHEMATIC:

click on image to enlarge it, you can also print it.

rfid_door_lock_schem

 

ARDUINO CODE:

 

/*
—————————————————————————-
Typical pin layout used:
—————————————————————————————–
MFRC522 Arduino Arduino Arduino Arduino Arduino
Reader/PCD Uno Mega Nano v3 Leonardo/Micro Pro Micro
Signal Pin Pin Pin Pin Pin Pin
—————————————————————————————–
RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
SPI SS SDA(SS) 10 53 D10 10 10
SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15

*/
#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_PIN 10 // Configurable, see typical pin layout above

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

String read_rfid;
String ok_rfid_1 = “66f4608e”;
String ok_rfid_2 = “c08e3f52”; //add as many as you need.

#define red 4 // RGB led pins
#define green 3
#define relay 7 // Relay pin#

void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(relay, OUTPUT);
}
void dump_byte_array(byte *buffer, byte bufferSize) {
read_rfid = “”;
for (byte i = 0; i < bufferSize; i++) {
read_rfid = read_rfid + String(buffer[i], HEX);
}
}

void open_lock() {
// if rfid is good this is what will happen

digitalWrite(green, HIGH);
digitalWrite(relay, HIGH);
delay(5000); // how long the relay will be on
digitalWrite(green, LOW);
digitalWrite(relay, LOW);
}

void loop() {

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

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

dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println(read_rfid);
if (read_rfid == ok_rfid_1) { // RFID #1
//ok, open the door.
open_lock();
}

if (read_rfid == ok_rfid_2) { // RFID #2
//also ok, open the door
open_lock();
}

if (read_rfid != ok_rfid_1 && read_rfid != ok_rfid_2)
{
digitalWrite(red,HIGH);
delay(2000);
digitalWrite(red,LOW);
}
}