RFID Based Attendance System Using Arduino

0 1511 Medium

We make a smart system in which attendance is taken by the RFID module and the controller we use for this is Arduino UNO.

projectImage

Things used in this project

 

Hardware components

HARDWARE LIST
1 DFRobot I2C 16x2 Arduino LCD Display Module
1 Arduino UNO
1 SparkFun RFID Reader Breakout
1 Jumper wires (generic)
1 Breadboard (generic)
1 Buzzer
1 5 mm LED: Red
1 5 mm LED: Green
1 Resistor 220 ohm

Software apps and online services

 

Arduino IDE

Story

 

Hello geeks, hope you are doing fine. This is an RFID-based smart attendance system that we are making using an Arduino UNO microcontroller board. You can read the full project on our website as well. The students can enroll themself by just placing the smart card on the reader module. The system is capable enough to record the attendance on the serial monitor screen. Later on, you can extract the information from it.

projectImage

How Does RFID-based attendance system Work?

 

This system works on radio frequency identification that is RFID. The smart card that we use here is pre-coded with the roll numbers of the students. Whenever someone uses a card whose information is not registered in the memory of the system the red LED will go on and the buzzer starts beeping. When the system is on it will ask you to put the smart card on the reader module. For displaying the contents we are using a 16×2 LCD with an I2C module.

projectImage

When the RFID reads the card that is coded with the correct details of the student the Green LED will glow.

projectImage

You can add as many students as you want and also change their names by modifying the code.

projectImage
projectImage
projectImage
projectImage

Components Required

 

-Arduino UNO

 

-RC522 RFID module

 

-Different RFID tags

 

-Jumper wires and a breadboard

 

-Red and green LED

 

-Buzzer and a 220-ohm resistor

 

-I2C module

 

-16×2 LCD display

 

-USB cable for uploading the code

 

 

RFID based attendance system Circuit Diagram

 

The circuit diagram for both using the I2C module and not is given below. You can make anyone you want.

projectImage

Arduino 5-volts pin -> VCC of the I2c module

 

Arduino GND pin -> GND of the I2C module

 

Arduino analog-4 pin -> SDA of the I2C module

 

Arduino analog-5 pin -> SCL of the I2C module

 

Arduino digital-2 pin -> positive leg of buzzer

 

Arduino digital-4 pin -> positive leg of red LED

 

Arduino digital-5 pin -> positive leg of green LED

Without I2C module

projectImage

RFID based attendance system Code

With I2C module

CODE
// Techatronic.com
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED pin
#define BUZZER 2 //buzzer pin
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
lcd.begin();
lcd.backlight(); // Turn on the blacklight and print a message.
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
lcd.setCursor(3,0);
lcd.print("SHOW YOUR");
lcd.setCursor(4,1);
lcd.print("ID CARD");
return;
}
else{
lcd.clear();
}
// 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();
content.toUpperCase();
if (content.substring(1) == "36 B1 03 32") //change here the UID of the card/cards that you want to give access
{
lcd.print("STUDENT 01");
lcd.setCursor(0,1);
lcd.print("PRESENT");
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
delay(3000);
digitalWrite(LED_G, LOW);
lcd.clear();
}
else if (content.substring(1) == "81 93 40 43") //change here the UID of the card/cards that you want to give access
{
lcd.print("STUDENT 02");
lcd.setCursor(0,1);
lcd.print("PRESENT");
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
delay(3000);
digitalWrite(LED_G, LOW);
lcd.clear();
}
else if (content.substring(1) == "91 69 3E 43") //change here the UID of the card/cards that you want to give access
{
lcd.print("STUDENT 03");
lcd.setCursor(0,1);
lcd.print("PRESENT");
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
delay(3000);
digitalWrite(LED_G, LOW);
lcd.clear();
}
else  {
lcd.print("UNAUTHORIZE");
lcd.setCursor(0,1);
lcd.print("ACCESS");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(2000);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
lcd.clear();
}
}

Without I2C module

CODE
#include <SPI.h>
#include <MFRC522.h>
#include "LiquidCrystal.h"
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED pin
#define BUZZER 2 //buzzer pin
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
lcd.begin(16,2); // Turn on the blacklight and print a message.
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
lcd.setCursor(3,0);
lcd.print("SHOW YOUR");
lcd.setCursor(4,1);
lcd.print("ID CARD");
return;
}
else{
lcd.clear();
}
// 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();
content.toUpperCase();
if (content.substring(1) == "36 B1 03 32") //change here the UID of the card/cards that you want to give access
{
lcd.print("STUDENT 01");
lcd.setCursor(0,1);
lcd.print("PRESENT");
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
delay(3000);
digitalWrite(LED_G, LOW);
lcd.clear();
}
else if (content.substring(1) == "81 93 40 43") //change here the UID of the card/cards that you want to give access
{
lcd.print("STUDENT 02");
lcd.setCursor(0,1);
lcd.print("PRESENT");
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
delay(3000);
digitalWrite(LED_G, LOW);
lcd.clear();
}
else if (content.substring(1) == "91 69 3E 43") //change here the UID of the card/cards that you want to give access
{
lcd.print("STUDENT 03");
lcd.setCursor(0,1);
lcd.print("PRESENT");
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
delay(3000);
digitalWrite(LED_G, LOW);
lcd.clear();
}
else  {
lcd.print("UNAUTHORIZE");
lcd.setCursor(0,1);
lcd.print("ACCESS");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(2000);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
lcd.clear();
}
}

We hope that you understand the concept of the project and must try to make it on your own. For more interesting projects visit our official website.

 

HAPPY LEARNING!

Code

 

Code snippet #1

Plain text

CODE
 // Techatronic.com  
 #include <SPI.h>  
 #include <MFRC522.h>  
 #include <Wire.h>   
 #include <LiquidCrystal_I2C.h>  
 // Set the LCD address to 0x27 for a 16 chars and 2 line display  
 LiquidCrystal_I2C lcd(0x27, 16, 2);  
 #define SS_PIN 10  
 #define RST_PIN 9  
 #define LED_G 5 //define green LED pin  
 #define LED_R 4 //define red LED pin  
 #define BUZZER 2 //buzzer pin  
 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  
  lcd.begin();   
  lcd.backlight(); // Turn on the blacklight and print a message.   
  pinMode(LED_G, OUTPUT);  
  pinMode(LED_R, OUTPUT);  
  pinMode(BUZZER, OUTPUT);  
  noTone(BUZZER);  
 }  
 void loop()   
 {  
  // Look for new cards  
  if ( ! mfrc522.PICC_IsNewCardPresent())   
  {    
  lcd.setCursor(3,0);  
  lcd.print("SHOW YOUR");  
  lcd.setCursor(4,1);  
  lcd.print("ID CARD");   
  return;  
  }  
  else{  
    lcd.clear();  
  }  
  // 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();  
  content.toUpperCase();   
  if (content.substring(1) == "36 B1 03 32") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 01");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");    
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else if (content.substring(1) == "81 93 40 43") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 02");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");  
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else if (content.substring(1) == "91 69 3E 43") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 03");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");  
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else  {  
   lcd.print("UNAUTHORIZE");  
   lcd.setCursor(0,1);  
   lcd.print("ACCESS");    
   digitalWrite(LED_R, HIGH);  
   tone(BUZZER, 300);  
   delay(2000);  
   digitalWrite(LED_R, LOW);  
   noTone(BUZZER);  
   lcd.clear();  
  }  
 }  

Code snippet #2

Plain text

CODE
 // Techatronic.com  
 #include <SPI.h>  
 #include <MFRC522.h>  
 #include <Wire.h>   
 #include <LiquidCrystal_I2C.h>  
 // Set the LCD address to 0x27 for a 16 chars and 2 line display  
 LiquidCrystal_I2C lcd(0x27, 16, 2);  
 #define SS_PIN 10  
 #define RST_PIN 9  
 #define LED_G 5 //define green LED pin  
 #define LED_R 4 //define red LED pin  
 #define BUZZER 2 //buzzer pin  
 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  
  lcd.begin();   
  lcd.backlight(); // Turn on the blacklight and print a message.   
  pinMode(LED_G, OUTPUT);  
  pinMode(LED_R, OUTPUT);  
  pinMode(BUZZER, OUTPUT);  
  noTone(BUZZER);  
 }  
 void loop()   
 {  
  // Look for new cards  
  if ( ! mfrc522.PICC_IsNewCardPresent())   
  {    
  lcd.setCursor(3,0);  
  lcd.print("SHOW YOUR");  
  lcd.setCursor(4,1);  
  lcd.print("ID CARD");   
  return;  
  }  
  else{  
    lcd.clear();  
  }  
  // 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();  
  content.toUpperCase();   
  if (content.substring(1) == "36 B1 03 32") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 01");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");    
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else if (content.substring(1) == "81 93 40 43") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 02");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");  
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else if (content.substring(1) == "91 69 3E 43") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 03");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");  
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else  {  
   lcd.print("UNAUTHORIZE");  
   lcd.setCursor(0,1);  
   lcd.print("ACCESS");    
   digitalWrite(LED_R, HIGH);  
   tone(BUZZER, 300);  
   delay(2000);  
   digitalWrite(LED_R, LOW);  
   noTone(BUZZER);  
   lcd.clear();  
  }  
 }  

Code snippet #3

Plain text

CODE
 #include <SPI.h>  
 #include <MFRC522.h>  
 #include "LiquidCrystal.h"  
 LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);  
 #define SS_PIN 10  
 #define RST_PIN 9  
 #define LED_G 5 //define green LED pin  
 #define LED_R 4 //define red LED pin  
 #define BUZZER 2 //buzzer pin  
 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  
  lcd.begin(16,2); // Turn on the blacklight and print a message.   
  pinMode(LED_G, OUTPUT);  
  pinMode(LED_R, OUTPUT);  
  pinMode(BUZZER, OUTPUT);  
  noTone(BUZZER);  
 }  
 void loop()   
 {  
  // Look for new cards  
  if ( ! mfrc522.PICC_IsNewCardPresent())   
  {    
  lcd.setCursor(3,0);  
  lcd.print("SHOW YOUR");  
  lcd.setCursor(4,1);  
  lcd.print("ID CARD");   
  return;  
  }  
  else{  
    lcd.clear();  
  }  
  // 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();  
  content.toUpperCase();   
  if (content.substring(1) == "36 B1 03 32") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 01");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");    
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else if (content.substring(1) == "81 93 40 43") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 02");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");  
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else if (content.substring(1) == "91 69 3E 43") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 03");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");  
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else  {  
   lcd.print("UNAUTHORIZE");  
   lcd.setCursor(0,1);  
   lcd.print("ACCESS");    
   digitalWrite(LED_R, HIGH);  
   tone(BUZZER, 300);  
   delay(2000);  
   digitalWrite(LED_R, LOW);  
   noTone(BUZZER);  
   lcd.clear();  
  }  
 }  

Code snippet #4

Plain text

CODE
 #include <SPI.h>  
 #include <MFRC522.h>  
 #include "LiquidCrystal.h"  
 LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);  
 #define SS_PIN 10  
 #define RST_PIN 9  
 #define LED_G 5 //define green LED pin  
 #define LED_R 4 //define red LED pin  
 #define BUZZER 2 //buzzer pin  
 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  
  lcd.begin(16,2); // Turn on the blacklight and print a message.   
  pinMode(LED_G, OUTPUT);  
  pinMode(LED_R, OUTPUT);  
  pinMode(BUZZER, OUTPUT);  
  noTone(BUZZER);  
 }  
 void loop()   
 {  
  // Look for new cards  
  if ( ! mfrc522.PICC_IsNewCardPresent())   
  {    
  lcd.setCursor(3,0);  
  lcd.print("SHOW YOUR");  
  lcd.setCursor(4,1);  
  lcd.print("ID CARD");   
  return;  
  }  
  else{  
    lcd.clear();  
  }  
  // 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();  
  content.toUpperCase();   
  if (content.substring(1) == "36 B1 03 32") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 01");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");    
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else if (content.substring(1) == "81 93 40 43") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 02");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");  
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else if (content.substring(1) == "91 69 3E 43") //change here the UID of the card/cards that you want to give access  
  {  
   lcd.print("STUDENT 03");  
   lcd.setCursor(0,1);  
   lcd.print("PRESENT");  
   digitalWrite(LED_G, HIGH);  
   tone(BUZZER, 500);  
   delay(300);  
   noTone(BUZZER);  
   delay(3000);  
   digitalWrite(LED_G, LOW);  
   lcd.clear();  
  }  
  else  {  
   lcd.print("UNAUTHORIZE");  
   lcd.setCursor(0,1);  
   lcd.print("ACCESS");    
   digitalWrite(LED_R, HIGH);  
   tone(BUZZER, 300);  
   delay(2000);  
   digitalWrite(LED_R, LOW);  
   noTone(BUZZER);  
   lcd.clear();  
  }  
 }  

Github

https://github.com/PaulStoffregen/SPI

icon SPI-master.zip 25KB Download(1)

Github

https://github.com/miguelbalboa/rfid

icon rfid-master.zip 941KB Download(1)

Github

https://github.com/PaulStoffregen/Wire

icon Wire-master.zip 35KB Download(1)

Github

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

icon Arduino-LiquidCrystal-I2C-library-master.zip 9KB Download(1)

The article was first published in hackster, August 25 2021

cr: https://www.hackster.io/electronicprojects/rfid-based-attendance-system-using-arduino-d3d719

author: Techatronic

License
All Rights
Reserved
licensBg
0