G5: RFID Based Class Attendance Logging - shalan/CSCE4301-WiKi GitHub Wiki

RFID-Based Class Attendance Logging

Group Members

  1. Adham Meligy - 900181762
  2. Ahmad Shaaban - 900171600
  3. Amr Abdalla - 900172775
  4. Mohamed Mansour - 900172822

Repos

Demo

Demo Video

Motivation

Traditional methods of attendance logging (roll call, pen and paper, etc) are cumbersome. They take away time from lecturing, can be easily tampered with. In addition, traditional logging methods require additional bookkeeping to be compiled into meaningful data which reflects trends such as student attendance/absence ratios. In this project, we suggest and prototype a solution which utilizes cheaply and readily available NFC Student ID cards to automate the process of attendance logging.

Solution

Using cheap and widely available components, we create a logging system which:

  • Automatically logs students
  • Is capable of sending notifications students regarding where they stand in terms of absences
  • Saves time on the cumbersome pen-and-paper logging process

Software

  • Arduino IDE
  • SvelteKit (using TypeScript)
  • PocketBase (For storing data)

System Block Diagram

image

Circuit Diagram

image

Pinouts

Component PIN
RFID SDA 5
RFID RST 21
RFID MOSI 23
RFID MISO 19
RFID SCK 18
RGB LED R 27
RGB LED G 26
RGB LED B 25
Buzzer 13
Scan LED 12

Algorithm:

ESP32

  1. Connect to WiFi with saved credentials
    • If not connected; open access point to enter new credentials, then repeat
  2. Connect to MQTT Broker
  3. Loop:
    1. Wait for RFID Scan
    2. Flash Led & Buzzer
    3. Publish Scanned UID in JSON format to MQTT Broker
      • Topic: '{ScannerName}/' (Scanner name used for uniqueness between attendance loggers should we deploy multiple. Current scanner is hardcoded to 'orange')
      • Message JSON: { 'msg' : 'UID' }

Web Server

  1. User selects a class roster and specifies a scanner name (our current scanner's name is orange).
  2. Web Client subscribes to the MQTT Broker with scanner name as the topic.
  3. On message receive:
    1. Check class roster if there is a student with matching ID
      1. Yes ? Store them as attended
      2. No ? Do nothing

Web Interface

Course Page

Logging Page

Users can download attendance data for a course on a spreadsheet: image

Progress I:

  • Interfaced RC522 with ESP32 Micro Controller
  • ESP32 broadcast RFIDs over websocket
  • Implemented minimal client to display attendance
  • Add buzzer and LEDs to indicate circuit status
  • Persistent storage for attendance data
  • Battery power source
  • Change ESP32's wifi credentials without re-uploading the program

Progress II:

  • Interfaced RC522 with ESP32 Micro Controller
  • ESP32 broadcast RFIDs over websocket
  • Implemented minimal client to display attendance
  • Add buzzer and LEDs to indicate circuit status
  • Persistent storage for attendance data
  • Battery power source
  • Change ESP32's wifi credentials without re-uploading the program
  • 3D Printed Casing

Future Work:

  • Implement the email notification System
  • Improve the 3D Printed Case
  • Visualize the data collected over time to illustrate trends in a dashboard
  • Deploying webserver and database to a hosting service

Limitations:

  • Time Constraints
  • 3D Printing time constraints
  • Key Protection of NFC Memory

References and Libraries: