Build a Raspberry Pi RFID Attendance System?

Attendance tracking is an important task in schools, offices, and organizations. Manual attendance can be time-consuming, tedious, and prone to errors. An automated RFID-based attendance system using a Raspberry Pi provides an efficient and accurate solution.

Build a Raspberry Pi RFID Attendance System?

This article explains how to build a Raspberry Pi attendance system using RFID. We cover hardware components, software configuration, wiring setup, coding for RFID reading and storing attendance data. By the end, you will have a complete DIY attendance marking system.

Overview of the RFID Attendance System

The core idea is to use RFID tags assigned to each user. An RFID reader connected to the Raspberry Pi detects the tag when a user swipes it. The system captures the ID, matches it with the user database, and marks attendance by timestamp. Data is stored for admin to review anytime.

Components Needed

  • Raspberry Pi
  • RFID-RC522 reader module
  • RFID tags
  • Jumper wires
  • Breadboard
  • Resistors
  • Python IDE like Thonny (for coding)

Install RPi.GPIO Package

Enable Raspberry Pi GPIO interface in Thonny IDE to control the RFID reader:

import RPi.GPIO as GPIO

Connect RFID Reader to Raspberry Pi

  1. Use jumper wires to connect RFID pins to Raspberry Pi GPIO

RFID Pin Raspberry Pi Pin
RST 22
SDA 24
SCK 23
3.3V 3.3V

  1. Enable SPI communication protocol


GPIO.spi_enabled = True

Detect RFID Tags

Use a loop to continuously read RFID tags placed on the reader:


while True:

  id, text =

  if id:



Whenever a tag is detected, the unique ID is printed. We will use this ID to identify users and mark their attendance.

Store Attendance Logs

For each valid RFID tag scan, we will append the ID, username, timestamp to an attendance CSV file:


236,John,2023-02-25 08:35

865,Sarah,2023-02-25 08:45

This stores logs that can be reviewed anytime for attendance reports.

Match RFID IDs to Usernames

To print/store usernames instead of random RFID ids, we define a user dictionary mapping:


users = {



When we detect 236 ID, we fetch ‘John’ from this dictionary and write to the log.

This completes the main functionality. When users tap their RFID cards on the reader, attendance will automatically be marked with timestamps.

Coding the Full RFID Attendance System

  • Import libraries
  • Initialize GPIO pins
  • Setup SPI communication
  • Function to read RFID tag
  • Define user dictionary
  • Infinite loop:
    • Read RFID tag
    • Fetch user from dictionary
    • Write user data and timestamp to attendance log file
  • Finally close file and cleanup GPIO

This covers an overview of coding the automation.

Setting Up the Hardware

The hardware assembly involves:

  • Mounting the RFID reader on the breadboard
  • Connecting jumper wires between Raspberry Pi and RFID board based on the pin diagram
  • Connecting resistors to the RFID data pins for protection

Once wired up based on the pin layout earlier, our hardware is ready!

Admin Features

Additional features can be added to admin dashboard:

  1. View logs – Tabulate attendance data from the stored CSV for easy visualization
  2. Customize users – Add RFID IDs along with usernames into the dictionary through admin interface
  3. Filter reports – Support filters like date range, names etc when viewing logs
  4. SMS/Email notifications – If certain users are absent or under reporting hours, automatic alerts can be sent to managers

These can be built easily using Python and MySQL for storing user definitions and attendance logs.

Key Takeaways

  • Automated attendance systems offer efficiency over manual methods
  • RFID tags provide unique IDs for contactless user identification
  • Raspberry Pi processes RFID input and stores attendance logs
  • Simple Python program coordinates RFID reading, user mapping and timestamping attendance
  • Stored attendance reports enable analysis like total hours, absent days etc
  • Additional features like notifications and analytics can provide management insights

Setting this up eliminates attendance marking hassles with an automated, time-saving solution using easily available components.


An RFID attendance system using Raspberry Pi and Python offers an intelligent automation solution to track user hours accurately. This guide provided a step-by-step process to assemble the hardware components and program RFID based attendance marking functionality. Additional administrative features can also be incorporated based on requirements. Overall it presents an efficient method to manage attendance rather than relying on manual systems prone to human errors. The modules are easily extensible to integrate features like access control for doors, user authentication on devices etc.

Frequently Asked Questions

  1. What is RFID technology?
    RFID or Radio Frequency Identification allows contactless identification of objects and users using radio waves. The RFID tags store a unique ID which is read by an RFID reader.

  2. What hardware components are needed for this project?
    The main hardware parts required are: Raspberry Pi, RFID-RC522 Reader, Breadboard, Jumper wires, RFID Tags. Resistors can be optionally added.

  3. How are the hardware components connected?
    The wiring involves connecting the RFID pins to the Raspberry Pi GPIO pins using jumper cables based on the pin diagram covered earlier in the article.

  4. What software is used for coding the system?
    The attendance automation program can be coded using Python language on a Raspberry Pi IDE like Thonny. We need to import RPi.GPIO library and leverage SPI protocol to read the RFID using Python.

  5. What coding is involved in the software program?
    The main functions needed in code are: Initialize RFID reader pins, set SPI communication, continuously read RFID tags placed over reader, match RFID ID with user dictionary to store attendance log with username and timestamp for each valid scan.

  6. Can RFID tags be uniquely assigned for each user?
    Yes, while purchasing blank RFID tags, unique ID keychains can be assigned and mapped to individual users in the database we maintain at the software backend.

  7. Where is the attendance data stored?
    The user details and attendance logs with timestamp are stored in CSV files on the Raspberry Pi. Additional databases can also be configured to store this data.

  8. How can recorded attendance logs be reviewed?
    The stored CSV files can be processed to display attendance reports on the admin dashboard. It can show user-wise hours, leave days, total duration etc. based on timestamps.

  9. Does the system work for multiple users concurrently?
    Yes, the RFID reader can concurrently detect multiple tags placed over it. So multiple users can tap in and out within seconds of each other and all scans will be captured.

  10. Can notifications and SMS alerts be configured in system?
    Yes, additional automation can be coded to send email/SMS notifications to managers if certain rules fail, for instance if employees are absent beyond allowed leaves or have low hours for the month.

  11. What are the benefits of automating attendance over manual method?
    Automating attendance using Raspberry Pi RFID solution offers benefits like easy self-service for users, eliminates manual records and human errors, easier attendance analysis for admins, captures exact clock-in and out times without approximates.

  12. What additional features can be incorporated?
    Some added features that provide value are automated notifications based on attendance rules, building access control integration, analytics reports on user activity hours/trends, multiple location support etc.

  13. What is the detection range of the RFID reader?
    The RFID reader has a usable detection range of around 2-5 cm typically. This can vary slightly by the antenna size and transmit power. tags need to be tapped very close for logging attendance.

  14. Can RFID tags support multiple clock-ins and outs?
    Yes, the system allows staff to tap in their RFID multiple times when arriving, going out for lunch, breaks or exiting for the day. All taps create separate time logs.

  15. Does the device need Internet connectivity?
    The attendance tracking works offline without any Internet once configured. For admin dashboard or access from other devices, WiFi/Ethernet connectivity can be set up on the Pi.

  16. Is electrical power connection required
    Yes, the Raspberry Pi board and RFID reader require a standard electrical outlet for power supply. Uninterrupted UPS is recommended for consistent operations.

  17. How are new user details updated in the system?
    New user details like name, tag ID mapping are directly updated in the user dictionary/database file from admin dashboard. Code modifications are not required.

  18. Can the system differentiate employees from visitors?
    Yes, the database can capture employee numbers along with mapping their RFID tags. Other temporary cards can be assigned for visitors, contractors etc which system can differentiate.

  19. What user interface is provided on admin dashboard?
    Web-based dashboard can be coded in Python/PHP/other languages for reviewing reports, modifying user definitions, changing application settings and overall maintenance.

  20. Does it require WiFi connectivity?
    WiFi is not mandatory. The RFID functionality works offline once configured from Pi itself. For accessing it remotely from other PCs/mobiles, wireless connectivity can be added.

Leave a Comment