RFID Based Attendance System Using
[Link] Platform
Report for
EC5512 Mini Project with Seminar
Submitted by
[Link]
2019105604
B.E (Electronics and Communication)
DEPARTMENT OF ELECTRONICS AND COMMUNICATION
ENGINEERING
ANNA UNIVERSITY, CHENNAI
JANUARY 2022
1
ACKNOWLEDGEMENT
I Vaishnavi, III Year, V Semester, Department of ECE would like
to express my sincere thanks to Mrs. R. Ann Caroline Jenifer for
valuable guidance and support in completing my project.
I would also like to express my gratitude towards our Head of
Department Dr.M. Meenakshi for giving me this great opportunity
to do a project on RFID Attendance System Using [Link]
platform. Without their support and suggestions, this project
would not have been completed.
.
S VAISHNAVI
Signature
2
ABSTRACT
In this project, we will be making IoT Based RFID Attendance
System using Arduino Node MCU ESP8266 Arduino &
[Link] Platform using the MQTT broker. So, we will use RFID
MFRC522, Arduino Nano, and Node MCU ESP-12E Board.
Arduino and RFID scanner scans the RFID cards and then logs the
data to the Adafruit IO cloud platform with the help of the
ESP8266 Wi-Fi module.
This information can be displayed in the Adafruit IO
dashboard and can be accessed by the required authorities to view
and analyse the attendance over the internet from anywhere at any
time.
3
TABLE OF CONTENTS
1. Objective -5
2. Attendance System Block Diagram –9
3. Components Required – 11
4. Arduino Nano – 12
5. Arduino Software IDE – 14
6. Sketch – 16
7. Node MCU – 17
8. RFID Module – 19
9. MQTT Broker – 21
10. Why MQTT – 23
11. [Link] Platform – 24
12. Circuit Diagram and Connection – 30
13. Hardware Setup – 31
14. Setting up [Link] Platform – 32
15. Source Code/ Program – 34
16. Code Explanation – 35
17. Result – 37
18. Conclusion - 38
4
OBJECTIVE
Attendance in University is generally paper based which may
sometimes cause errors. Taking attendance manually consumes
more time and is ineffective. The conventional method of taking
attendance by calling names or signing on paper is very time
consuming and insecure, hence inefficient.
Radio Frequency Identification (RFID) based attendance system is
one of the solutions to address this problem. RFID attendance
technology is widely used in multiple workspaces for employee
attendances.
When you swipe an RFID tag next to the RFID reader, it saves the
user UID and time in the [Link] platform, for later reference.
Each student’s attendance is marked when they touch their card to
RFID reader. It also shows if the student is late or in time
accordingly to a present hour and minute.
For this, we have interfaced the MFRC522 RFID SPI module with
Arduino. We have also connected it to the cloud platform using
MQTT broker where the data is saved in text format.
Time and attendance systems (TNA) are used to track and monitor
when employees start and stop work. A time and attendance
system enables an employer to monitor their employees’ working
hours and late arrivals, early departures, time taken on breaks and
absenteeism.
5
It also helps to control labour costs by reducing over-payments,
which are often caused by paying employees for time that are not
working, and eliminates transcription error, interpretation error
and intentional error. TNA systems can also be used to ensure
compliance with labour regulations regarding proof of attendance.
Radio-frequency identification (RFID) uses electromagnetic fields
to automatically identify and track tags attached to objects. An
RFID system consists of a tiny radio transponder, a radio receiver
and transmitter. When triggered by an electromagnetic
interrogation pulse from a nearby RFID reader device, the tag
transmits digital data, usually an identifying inventory number,
back to the reader. This number can be used to track inventory
goods.
Passive tags are powered by energy from the RFID reader's
interrogating radio waves. Active tags are powered by a battery and
thus can be read at a greater range from the RFID reader, up to
hundreds of meters.
It is a wireless mean of communication that use electromagnetic
and electrostatic coupling in radio frequency portion of the
spectrum to communicate between reader and tag through a
variety of modulation and encoding scheme. Modulation refers to
the variation in the amplitude, frequency or phase of a high
frequency carrier signal to convey information. Encoding is a
process of converting information from one format to another.
6
Unlike a barcode, the tag does not need to be within the line of
sight of the reader, so it may be embedded in the tracked object.
RFID is one method of automatic identification and data capture
(AIDC).
RFID tags are made out of three pieces: a microchip (an integrated
circuit which stores and processes information and modulates and
demodulates radio-frequency (RF) signals), an antenna for
receiving and transmitting the signal and a substrate.
The tag information is stored in a non-volatile memory. The RFID
tag includes either fixed or programmable logic for processing the
transmission and sensor data, respectively. RFID tags can be either
passive, active or battery-assisted passive.
RFID attendance system provides wireless identification of
stakeholders when they fall in the radiofrequency range of the
RFID attendance reader.
7
The administrator can anytime extract the data to get a summary of
student attendance history & keep a tab on them. RFID combines
radio frequency and microchip technologies to create a smart
system that can be used to identify, monitor, secure and do object
inventory.
The operating frequency ranges of the RFID devices include low,
mid and high ranges. The low frequency range is from 30 KHz to
500 KHz, middle frequency range is from 500 KHz to 900 KHz and
high frequency range is from 2.4 MHz to 2.5 MHz.
The main objective of the system is to uniquely identify and to
make attendance for a person. This requires a unique product,
which has the capability of distinguishing different person.
RFID technology is used in a number of industries to carry out
various tasks such as:
• Asset tracking
• Inventory management
• Controlling access to confined areas
• Personnel tracking
• Supply chain management
• Retail Apparel
8
ATTENDANCE SYSTEM BLOCK
DIAGRAM
RFID tags contain an integrated circuit and an antenna, which are
used to transmit data to the RFID reader. The reader then converts
the radio waves to a more usable form of data.
9
Information collected from a, the tags is then transferred through a
communications interface to a host computer system, where data
can be stored in a database.
RFID tags transmit data about an item through radio waves to the
antenna/reader combination. RFID tags typically receive energy
from the radio waves generated by the reader. When the tag
receives the transmission from the reader/antenna, the energy runs
through the internal antenna to the tag’s chip. The energy activates
the chip, which modulates the energy with the desired
information, and then transmits a signal back toward the
antenna/reader.
Hundreds of different RFID tags are available in many shapes and
sizes with features and options specific to certain environments,
surface materials, and applications.
10
COMPONENTS REQUIRED
[Link] COMPONENTS DESCRIPTION QUANTITY
1 Arduino Board Arduino Nano 1
2 RFID Module MFRC522 RFID SPI 1
Module
3 RFID Cards 13.5 MHz cards 6-8
4 Node MCU ESP8266-12E Board 1
5 Connecting Jumper Wires 20-25
Wires
6 Breadboard - 1
11
ARDUINO NANO
Arduino Nano is one type of microcontroller board, and it is
designed by [Link]. It can be built with a microcontroller like
Atmega328. This microcontroller is also used in Arduino UNO.
It is a small size board and also flexible with a wide variety of
applications. Other Arduino boards mainly include Arduino Mega,
Arduino Pro Mini, Arduino UNO, Arduino YUN, Arduino Lilypad,
Arduino Leonardo, and Arduino Due.
And other development boards are AVR Development Board, PIC
Development Board, Raspberry Pi, Intel Edison, MSP430
Launchpad, and ESP32 board.
This board has many functions and features like an Arduino
Duemilanove board. However, this Nano board is different in
packaging.
12
It doesn’t have any DC jack so that the power supply can be given
using a small USB port otherwise straight connected to the pins
like VCC & GND. This board can be supplied with 6 to 20volts
using a mini-USB port on the board.
The communication of an Arduino Nano board can be done using
different sources like using an additional Arduino board, a
computer, otherwise using microcontrollers.
The microcontroller using in Nano board (ATmega328) offers serial
communication (UART TTL).
This can be accessible at digital pins like TX, and RX.
The Arduino software comprises of a serial monitor to allow easy
textual information to transmit and receive from the board.
The TX & RX LEDs on the Nano board will blink whenever
information is being sent out through the FTDI & USB link in the
direction of the computer.
13
ARDUINO SOFTWARE IDE
A program for Arduino hardware may be written in any
programming language with compilers that produce binary
machine code for the target processor. Atmel provides a
development environment for their 8- bit AVR and 32-bit ARM
Cortex-M based microcontrollers: AVR Studio (older) and Atmel
Studio (newer).
The Arduino integrated development environment (IDE) is a cross-
platform application (for Windows, macOS, and Linux) that is
written in the Java programming language. It originated from the
IDE for the languages Processing and Wiring. It includes a code
editor with features such as text cutting and pasting, searching and
replacing text, automatic indenting, brace matching, and syntax
highlighting, and provides simple one-click mechanisms to compile
and upload programs to an Arduino board.
It also contains a message area, a text console, a toolbar with
buttons for common functions and a hierarchy of operation menus.
The source code for the IDE is released under the GNU General
Public License, version 2.
The Arduino IDE supports the languages C and C++ using special
rules of code structuring.
The Arduino IDE supplies a software library from the Wiring
project, which provides many common input and output
procedures.
User-written code only requires two basic functions, for starting
the sketch and the main program loop, that are compiled and
14
linked with a program stub main() into an executable cyclic
executive program with the GNU toolchain, also included with the
IDE distribution.
The Arduino IDE employs the program avrdude to convert the
executable code into a text file in hexadecimal encoding that is
loaded into the Arduino board by a loader program in the board's
firmware.
On October 18, 2019, Arduino Pro IDE (alpha preview) was
released. Later, on March 1, 2021, the beta preview was released,
renamed IDE 2.0. The system still uses Arduino CLI (Command
Line Interface), but improvements include a more professional
development environment, autocompletion support, and Git
integration.
The application frontend is based on the Eclipse Theia Open-
Source IDE. The main features available in the new release are:
• Modern, fully featured development environment
• Dual Mode, Classic Mode (identical to the Classic Arduino IDE)
and Pro Mode (File System view)
• New Board Manager
• New Library Manager
• Board List
• Basic Auto-Completion (Arm targets only)
• Git Integration
• Serial Monitor
• Dark Mode
15
SKETCH
A sketch is a program written with the Arduino IDE. Sketches are
saved on the development computer as text files with the file
extension. ino.
Arduino Software (IDE) pre-1.0 saved sketches with the extension.
pde.
A minimal Arduino C/C++ program consists of only two functions:
• setup(): This function is called once when a sketch starts after
power-up or reset. It is used to initialize variables, input and output
pin modes, and other libraries needed in the sketch. It is analogous
to the function main().
• loop(): After setup() function exits (ends), the loop() function is
executed repeatedly in the main program.
16
NODE MCU
NodeMCU is an open-source LUA based firmware developed for
the ESP8266 Wi-Fi chip. By exploring functionality with the
ESP8266 chip, NodeMCU firmware comes with the ESP8266
Development board/kit i.e., NodeMCU Development board.
Since NodeMCU is an open-source platform, its hardware design is
open for edit/modify/build.
NodeMCU Dev Kit/board consist of ESP8266 Wi-Fi enabled chip.
The ESP8266 is a low-cost Wi-Fi chip developed by Espressif
Systems with TCP/IP protocol. For more information about
ESP8266, you can refer to the ESP8266 Wi-Fi Module.
17
There is Version2 (V2) available for NodeMCU Dev Kit
i.e., NodeMCU Development Board v1.0 (Version2), which usually
comes in black coloured PCB.
Since NodeMCU is an open-source platform, its hardware design is
open for edit/modify/build.
NodeMCU Dev Kit/board consist of ESP8266 Wi-Fi enabled chip.
The ESP8266 is a low-cost Wi-Fi chip developed by Espressif
Systems with TCP/IP protocol. For more information about
ESP8266, you can refer to the ESP8266 Wi-Fi Module.
There is Version2 (V2) available for NodeMCU Dev Kit
i.e., NodeMCU Development Board v1.0 (Version2), which usually
comes in black coloured PCB.
Another way of developing NodeMCU with a well-known IDE i.e.,
Arduino IDE. We can also develop applications on NodeMCU
using the Arduino development environment. This makes it easy
for Arduino developers than learning a new language and IDE for
NodeMCU.
18
RFID MODULE
RFID or Radio Frequency Identification system consists of two
main components, a transponder/tag attached to an object to be
identified, and a Transceiver also known as interrogator/Reader.
A Reader consists of a Radio Frequency module and an antenna
which generates high frequency electromagnetic field. On the
other hand, the tag is usually a passive device, meaning it doesn’t
contain a battery. Instead, it contains a microchip that stores and
processes information, and an antenna to receive and transmit a
signal.
To read the information encoded on a tag, it is placed in close
proximity to the Reader (does not need to be within direct line-of-
sight of the reader). A Reader generates an electromagnetic field
which causes electrons to move through the tag’s antenna and
subsequently power the chip.
19
The powered chip inside the tag then responds by sending its
stored information back to the reader in the form of another radio
signal. This is called backscatter. The backscatter, or change in the
electromagnetic/RF wave, is detected and interpreted by the reader
which then sends the data out to a computer or microcontroller.
20
MQTT BROKER
MQTT is an OASIS standard messaging protocol for the Internet of
Things (IoT). It is designed as an extremely lightweight
publish/subscribe messaging transport that is ideal for connecting
remote devices with a small code footprint and minimal network
bandwidth. MQTT today is used in a wide variety of industries,
such as automotive, manufacturing, telecommunications, oil and
gas, etc.
The MQTT protocol was invented in 1999 by Andy Stanford-Clark
(IBM) and Arlen Nipper (Arcom, now Cirrus Link). They needed a
protocol for minimal battery loss and minimal bandwidth
to connect with oil pipelines via satellite.
The primary focus of the protocol has changed from proprietary
embedded systems to open Internet of Things (IoT) use cases. This
shift in focus has created a lot of confusion about what the
acronym MQTT stands for. The short answer is that MQTT is no
longer considered an acronym. MQTT is simply the name of the
protocol.
The abstract of the MQTT specification does a good job describing
what MQTT is all about. It is a very light weight and binary
protocol, and due to its minimal packet overhead, MQTT excels
when transferring data over the wire in comparison to protocols
like HTTP.
21
Another important aspect of the protocol is that MQTT is
extremely easy to implement on the client side. Ease of use was a
key concern in the development of MQTT and makes it a perfect
fit for constrained devices with limited resources today.
Approximately 3 years after the initial publication, it was
announced that MQTT would be standardized under the wings of
OASIS, an open organization with the purpose of advancing
standards. AMQP, SAML, and DocBook are just a few of the
previously released OASIS standards.
The standardization process took around 1 year. On October 29,
2014 MQTT became an officially approved OASIS Standard.
The minor version change from 3.1 to 3.1.1 shows that few changes
were made to the previous version.
22
WHY MQTT ?
• Lightweight and Efficient:
MQTT clients are very small, require minimal resources so can be used
on small microcontrollers. MQTT message headers are small to
optimize network bandwidth.
• Bi-directional Communications:
MQTT allows for messaging between device to cloud and cloud to
device. This makes for easy broadcasting messages to groups of things.
• Scale to Millions of Things:
MQTT can scale to connect with millions of IoT devices.
• Reliable Message Delivery:
Reliability of message delivery is important for many IoT use cases.
This is why MQTT has 3 defined quality of service levels: 0 - at most
once, 1- at least once, 2 - exactly once.
• Support for Unreliable Networks:
Many IoT devices connect over unreliable cellular networks. MQTT’s
support for persistent sessions reduces the time to reconnect the client
with the broker.
• Security Enabled:
MQTT makes it easy to encrypt messages using TLS and authenticate
clients using modern authentication protocols, such as OAuth.
23
[Link] PLATFORM
Adafruit IO is a cloud service available on the network and with
which it is possible to connect our devices, such as an Arduino
board. Its main function is to store the data acquired by one or
more boards connected to sensors, to show them both in real time
and subsequently, but it can also perform other interesting
functions.
24
In fact, this platform can be used to:
• show the data produced in real time online, using graphs
and squares in a control panel (dashboard).
• remote control of devices (motors, sensors, etc.) via web
or mobile phone using buttons inserted in the control
panel (dashboard)
• connect your project to network services such as RSS
feeds, IFTTT, mail, etc …
• Insert triggers that are activated when data values exceed
certain thresholds, or at a scheduled time.
To access Adafruit IO, you must have an Adafruit account, or
create one specifically on [Link].
Feeds are the basis of how Adafruit IO works. These in fact manage
the different data streams that the system is loading together with
the corresponding metadata containing other useful information,
such as the sensor that is producing them, the date and time, or the
GPS coordinates of the data source.
25
With the rise in digital transformations, IoT deployments in the
cloud have become more popular.
By deploying IoT solutions on the cloud, we have the following
benefits:
• Cost - Reduces the cost of computing and storage by using
various cloud services.
• Scalability - The “pay-as-you-go” pricing model allows a
flexible pay model, also allowing scalability of the application.
• Data control - Data backup and recovery with high security.
• Server uptime - Allows very minimum or no downtime, with
high server availability.
Adafruit IO is one such cloud provider focusing more on IoT
deployments on the cloud. Adafruit IO supports different hardware
like Raspberry PI, ESP2866, and Arduino.
26
In the Internet of Things, the “Things” are uniquely identified
based on the property of communication and identifying objects.
“Things” can be classified based on people, machines, and
information. For example, computers, sensors, TVs, books, etc. can
be called “Things”.
When these “Things” possess certain characteristics of connecting
them via “Internet”, we called them “Internet of Things”.
Characteristics of IoT are:
• Connectivity - Things must be connected (either wired or
wireless).
• Intelligence and Identity - Data extracted is important, and
identity helps in tracking them.
• Scalability - Capability to handle massive data
simultaneously.
• Dynamic and Self-adapting - Must be able to work on
different conditions.
• Architecture - Must be hybrid and cannot be homogenous.
• Safety - Privacy of data is the most important.
27
Cloud computing is the means of storing and accessing data over
the Internet instead of using them locally. It allows the sharing of
resources across devices through centralized storage.
Features of cloud computing are as shown below:
Cloud computing can be classified into 3 types of services:
1. Infrastructure as a Service (IaaS) - Provides processing,
storage, and physical resources for computing.
2. Platform as a Service (PaaS) - Created apps that can be
deployed in the cloud.
3. Software as a Service (SaaS) - 3rd party business operations
that can be deployed in the cloud.
28
IoT developers prefer Adafruit IO over
other IoT cloud providers for the
following reasons:
• Powerful API - Provides us libraries for various programming
languages, which also provides the built-in user interface
support.
• Dashboard - Understanding data via charts and graphs
enables us to make better decisions.
• Privacy - Data is secured in the cloud platform with better
encryption algorithms.
• Documentation & Community - Many blogs with amazing
community support allows continuous developments of the
products.
29
CIRCUIT DIAGRAM AND
CONNECTION
We just need Arduino Nano, NodeMCU Board, and MFRC522
RFID. So, the connection diagram is exactly the same as shown in
the figure.
Connect the SDA pin of RFID to Arduino Digital pin 10.
Similarly, connect SCK to D13, MOSI to D11, MISO to D12, GND
to GND, RST pin to D9 and supply 3.3V power using 3.3V Pins.
IRQ is not connected.
Similarly connect NodeMCU TX, RX pins to Arduino D2, D3 Pins
respectively.
Also, supply Power to Node MCU by connecting its VCC and GND
pins.
30
HARDWARE SETUP
So here is the hardware complete setup.
You can see Arduino Nano, Nodemcu board, and MFRC522
RFID scanner here.
All are connected as per the circuit diagram simply on a
breadboard. MFRC522 is an SPI Module connected to Arduino.
Nodemcu is connected via UART pins.
There are few RFID cards, actually a total of 6 Cards for 6 people.
All of these cards have a frequency of 13.56 MHz.
31
SETTING UP [Link]
PLATFORM
[Link] is an open data platform that allows you to aggregate,
visualize, and analyse live data on the cloud. Using [Link], you
can upload, display, and monitor your data over the internet, and
make your project IoT enabled.
For Adafruit setup, the first thing you will need to do is to sign up
for Adafruit. To sign up go to Adafruit IO’s
site [Link] and click on ‘Get started for Free’ on
the top right of the screen. After this, a window will pop up where
you need to fill your details.
So once the account is created simply go back
to [Link] On the left side click on view AIO Key.
From here you need to copy the username and also the AIO Key.
So, copy these keys simply on notepad as you will need this later to
use in the program.
32
Now on the left side, click on the dashboard and create a new
dashboard using any name like for example RFID_Attendance. You
may or may not give the description. So, the dashboard is created.
Now similarly go to feeds and create a new feed. Give the name to
it. Also, copy this name (to notepad) that you have given to it, as
we will also require this later.
33
SOURCE CODE/PROGRAM
Source code is the fundamental component of a
computer program that is created by a programmer. It can be read
and easily understood by a human being. When a programmer
types a sequence of C programming language statements into
Windows Notepad, for example, and saves the sequence as a text
file, the text file is said to contain the source code.
Source code and object code are sometimes referred to as the
"before" and "after" versions of a compiled computer
program. For script (noncompiled or interpreted) program
languages, such as JavaScript, the terms source code and object
code do not apply, since there is only one form of the code.
Programmers can use a text editor, a visual programming tool or an
integrated development environment (IDE) such as software
development kit (SDK) to create source code. In large program
development environments, there are often management systems
that help programmers separate and keep track of different states
and levels of source code files.
The project IoT Based RFID Attendance System Using Arduino
ESP8266 & [Link] is made using NodeMCU & Arduino Board.
So, we have two codes one for arduino UNO/Nano and other for
NodeMCU. You need to upload these both codes to Arduino and
NodeMCU.
34
CODE EXPLINATION
[Link] code:
MFRC522 library is used for the RFID scanner. SDA and RST pins
are connected with 10 and 9 pins of Arduino as shown in the
circuit diagram.
Inside the setup function, we initialize the Serial communication at
9600 and software serial at 115200 baud rates. We have also
opened communication with MFRC522.
Inside the void loop function, we will check if a new card is
present, and if a new card is present, then it will check the UID of
the card. For a valid card, it will print the UID of the card with a
username. Else it will print ‘unauthorized card.’
The hexadecimal number is the RFID tag number. There is a
simple program in examples to identify these RFID numbers. You
can find those RFID number and replace it in the program.
Similarly, [Link] function has number 1, 2, 3, 4, 5, 6.
These numbers are the card serial number which will be uploaded
in the Adafruit dashboard. You can assign these numbers with few
names as you can see above. These names will be displayed on the
serial monitor while scanning.
35
II. Node MCU ESP8266-12E Code:
Begin the program by adding the required libraries. After this enter
the Wi-Fi credential and password with the Adafruit IO username
and AIO key that was obtained earlier.
Using the setup function, we will begin the serial communication
at 11500 baud rates. Then we will connect our Wi-Fi client to the
Adafruit IO server.
Inside the void loop function, ESP will read the data from the serial
and then publish it to the Adafruit IO server.
36
RESULTS
Once the code is uploaded to both the boards you can simply open
the serial monitor on both codes and start scanning the RFID
Cards.
When few or many cards are scanned, the data get uploaded to
[Link] feeds.
You can simply log in and check the details.
So, this is all about IoT Based RFID Attendance System Using
Arduino ESP8266 & [Link].
37
CONCLUTION
In conclusion, the objective to build an RFID based attendance
system was successfully achieved. In terms of performance and
efficiency, this project has provided a convenient method of
attendance marking compared to the traditional method of
attendance system. By using databases, the data is more organized.
This system is also a user-friendly system as data manipulation and
retrieval can be done via the interface, making it a universal
attendance system.
Thus, it can be implemented in either an academic institution or in
organizations. However, some further improvements can be made
on this RFID in order to increase its reliability and effectiveness.
An IP camera can be integrated into this system to monitor the
actions like buddy-punching wherein a person cheats by scanning
for another person.
Finally, this attendance system can be improved by adding a
feature where the attendance system indicates when a student is
late for work or classes as the case maybe.
************
38
39