AY 2024-25
III Semester
ECL405
A PROJECT REPORT
ON
ClassPass : IoT-Enabled RFID Attendance Logger
Bachelor of Technology
in
School of Electronics
By
Srinivas Krishnanand Prabhu (23251)
SCHOOL OF ELECTRONICS
INDIAN INSTITUTE OF INFORMATION TECHNOLOGY UNA
HIMACHAL PRADESH
MAY 2025
BONAFIDE CERTIFICATE
This is to certify that the project titled ClassPass is a bonafide record of the work done by
Srinivas Krishnanand Prabhu (23251)
in partial fulfilment of the requirements for the award of the degree of Bachelor of
Technology in INFORMATION TECHNOLOGY of the INDIAN INSTITUTE OF
INFORMATION TECHNOLOGY UNA, HIMACHAL PRADESH, during the year 2024 -
2025.
under the guidance of
Dr. Nikunj Goyal
Project viva-voce held on: _______________
Internal Examiner External Examiner
1 ECL405/23251
ORIGNALITY / NO PLAGARISM DECLARATION
I certify that this project report is our original report and no part of it is copied from any
published reports, papers, books, articles, etc. We certify that all the contents in this report
are based on our personal findings and research and we have cited all the relevant sources
which have been required in the preparation of this project report, whether they be books,
articles, reports, lecture notes, and any other kind of document. We also certify that this report
has not previously been submitted partially or as whole for the award of degree in any other
university in India and/or abroad.
I hereby declare that, I am fully aware of what constitutes plagiarism and understand that if
it is found at a later stage to contain any instance of plagiarism, my degree may be cancelled.
Srinivas Krishnanand Prabhu (23251)
2 ECL405/23251
ABSTRACT
The proposed project introduces ClassPass, a smart attendance management system that
utilizes RFID technology and wireless connectivity to automate and secure attendance
tracking in academic environments. The system leverages RFID tags assigned to individual
users and a NodeMCU microcontroller to facilitate real-time attendance logging over a
wireless network. Role-specific interfaces are developed for teachers and students, ensuring
proper access control and personalized interaction. A key feature is the implementation of
time-bound attendance sessions, which restrict marking to a fixed window after the faculty
logs in, thereby enhancing authenticity. Data is stored and visualized through a web
dashboard, offering transparency, attendance summaries, and predictive insights into
required attendance levels. This system reduces manual intervention, improves record
accuracy, and offers a scalable solution for institutions aiming to modernize their attendance
infrastructure.
Keywords:
RFID Attendance System, NodeMCU, Real-Time Monitoring, Wireless Data Transmission,
Role-Based Access, Time-Bound Logging, Smart Classroom, IoT-Based Automation,
Secure Authentication, Web Dashboard
3 ECL405/23251
ACKNOWLEDGEMENT
I would like to thank the following people for their support and guidance without whom the
completion of this project in fruition would not be possible.
I would like to express our sincere gratitude and heartfelt thanks to Dr. Nikunj Goyal for their
unflinching support and guidance, valuable suggestions and expert advice. Their words of
wisdom and expertise in subject matter were of immense help throughout the duration of this
project.
I also take the opportunity to thank our Director and all the faculty of School of Electronics,
IIIT Una for helping me by providing necessary knowledge base and resources.
I would also like to thank my parents and friends for their constant support.
Srinivas Krishnanand Prabhu (23251)
4 ECL405/23251
TABLE OF CONTENTS
Title Page No.
ABSTRACT………………………………………………………………………………...3
ACKNOWLEGEMENT…………………………………………………………………...4
TABLE OF CONTENTS………………………………………………………..…………5
LIST OF ACRONYMS…………………………………………………………………….7
LIST OF TABLES………………………………………………………………………….8
LIST OF FIGURES………………………………………………………………………...9
1 Introduction……………………………………………………………………….10
1.1 Overview……………………………………………………………..…….10
1.2 Objective………………………………………………………………..….10
2 Review of Literature ……………………………………………………………...11
2.1 Existing Solutions and Comparison with my Model……….……………….11
2.1.1 Traditional Methods …………...…………………………………...11
2.1.2 Proposed Solution …………………………………….……………11
2.2 Tables……………………….………………………………..……………...12
2.3 Figures………………………………………………………..……………...13
3 Motivation and Problem Definition……………………………………………...16
3.1 Motivation………………………………………………………………….16
3.2 Problem Definition……...………………………………………………….16
4 Proposed Methodology …………………………………………………………...18
4.1 RFID Integration. ….………………………………………………………18
4.2 Time-Based Session Management …..…………………………………….18
4.3 Real-Time Data Logging and Storage ………..……………………………18
4.4 Role Based Web Interface ………………………………………………….18
4.5 Dashboard and Anaytics ……..……….……………………………………18
5 ECL405/23251
5 Conclusion and Future Work…………………………………………………….19
5.1 Conclusion……………………………………………………………………...19
5.2 Future Work…………………………………………………...………………..19
References………………………………………………………………………………..20
Appendices……………………………………………………………………………….21
6 ECL405/23251
LIST OF ACRONYMS
Acronyms Full Form
MCU Microcontroller Unit
RFID Radio Frequency Identification
UI User Interface
DB Database
IoT Internet of Things
ID Identification
API Application Programming Interface
7 ECL405/23251
LIST OF TABLES
Table 2.2(a): Reviewed Journals and Research Papers …................……………..……...13
8 ECL405/23251
LIST OF FIGURES
2.4(a): Components Used for Making the ClassPass Prototype ...…….............................. 13
2.4(b): Student’s Attendance Portal …………………................................................................13
2.4(c): Teacher’s Dashboard. ……………….......................................................................14
2.4(d): Ongoing Class Dashboard ……………………………………………………………………...…......…14
2.1(e):Teacher’s Database …………………………………………………….............................................15
2.1(f): Teacher’s Report for Specified Class ………………………….............................................15
2.1(g):Student’s Database …………………………………………………….............................................15
9 ECL405/23251
Chapter 1
Introduction
1.1 Overview:
The project presents a smart and automated RFID-based attendance system designed
to replace traditional manual roll-call methods in academic institutions. Each student
is issued an RFID card containing a unique ID. When scanned, the system verifies
the identity using a microcontroller (NodeMCU), logs the time, and updates the
attendance record wirelessly to a centralized database. A time-bound session control
feature ensures that attendance can only be recorded within a valid window after the
faculty activates the session. Additionally, a web-based dashboard allows both
students and teachers to view attendance status, trends, and summaries in real time.
The system enhances accuracy, eliminates proxy attendance, reduces paperwork, and
introduces secure, role-specific access to attendance data.
1.2 Objective:
i. Automate and Secure Attendance Tracking:
Design a contactless RFID-based system integrated with NodeMCU for real-time
data logging, eliminating manual roll calls and preventing proxy attendance through
time-bound session validation.
ii. Deliver Role-Based Access and Real-Time Insights:
Develop a user-friendly web platform with secure, differentiated interfaces for
students and faculty to view, manage, and analyze attendance records with dynamic
visualization and summary reports.
iii. Ensure Efficiency, Scalability, and Institutional Adaptability:
Create a lightweight, cost-effective, and modular system architecture that is easy to
deploy and expand across various academic departments or institutions with minimal
infrastructure changes.
10 ECL405/23251
Chapter 2
Review of Literature
2.1. Existing Solutions and Comparison with my Model:
2.1.1. Traditional Method:
Traditional methods use roll calls or sign-in sheets, often leading to errors, time loss, and
proxy attendance like:
i. Manual Attendance: Faculty take attendance by calling names or using
paper registers, which is time-consuming and prone to errors.
ii. Sign-In Sheets: Teachers manually sign attendance sheets, which can be
forged or signed on behalf of others (proxy attendance).
iii. Biometric Systems: While more secure, biometric systems are often
expensive, time-consuming during peak hours, and raise hygiene concerns.
2.1.2. Proposed Solution:
i. RFID-Based Attendance Logging: Students scan RFID cards at the entry
point. The system verifies identity and logs attendance instantly into the
database.
ii. Time-Bound Session Control: Attendance is only recorded when the
teacher activates a session, ensuring that students cannot scan at unauthorized
times.
iii. Streamlit-Based Web Deployment: A secure web portal deployed on
streamlit allows students to view their attendance history while faculty can
manage and analyze class records.
iv. Role-Based Dashboard with Analytics: Faculty can monitor class-wise
attendance summaries, and students can view their individual records
through a role-protected web dashboard.
11 ECL405/23251
2.2 Tables:
[Link]. Authors Publication Major Conclusion
Year Components
Proposed a
student attendance
system using
RFID tags,
A. A. Aderibigbe, RFID Reader, reducing manual
1. A. O. Adewumi, 2010 Student ID,
Microcontroller error and
O. O. Olaniyi
enhancing
institutional
record-keeping
efficiency.
2. Developed an
M. A.
automated RFID-based
Hossain,
attendance system
M. A. RFID Tag, Smart Card,
2013 integrating smart cards
Rahman, Attendance DB
and a backend database
S. K.
to reduce proxy and
Dey improve accessibility.
3. Built an IoT-connected
RFID attendance
A. V.
RFID, IoT Module, system with real-time
Gudadhe, A. 2019
Web Server monitoring and role-
Gudadhe based access via a web
interface.
4. K. 2020 RFID Reader, Cloud Used RFID with cloud
Rajeswari, DB, Web Dashboard storage to create a role-
T. based smart attendance
Vigneswara system accessible from
n any location.
5. R. 2021 RFID Reader, Implemented a wireless
Dhanalaksh ESP8266, Firebase, RFID-based attendance
mi, M. Web App system using ESP8266
Praveen and Firebase with real-
Kumar, M. time updates and cloud
Hariharan dashboard for student
management.
Table 2.2(a) : Reviewed Journals and Research Papers
12 ECL405/23251
2.3 Figures:
Fig.2.4(a): Components Used for Making the ClassPass Prototype
Fig.2.4(b): Student’s Attendance Portal
13 ECL405/23251
Fig.2.4(c): Teacher’s Dashboard
Fig. 2.4(d): Ongoing Class Dashboard
14 ECL405/23251
Fig. 2.4(e): Teacher’s Database
Fig. 2.4(f): Teacher’s Report for Specified Class
Fig. 2.4(g): Student Dataset
15 ECL405/23251
Chapter 3
Motivation and Problem Definition
3.1 Motivation
With the increasing need for accurate and efficient attendance tracking in academic
institutions, traditional manual methods are proving to be unreliable and time-consuming.
These outdated systems are susceptible to human error, proxy attendance, and lack of real-
time access to data, making them inefficient for modern academic environments. The
demand for a secure, automated, and user-friendly attendance solution is now more
important than ever.
The RFID-Based Smart Attendance System was developed to overcome these challenges
by integrating technologies such as RFID, wireless communication, and database
management to deliver a seamless and transparent attendance process. The core motivations
behind this project are:
i. Improve Attendance Accuracy: Eliminate human errors and proxy attendance
through RFID-based automated logging.
ii. Streamline Attendance Collection: Enable real-time tracking and reduce classroom
time spent on manual roll-calls.
iii. Enhance Accessibility and Transparency: Provide secure, role-based web access for
both students and faculty to view attendance records and trends.
This project aims to improve institutional efficiency, save faculty time, and enhance the
student experience through automation and real-time reporting.
3.2 Problem Definition
Despite significant advancements in digital tools and educational infrastructure, many
academic institutions still rely on outdated, manual methods for recording student
attendance. These methods are not only inefficient but also introduce a range of
operational, administrative, and security-related challenges that reduce the overall
effectiveness of institutional record-keeping. The key problems observed in
conventional attendance systems include:
16 ECL405/23251
i. Inaccuracy and Proxy Attendance:
Traditional attendance-taking methods, such as roll-calling or signing
attendance sheets, are highly prone to manipulation. Students can mark
attendance for absent peers (proxy attendance), compromising the integrity
of academic records. Such inaccuracies not only undermine disciplinary
policies but also create fairness issues in evaluations and performance
tracking
ii. Time-Consuming Manual Process:
Recording attendance manually consumes a substantial portion of class
time. Instructors are required to verify each student’s presence, which may
take several minutes, especially in large classrooms. This not only reduces
valuable teaching time but also adds unnecessary burden on faculty and
administrative staff for compiling and managing attendance logs.
iii. Lack of Real-Time Monitoring and Data Access:
Conventional systems typically involve handwritten records or offline
spreadsheets, which do not support real-time monitoring. As a result,
students and teachers lack timely visibility into attendance status or history.
Administrators face delays in compiling reports, identifying trends, or
intervening in cases of low attendance.
iv. Poor Data Security and No Role-Based Access:
Manual or static digital records do not provide role-based access controls.
Sensitive data can be accessed or modified by unauthorized individuals,
leading to potential misuse or accidental loss of data. Without proper
authentication, it is difficult to ensure data integrity and user accountability.
These pressing limitations call for the development of a secure, automated, and real-
time attendance management solution that leverages RFID technology, embedded
microcontrollers (NodeMCU), wireless data transfer, and a web interface deployed
via Streamlit. By addressing the core issues of accuracy, efficiency, accessibility, and
scalability, the proposed system aims to modernize attendance tracking in a way that
benefits students, faculty, and administrators alike.
17 ECL405/23251
Chapter 4
Proposed Methodology
The proposed RFID-Based Smart Attendance System uses a combination of RFID
technology, NodeMCU microcontroller, a centralized database, and a Streamlit-based web
interface to automate and secure the attendance tracking process. The methodology can be
divided into the following components:
4.1. RFID Integration:
i. Each student is issued an RFID card containing a unique identification code.
ii. An RFID reader scans the card and passes the data to the NodeMCU for further
processing.
4.2. Time-Bound Session Management:
i. The attendance session is activated by the faculty via a secure login.
ii. Students can scan their cards only during the session window to ensure valid
attendance.
4.3. Real-Time Data Logging and Storage:
i. NodeMCU transmits the scanned data wirelessly to a cloud-hosted database.
ii. All entries are time-stamped and mapped to the student’s unique ID.
4.4. Role-Based Web Interface:
i. Faculty and students access a user-friendly dashboard via Streamlit.
ii. Faculty can start/close attendance sessions, view reports, and download
summaries.
iii. Students can track their attendance history, percentage, and alerts.
4.5. Dashboard and Analytics:
i. The system generates visual summaries of attendance trends.
ii. Alerts can be raised for low attendance and predictive tools estimate required
presence to meet minimum thresholds.
This methodology ensures a reliable and transparent attendance system by integrating RFID
technology with wireless data transfer and real-time monitoring. It eliminates manual errors
and proxy attendance through session-bound access while providing a role-based web
interface for both students and faculty. With secure cloud storage and a responsive
Streamlit dashboard, the system enhances usability, promotes accountability, and
significantly reduces the administrative burden associated with traditional attendance
18 ECL405/23251
Chapter 5
Conclusion and Future Work
5.1 Conclusion
The proposed RFID-based attendance tracking system delivers a scalable and efficient
solution to replace outdated manual processes. By integrating RFID technology,
NodeMCU-based automation, a centralized database, and a role-based Streamlit dashboard,
the system improves record accuracy, eliminates proxy attendance, and provides real-time
insights for faculty and students alike.
This approach addresses common issues such as time loss, human error, and lack of
transparency in traditional systems. With features like session-bound access and live
dashboards, it not only ensures data security but also enhances user experience. The project
demonstrates how automation can be effectively implemented in academic settings to
streamline administrative processes and ensure compliance.
5.2 Future Work
While the current system significantly improves upon traditional methods, future
enhancements could include:
i. Mobile Application Integration:
o Develop a mobile app enabling students and faculty to access attendance
records, session updates, and notifications in real time.
ii. Notification and Alert System
o Integrate SMS or email alerts to inform users about attendance sessions,
warnings, and important updates for proactive student engagement.
iii. Biometric + RFID Dual Verification:
o Combine RFID with biometric authentication to enhance identity
verification, reduce misuse, and increase security in attendance marking
iv. Predictive Analysis:
o Use machine learning to analyze attendance patterns, forecast student
behavior, and identify those needing academic support or intervention early.
19 ECL405/23251
References
[1] A. A. Aderibigbe, A. O. Adewumi, and O. O. Olaniyi, “RFID-Based Students
Attendance Management System,” International Journal of Computer Applications, vol. 5,
no. 5, pp. 1–4, Aug. 2010. [Online]. Available:
[Link]
Based_Students_Attendance_Management_System
[2] M. A. Hossain, M. A. Rahman, and S. K. Dey, “Automated Attendance System with
RFID through Smart Card,” International Journal of Engineering Research & Technology
(IJERT), vol. 2, no. 10, pp. 1–4, Oct. 2013. [Online]. Available:
[Link]
[Link]
[3] A. V. Gudadhe and A. Gudadhe, “IoT Based Smart Attendance Monitoring System
Using RFID,” International Research Journal of Engineering and Technology (IRJET), vol.
6, no. 4, pp. 1256–1259, Apr. 2019. [Online]. Available:
[Link]
[4] K. Rajeswari and T. Vigneswaran, “Cloud-Based Smart RFID Attendance System for
Academic Institutions,” Journal of Emerging Technologies and Innovative Research
(JETIR), vol. 7, no. 6, pp. 122–127, June 2020. [Online]. Available:
[Link]
[5] R. Dhanalakshmi, M. Praveen Kumar, and M. Hariharan, “Automated Student
Attendance System Using RFID,” International Journal of Engineering Research &
Technology (IJERT), vol. 10, no. 5, pp. 332–336, May 2021. [Online]. Available:
[Link]
20 ECL405/23251
Appendices
21 ECL405/23251
Appendix A
Code Attachments
The following is the partial / subset of the code. Code of some module(s) have been wilfully
supressed.
A.1 Sample Code 1:
import serial
import streamlit as st
import pandas as pd
from datetime import datetime, time, timedelta
import time as time_module
import threading
import queue
import [Link] as px
import plotly.graph_objects as go
import numpy as np
import os
ser = None
stop_event = None
serial_thread = None
# Configure page
st.set_page_config(
page_title="Smart RFID Attendance System",
page_icon=" ",
layout="wide",
initial_sidebar_state="expanded"
)
def get_student_attendance_for_class(self, class_name):
"""Get all students attendance for a specific class"""
if class_name not in self.class_attendance_records:
return [Link]()
all_dates = []
all_students = set()
# Collect all dates and students
for date, students in self.class_attendance_records[class_name].items():
all_dates.append(date)
all_students.update([Link]())
22 ECL405/23251
# Sort dates
all_dates = sorted(all_dates)
# Create data for dataframe
data = []
for student_id in all_students:
student_data = {
"ID": student_id,
"Name": student_db.get(student_id, {"name": "Unknown"})["name"],
"Department": student_db.get(student_id, {"department":
"Unknown"})["department"]
}
# Add attendance status for each date
present_count = 0
total_count = len(all_dates)
for date in all_dates:
if date in self.class_attendance_records[class_name] and student_id in
self.class_attendance_records[class_name][date]:
student_data[date] =
self.class_attendance_records[class_name][date][student_id]
if self.class_attendance_records[class_name][date][student_id] == "Present":
present_count += 1
else:
student_data[date] = "Absent"
# Calculate attendance percentage
if total_count > 0:
student_data["Percentage"] = round((present_count / total_count) * 100, 1)
else:
student_data["Percentage"] = 0.0
[Link](student_data)
if not data:
return [Link]()
return [Link](data)
def get_student_attendance_record(self, student_id):
"""Get attendance record for a specific student"""
if student_id not in self.student_attendance:
return [Link]()
23 ECL405/23251
data = []
for class_name, dates in self.student_attendance[student_id].items():
for date, status in [Link]():
[Link]({
"Class": class_name,
"Date": date,
"Status": status
})
if not data:
return [Link]()
return [Link](data)
# Initialize attendance system
attendance_system = AttendanceSystem()
# Enhanced student database with formatted UIDs
student_db = {
"TAGC3B53F2C ": {"name": "Subham", "department": "Electrical Engineering"},
"TAGB32C172C": {"name": "Srinivas Prabhu", "department": "Electrical
Engineering"},
"TAG3EEB1003": {"name": "Divyansh", "department": "Computer Science"},
"TAGBA72AF02": {"name": "Aaryan", "department": "Computer Science"},
"TAGC3B53F2C": {"name": "Girdhar Gopal", "department": "Electrical Engineering"},
"TAG23456EF": {"name": "Abhishek", "department": "Computer Science"},
"TAG78910GH": {"name": "Vaibhav", "department": "Electrical Engineering"},
"TAG34567IJ": {"name": "Himanshu Singh", "department": "Mechanical Engineering"},
"TAG89012KL": {"name": "Mann Patel", "department": "Computer Science"},
}
# Teacher database
teacher_db = {
"T001": {"name": "Dr. Nikunj", "department": "Computer Science", "classes": ["CS101 -
Introduction to Programming", "CS201 - Data Structures"]},
"T002": {"name": "Mr. Satish", "department": "Electrical Engineering", "classes":
["EE201 - Circuit Analysis", "EE202 - Digital Electronics"]},
"T003": {"name": "Prof. Ankur", "department": "Mechanical Engineering", "classes":
["ME101 - Engineering Mechanics", "ME102 - Thermodynamics"]},
"T004": {"name": "Dr. Gurpreet", "department": "Computer Science", "classes":
["CS102 - Object Oriented Programming", "CS202 - Algorithms"]},
"T005": {"name": "Dr. Prince", "department": "Electrical Engineering", "classes":
["EE203 - Power Systems"]},
"T006": {"name": "Ms. Pranshu", "department": "Mechanical Engineering", "classes":
["ME103 - Fluid Mechanics"]},
24 ECL405/23251
"T007": {"name": "Dr. Vandana", "department": "Computer Science", "classes":
["CS103 - Web Programming", "CS203 - Database Systems"]},
}
# Department targets (total students per department)
department_targets = {
"Computer Science": 5,
"Electrical Engineering": 5,
"Mechanical Engineering": 5
}
# Sample class schedule (weekday: [(start_time, end_time, class_name)])
class_schedule = {
0: [ # Monday
(time(8, 0), time(9, 30), "CS101 - Introduction to Programming"),
(time(10, 0), time(11, 30), "EE201 - Circuit Analysis"),
(time(13, 0), time(14, 30), "ME101 - Engineering Mechanics"),
(time(15, 0), time(16, 30), "CS201 - Data Structures")
],
1: [ # Tuesday
(time(8, 0), time(9, 30), "CS102 - Object Oriented Programming"),
(time(2, 0), time(3, 00), "EE202 - Digital Electronics"),
(time(3, 10), time(4, 30), "EE202 - Digital Electronics"),
(time(15, 0), time(16, 30), "CS202 - Algorithms")
],
2: [ # Wednesday
(time(8, 0), time(9, 30), "CS101 - Introduction to Programming"),
(time(10, 0), time(11, 30), "EE201 - Circuit Analysis"),
(time(13, 0), time(14, 30), "ME101 - Engineering Mechanics"),
(time(15, 0), time(16, 30), "CS201 - Data Structures")
],
3: [ # Thursday
(time(8, 0), time(9, 30), "CS102 - Object Oriented Programming"),
(time(10, 0), time(11, 30), "EE202 - Digital Electronics"),
(time(13, 0), time(14, 30), "ME102 - Thermodynamics"),
(time(15, 0), time(16, 30), "CS202 - Algorithms")
],
4: [ # Friday
(time(8, 0), time(9, 30), "CS103 - Web Programming"),
(time(10, 0), time(11, 30), "EE203 - Power Systems"),
(time(13, 0), time(14, 30), "ME103 - Fluid Mechanics"),
(time(15, 0), time(16, 30), "CS203 - Database Systems")
],
5: [], # Saturday (no classes)
6: [] # Sunday (no classes)
25 ECL405/23251
}
# Class capacity - maximum number of students per class
class_capacity = {
"CS101 - Introduction to Programming": 30,
"CS102 - Object Oriented Programming": 25,
"CS103 - Web Programming": 28,
"CS201 - Data Structures": 30,
"CS202 - Algorithms": 25,}
……………….
26 ECL405/23251