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…
Check us out on Facebook!
Click here to get the MFRC522 library
PARTS LIST:
#affiliate links#
1 X resistor (value depends on led you use)
SCHEMATIC:
click on image to enlarge it, you can also print it.
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);
}
}