G5: RFID Based Class Attendance Logging - shalan/CSCE4301-WiKi GitHub Wiki
RFID-Based Class Attendance Logging
Group Members
- Adham Meligy - 900181762
- Ahmad Shaaban - 900171600
- Amr Abdalla - 900172775
- Mohamed Mansour - 900172822
Repos
Demo
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
Circuit Diagram
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
- Connect to WiFi with saved credentials
- If not connected; open access point to enter new credentials, then repeat
- Connect to MQTT Broker
- Loop:
- Wait for RFID Scan
- Flash Led & Buzzer
- 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
- User selects a class roster and specifies a scanner name (our current scanner's name is orange).
- Web Client subscribes to the MQTT Broker with scanner name as the topic.
- On message receive:
- Check class roster if there is a student with matching ID
- Yes ? Store them as attended
- No ? Do nothing
- Check class roster if there is a student with matching ID
Web Interface
Course Page
Logging Page
Users can download attendance data for a course on a spreadsheet:
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