• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Homemade Circuit Projects

Get free circuit help 24/7

  • 1000+ Circuits
  • Privacy Policy
  • About Us
  • Contact
  • Disclaimer
  • Videos – Circuit Test Results
You are here: Home / Arduino Engineering Projects / How to Make a RFID based Attendance System

How to Make a RFID based Attendance System

Last Updated on June 4, 2019 by Swagatam

In this post we are going to construct a RFID based attendance system, which can record attendance of 12 students / staffs for a given time window and this system can record up to 255 attendances per person.

What is RFID Attendance System

We don't need any introduction regarding the RFID based attendance system, it is being used in colleges, office, libraries to know how many times a person or how many number of people has come in and out at what time.

In this project we will be constructing a simplest RFID based attendance system which does not overcomplicate the project.

In this project we will be using RTC module, which is utilized for enabling and disabling the attendance system within a given time period, so that we can keep the late comers at bay.

The RFID module “RFID-RC522” which can do read and write operations on NXP based RFID tags. NXP is lead producer of RFID tags in the world and we can get them on online and offline stores easily.

A 16 x 2 LCD display is used, which is to showcase information such as time, date, number of attendance, etc.

And finally an Arduino board is utilized which is the brain of the project. You may choose any version of board.

Now let’s move on to schematic diagrams:

Arduino to LCD display connection:

Just connect the wiring as per the below diagram and use 10 kilo ohm potentiometer to adjust the contrast.

Arduino to RFID module connection:

The RFID module must be powered by 3.3V and 5V can damage the on board components. The RFID-RC522 module works on SPI communication protocol while communicating with Arduino.

Rest of the circuit:

The Arduino can be powered from 9V wall adapter. There is a buzzer and LED to indicate that the card is detected. There are 4 buttons provided for viewing the attendance, clearing the memory and “yes” and “no” buttons.

That concludes the hardware part.

Please download the following library files:

Link1: github.com/PaulStoffregen/DS1307RTC

Link2: github.com/PaulStoffregen/Time

Link3: github.com/miguelbalboa/rfid.git

Now we have to set the correct time to RTC module to do this, follow the below steps with completed hardware setup.

  • Open the Arduino IDE.
  • Navigate to File> Examples> DS1307RTC> SetTime.
  • Upload the code.

Once the code is uploaded to Arduino, open the serial monitor. Now the RTC is synchronized with the time of your computer.

Now you have to find UID or unique identification number of all 12 RFID cards/tags. To find UID, upload the below code and open the serial monitor.

//-------------------------Program developed by R.Girish------------------//
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return;
if ( ! rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F("Your tag is not of type MIFARE Classic, your card/tag can't be read :("));
return;
}
String StrID = "" ;
for (byte i = 0; i < 4; i ++)
{
StrID +=
(rfid.uid.uidByte[i] < 0x10 ? "0" : "") +
String(rfid.uid.uidByte[i], HEX) +
(i != 3 ? ":" : "" );
}
StrID.toUpperCase();
Serial.print("Your card's UID: ");
Serial.println(StrID);
rfid.PICC_HaltA ();
rfid.PCD_StopCrypto1 ();
}
//-------------------------Program developed by R.Girish------------------//

  • Open serial monitor.
  • Scan the card/tag on RFID module.
  • Now you will see some hexadecimal code for each card.
  • Write it down, we will be entering those data in the next program.

The main program:

//-------------------------Program developed by R.Girish------------------//
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
const int rs = 7;
const int en = 6;
const int d4 = 5;
const int d5 = 4;
const int d6 = 3;
const int d7 = 2;
const int LED = 8;
boolean ok = false;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int list = A0;
const int CLM = A1;
const int yes = A2;
const int no = A3;
int H = 0;
int M = 0;
int S = 0;
int i = 0;
int ID1 = 0;
int ID2 = 0;
int ID3 = 0;
int ID4 = 0;
int ID5 = 0;
int ID6 = 0;
int ID7 = 0;
int ID8 = 0;
int ID9 = 0;
int ID10 = 0;
int ID11 = 0;
int ID12 = 0;
char UID[] = "";
// **************************** SETTINGS ************************ //
// ------ From -------- // (Set the time range for attendance in hours 0 to 23)
int h = 21; // Hrs
int m = 00; // Min
// ------- To ------- //
int h1 = 21; // Hrs
int m1 = 50; //Min
// ---------------- SET UIDs ----------------- //
char UID1[] = "F6:97:ED:70";
char UID2[] = "45:B8:AF:C0";
char UID3[] = "15:9F:A5:C0";
char UID4[] = "C5:E4:AD:C0";
char UID5[] = "65:1D:AF:C0";
char UID6[] = "45:8A:AF:C0";
char UID7[] = "15:9F:A4:C0";
char UID8[] = "55:CB:AF:C0";
char UID9[] = "65:7D:AF:C0";
char UID10[] = "05:2C:AA:04";
char UID11[] = "55:7D:AA:04";
char UID12[] = "BD:8A:16:0B";
// -------------- NAMES -----------------------//
char Name1[] = "Student1";
char Name2[] = "Student2";
char Name3[] = "Student3";
char Name4[] = "Student4";
char Name5[] = "Student5";
char Name6[] = "Student6";
char Name7[] = "Student7";
char Name8[] = "Student8";
char Name9[] = "Student9";
char Name10[] = "Student10";
char Name11[] = "Student11";
char Name12[] = "Student12";
// ********************************************************** //
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
SPI.begin();
rfid.PCD_Init();
pinMode(yes, INPUT);
pinMode(no, INPUT);
pinMode(list, INPUT);
pinMode(LED, OUTPUT);
pinMode(CLM, INPUT);
digitalWrite(CLM, HIGH);
digitalWrite(LED, LOW);
digitalWrite(yes, HIGH);
digitalWrite(no, HIGH);
digitalWrite(list, HIGH);
}
void loop()
{
if (digitalRead(list) == LOW)
{
Read_data();
}
if (digitalRead(CLM) == LOW)
{
clear_Memory();
}
tmElements_t tm;
if (RTC.read(tm))
{
lcd.clear();
H = tm.Hour;
M = tm.Minute;
S = tm.Second;
lcd.setCursor(0, 0);
lcd.print("TIME:");
lcd.print(tm.Hour);
lcd.print(":");
lcd.print(tm.Minute);
lcd.print(":");
lcd.print(tm.Second);
lcd.setCursor(0, 1);
lcd.print("DATE:");
lcd.print(tm.Day);
lcd.print("/");
lcd.print(tm.Month);
lcd.print("/");
lcd.print(tmYearToCalendar(tm.Year));
delay(1000);
} else {
if (RTC.chipPresent())
{
lcd.setCursor(0, 0);
lcd.print("RTC stopped!!!");
lcd.setCursor(0, 1);
lcd.print("Run SetTime code");
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Read error!");
lcd.setCursor(0, 1);
lcd.print("Check circuitry!");
}
}
if (H == h)
{
if (M == m)
{
ok = true;
}
}
if (H == h1)
{
if (M == m1)
{
ok = false;
}
}
if ( ! rfid.PICC_IsNewCardPresent())
return;
if ( ! rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F("Your tag is not of type MIFARE Classic, your card/tag can't be read :("));
}
String StrID = "" ;
for (byte i = 0; i < 4; i ++)
{
StrID +=
(rfid.uid.uidByte[i] < 0x10 ? "0" : "") +
String(rfid.uid.uidByte[i], HEX) +
(i != 3 ? ":" : "" );
}
StrID.toUpperCase();
if (ok == false)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Attendance is");
lcd.setCursor(0, 1);
lcd.print("Closed.");
delay(1000);
}
if (ok)
{
//-----------------------------------//
if (StrID == UID1)
{
ID1 = EEPROM.read(1);
ID1 = ID1 + 1;
if (ID1 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID1 != 256)
{
EEPROM.write(1, ID1);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID2)
{
ID2 = EEPROM.read(2);
ID2 = ID2 + 1;
if (ID2 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID2 != 256)
{
EEPROM.write(2, ID2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID3)
{
ID3 = EEPROM.read(3);
ID3 = ID3 + 1;
if (ID3 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID3 != 256)
{
EEPROM.write(3, ID3);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID4)
{
ID4 = EEPROM.read(4);
ID4 = ID4 + 1;
if (ID4 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID4 != 256)
{
EEPROM.write(4, ID4);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID5)
{
ID5 = EEPROM.read(5);
ID5 = ID5 + 1;
if (ID5 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID5 != 256)
{
EEPROM.write(5, ID5);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID6)
{
ID6 = EEPROM.read(6);
ID6 = ID6 + 1;
if (ID6 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID6 != 256)
{
EEPROM.write(6, ID6);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID7)
{
ID7 = EEPROM.read(7);
ID7 = ID7 + 1;
if (ID7 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID7 != 256)
{
EEPROM.write(7, ID7);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID8)
{
ID8 = EEPROM.read(8);
ID8 = ID1 + 1;
if (ID8 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID8 != 256)
{
EEPROM.write(8, ID8);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID9)
{
ID9 = EEPROM.read(9);
ID9 = ID9 + 1;
if (ID9 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID9 != 256)
{
EEPROM.write(9, ID9);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID10)
{
ID10 = EEPROM.read(10);
ID10 = ID10 + 1;
if (ID10 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID10 != 256)
{
EEPROM.write(10, ID10);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID11)
{
ID11 = EEPROM.read(11);
ID11 = ID11 + 1;
if (ID11 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID11 != 256)
{
EEPROM.write(11, ID11);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID12)
{
ID12 = EEPROM.read(12);
ID12 = ID12 + 1;
if (ID12 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Memory is Full");
lcd.setCursor(0, 1);
lcd.print("Please Clear All.");
for (i = 0; i < 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID12 != 256)
{
EEPROM.write(12, ID12);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Attendance");
lcd.setCursor(0, 1);
lcd.print("Registered !!!");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
if (StrID != UID1 || StrID != UID2 || StrID != UID3 || StrID != UID4
|| StrID != UID5 || StrID != UID6 || StrID != UID7 || StrID != UID8
|| StrID != UID9 || StrID != UID10 || StrID != UID11 || StrID != UID12)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Unknown RFID");
lcd.setCursor(0, 1);
lcd.print("Card !!!");
for (i = 0; i < 3; i++)
{
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
delay(200);
}
}
rfid.PICC_HaltA ();
rfid.PCD_StopCrypto1();
}
}
void Read_data()
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name1);
lcd.print(":");
lcd.print(EEPROM.read(1));
lcd.setCursor(0, 1);
lcd.print(Name2);
lcd.print(":");
lcd.print(EEPROM.read(2));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name3);
lcd.print(":");
lcd.print(EEPROM.read(3));
lcd.setCursor(0, 1);
lcd.print(Name4);
lcd.print(":");
lcd.print(EEPROM.read(4));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name5);
lcd.print(":");
lcd.print(EEPROM.read(5));
lcd.setCursor(0, 1);
lcd.print(Name6);
lcd.print(":");
lcd.print(EEPROM.read(6));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name7);
lcd.print(":");
lcd.print(EEPROM.read(7));
lcd.setCursor(0, 1);
lcd.print(Name8);
lcd.print(":");
lcd.print(EEPROM.read(8));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name9);
lcd.print(":");
lcd.print(EEPROM.read(9));
lcd.setCursor(0, 1);
lcd.print(Name10);
lcd.print(":");
lcd.print(EEPROM.read(10));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name11);
lcd.print(":");
lcd.print(EEPROM.read(11));
lcd.setCursor(0, 1);
lcd.print(Name12);
lcd.print(":");
lcd.print(EEPROM.read(12));
delay(2000);
}
void clear_Memory()
{
lcd.clear();
lcd.print(0, 0);
lcd.print(F("Clear All Data?"));
lcd.setCursor(0, 1);
lcd.print(F("Long press: Y/N"));
delay(2500);
Serial.print("YES");
if (digitalRead(yes) == LOW)
{
EEPROM.write(1, 0);
EEPROM.write(2, 0);
EEPROM.write(3, 0);
EEPROM.write(4, 0);
EEPROM.write(5, 0);
EEPROM.write(6, 0);
EEPROM.write(7, 0);
EEPROM.write(8, 0);
EEPROM.write(9, 0);
EEPROM.write(10, 0);
EEPROM.write(11, 0);
EEPROM.write(12, 0);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F("All Data Cleared"));
lcd.setCursor(0, 1);
lcd.print(F("****************"));
delay(1500);
}
if (digitalRead(no) == LOW);
{
return;
}
}
//-------------------------Program developed by R.Girish------------------//

// ---------------- SET UIDs ----------------- //

char UID1[] = "F6:97:ED:70";

char UID2[] = "45:B8:AF:C0";

char UID3[] = "15:9F:A5:C0";

char UID4[] = "C5:E4:AD:C0";

char UID5[] = "65:1D:AF:C0";

char UID6[] = "45:8A:AF:C0";

char UID7[] = "15:9F:A4:C0";

char UID8[] = "55:CB:AF:C0";

char UID9[] = "65:7D:AF:C0";

char UID10[] = "05:2C:AA:04";

char UID11[] = "55:7D:AA:04";

char UID12[] = "BD:8A:16:0B";

//----------------------------------------------//

You have place names here:

// -------------- NAMES -----------------------//

char Name1[] = "Student1";

char Name2[] = "Student2";

char Name3[] = "Student3";

char Name4[] = "Student4";

char Name5[] = "Student5";

char Name6[] = "Student6";

char Name7[] = "Student7";

char Name8[] = "Student8";

char Name9[] = "Student9";

char Name10[] = "Student10";

char Name11[] = "Student11";

char Name12[] = "Student12";

//--------------------------------------------//

Replace student1, student2 with any name you wish or leave it as it is.

You have to set the time from when to when the attendance system should be active, rest of the time the system won’t register the attendance when we scan RFID tag/card:

// ------ From -------- //

int h = 21; // Hrs

int m = 00; // Min

// ------- To ------- //

int h1 = 21; // Hrs

int m1 = 50; //Min

//-------------------------//

The upper part is starting time and the lower part is ending time. You have to enter time in hours from 0 to 23 and minutes from 00 to 59.

Author’s prototype:

If you have any questions regarding this project, feel free to express in the comment section, you may receive a quick reply.




Previous: Arduino Automatic School/College Bell System
Next: 3D Moon-Sphere LED Driver with Charger and Dimmer Circuit

About Swagatam

I am an electronic engineer (dipIETE ), hobbyist, inventor, schematic/PCB designer, manufacturer. I am also the founder of the website: https://www.homemade-circuits.com/, where I love sharing my innovative circuit ideas and tutorials.
If you have any circuit related query, you may interact through comments, I'll be most happy to help!

You'll also like:

  • 1.  How to Make a Simple Math Calculator using Arduino
  • 2.  Digital Clock Circuit Using 16×2 LCD Display
  • 3.  Automatic Street Light Dimmer Circuit
  • 4.  Digital Capacitance Meter Circuit Using Arduino
  • 5.  Vehicle Speed Detector Circuit for Traffic Police
  • 6.  Using Digital Potentiometer MCP41xx With Arduino

Please Subscribe (Only if you are Genuinely Interested in our Newsletters)


 

Reader Interactions

Comments

  1. Search Related Posts for Commenting

  2. Boby says

    Please help me for ”Attendance is close problem”.

    • Swag says

      sorry, I won’t be able to suggest much regarding Arduino circuits, since I am not good with it….

  3. vijaya says

    sir,
    i constructed the above project by following the steps line by line as u mentioned,but at time of running it. the project is displaying only time and date its not accessing the RFID part please can u help what may be the solution??

    • Swag says

      Vijaya, I have forwarded the question to Mr. GR, he may reply you soon.

    • GR says

      Hi Vijaya,

      My best prediction is that you forget to place the timing.

      // —— From ——– //
      int h = 21; // Hrs
      int m = 00; // Min
      // ——- To ——- //
      int h1 = 21; // Hrs
      int m1 = 50; //Min
      //————————-//

      You have to enter the timing, otherwise the card will ignore if scaned out the set time.
      You have to enter time in hours from 0 to 23 and minutes from 00 to 59.

      While testing set the time from now to next 15 mins. After this particular span time all cards will be ignored.
      Also change your UID and name as per the instruction, if you haven’t.

      Regards

    • GR says

      Did you check your RFID tag / RFID reader works properly?

      If not click here and check whether your RFID reader can read “UID” code from your tag : https://www.homemade-circuits.com/make-this-rfid-circuit-using-arduino/

      Regards

      • vijaya says

        thank you ir now the project is working absolutely fine .bu i have some doubts regarding project.
        1:the rtc module is setting time according to GMT , i need to set to the local time(+5hours:30minutes) how can i do that??
        2:where is the stored data can be collected ? example: if i placed the tag and my attendance is registered n so does the others how can i get how many tags attendance is registered??
        do we need to extend project for that to collect the whole data of absenties ,presenties and all??

        • GR says

          Hi vijaya,

          To get your local time, make sure that your PC is set to local time and upload the RTC time setting code, Instructions are given in this project.

          The attendance data is stored in EEPROM of Arduino, press the button connected to “A0” you can see the attendance registered of all 12 students. All 4 buttons are mandatory for this circuit don’t skip.

          No external project is need to collect attendance data.

          Regards

          Regards

  4. Angelo Espada says

    Where is the attendance data stored? Is it possible to view the attendance data?

    • Swag says

      I am sorry Angelo, I won’t be able to provide help regarding Arduino related circuits since it was written and compiled by another author.

    • GR says

      Hi Angelo,

      The attendance data is stored in EEPROM of Arduino and you can view on the LCD, to know more read the full project.

      Regards

  5. prabhat says

    Can we also interface gsm module in this project , so that each time when rfid card is read then a message can be sent on a mobile no.?

    • Swag says

      Prabhat,

      It may be possible, however customized designs will require a fee for the designing.

  6. JHEANVIEL says

    WHAT ARE THE COMPONENTS OF THIS PROJECT

  7. Rashaka Lufuno says

    Nice project , I will be constructing the project, Is it possible to take it further to data logging where the attendance register data can latter stored and reviewed and or printed from the computer
    Thanks for help

    • Swag says

      Thanks Rashaka,

      We will think about it, and if possible post the modifications in the article.

  8. Swag says

    Thanks so much Abbey, Do you intend to have an adjustable timer circuit that would dispense the fragrance through some mechanism at given time intervals? please elaborate a bit so that I may get a clear idea of the device….

    • Abbey says

      Kudos Swag, here is the idea. there are several of it in the open market. mine is manually fill into a manufacture container with spray gun, you press it it realeases. what I want to achieve is how possible to get a container which is more of plastic not sealed container like flit. a plastic type manually refill with a device to mounted on the mouth that can spray at an interver using battery. hope you got it

      • Swag says

        OK thanks, I have understood, possibly I’ll try to design it and publish the article in my website soon….



  9. COMMENT BOX IS MOVED AT THE TOP


Primary Sidebar

Electronic Projects Categories

  • 3-Phase Power (15)
  • 324 IC Circuits (19)
  • 4017 IC Circuits (51)
  • 4060 IC Circuits (25)
  • 555 IC Circuits (92)
  • 741 IC Circuits (18)
  • Amplifiers (49)
  • Arduino Engineering Projects (82)
  • Audio Projects (83)
  • Battery Chargers (75)
  • Car and Motorcycle (87)
  • Datasheets (44)
  • Decorative Lighting (Diwali, Christmas) (31)
  • DIY LED Projects (81)
  • Electronic Components (96)
  • Electronic Devices and Circuit Theory (34)
  • Electronics Tutorial (99)
  • Fish Aquarium (5)
  • Free Energy (34)
  • Games (2)
  • GSM Projects (9)
  • Health Related (17)
  • Heater Controllers (23)
  • Home Electrical Circuits (98)
  • Incubator Related (6)
  • Industrial Electronics (25)
  • Infrared (IR) (39)
  • Inverter Circuits (94)
  • Laser Projects (10)
  • LM317/LM338 (21)
  • LM3915 IC (24)
  • Meters and Testers (52)
  • Mini Projects (152)
  • Motor Controller (64)
  • MPPT (7)
  • Oscillator Circuits (12)
  • PIR (Passive Infrared) (8)
  • Power Electronics (32)
  • Power Supply Circuits (65)
  • Radio Circuits (9)
  • Remote Control (46)
  • Security and Alarm (55)
  • Sensors and Detectors (115)
  • SG3525 IC (4)
  • Simple Circuits (72)
  • SMPS (30)
  • Solar Controllers (60)
  • Timer and Delay Relay (51)
  • TL494 IC (5)
  • Transformerless Power Supply (8)
  • Transmitter Circuits (37)
  • Ultrasonic Projects (12)
  • Water Level Controller (45)

Follow Homemade Circuits

Facebook
Twitter
YouTube
Instagram
My Facebook-Page
Quora

Feeds

Post RSS
Comment RSS

Circuit Calculators

  • AWG to Millimeter Converter
  • Battery Back up Time Calculator
  • Capacitance Reactance Calculator
  • IC 555 Astable Calculator
  • IC 555 Monostable Calculator
  • Inductance Calculator
  • LC Resonance Calculator
  • LM317, LM338, LM396 Calculator
  • Ohm’s Law Calculator
  • Phase Angle Phase Shift Calculator
  • Power Factor (PF) Calculator
  • Reactance Calculator
  • Small Signal Transistor(BJT) and Diode Quick Datasheet
  • Transistor Astable Calculator
  • Transistor base Resistor Calculator
  • Voltage Divider Calculator
  • Wire Current Calculator
  • Zener Diode Calculator

© 2021 · Swagatam Innovations

We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.Ok