To make your repository clean and easy to navigate, use the following structure and file names:
Smart-Biometric-Attendance-System/
├── Arduino-Code/ # Arduino C++ Code
├── Python.py # Python Script
├── biometric_presentation.pdf
├── attendance_log.csv
└── README.md # Main project documentation
This is an integrated biometric attendance solution combining hardware reliability with software automation. It utilizes an Arduino microcontroller and an R307 Fingerprint Sensor for authentication, paired with a Python script that sends real-time attendance notifications via WhatsApp and maintains a digital log.
This hybrid system aims to enhance security, reduce human error, and provide secure, automated logging, ideal for institutions monitoring attendance. (As noted in biometric presentation.pdf, Page 3)
- Biometric Authentication: Secure user identification using the R307 Fingerprint Sensor.
- Real-time Notifications: Automated WhatsApp messages sent to an administrator upon successful check-in.
- Admin Interface: A PIN-protected (default:
1234) 4x4 Keypad interface for enrolling and deleting user IDs. - Digital Logging: All check-in events are timestamped and saved in a local
attendance_log.csvfile.
| Component | Description | Connection (Arduino Uno) |
|---|---|---|
| Arduino Uno | Main Microcontroller | - |
| R307 Fingerprint Sensor | Authentication | D2 (RX), D3 (TX) via SoftwareSerial |
| LCD 16x2 I2C | User Display | I2C (A4/SDA, A5/SCL) |
| 4x4 Keypad | Input Interface | D7-D13, A0 |
| Green LED | Access Granted Indicator | D4 |
| Red LED / Buzzer | Access Denied Indicator | D5 / D6 |
Below is a photograph of the final, assembled attendance system, showing the Arduino, Keypad, LCD, and Fingerprint Sensor connected.
- Libraries: Install the following libraries in your Arduino IDE:
Adafruit Fingerprint Sensor LibraryLiquidCrystal I2CKeypad
- Upload Code: Open
Arduino-Code/Biometric_Attendance_Arduino.inoand upload it to your Arduino board.
The Python script runs on the PC connected via USB.
- Install Dependencies:
pip install pyserial pywhatkit pyautogui
- Configure Script: Open
Python-Automation/biometric_automation.pyand modify the following constants:ARDUINO_PORT = 'COMX': Change this to your Arduino's serial port (e.g.,'COM3'or'/dev/ttyACM0').WHATSAPP_NUMBER = "+YYXXXXXXXXXX": Set the administrator's phone number (international format).
- Run the Script:
- Ensure you are logged into WhatsApp Web in your default browser.
- Run the script from your terminal:
python Python-Automation/biometric_automation.py
The core functionality relies on the reliable communication between the two systems (as noted in biometric presentation.pdf, Page 9):
- Success Event: Upon a successful fingerprint match, the Arduino sends a coded string via the USB Serial Port.
- Protocol Format:
(E.g.,
LOGIN:IDLOGIN:7if user ID 7 checks in). - Python Action: The Python script monitors the port, parses the line, and triggers the automated WhatsApp messaging sequence using the extracted
ID.
The system is managed via the 4x4 keypad:
| Action | Key Press | Description |
|---|---|---|
| Enter Admin Mode | Press # |
Enters the PIN authentication screen. |
| Authenticate | Type 1234 then press * |
Enters the Admin Menu (Default PIN is 1234). |
| Enroll Finger | Press 1 |
Prompts for a User ID, then guides the two-scan enrollment process. |
| Delete Finger | Press 2 |
Prompts for a User ID to be deleted from memory. |
| Exit Admin Mode | Press 0 |
Returns the system to MODE_NORMAL (listening for fingerprints). |
Potential areas for future development (as suggested in biometric presentation.pdf, Page 10):
- Integrate a database (e.g., SQLite or MySQL) for more robust data storage.
- Develop automated daily/monthly attendance report generation.
- Add door-lock automation using a relay module.
This project is licensed under the MIT License.
