Biometric Attendance System


Considering that the attendance has a major role in the industry - where it impacts directly the employer-employee relationship - and in the education system - where it impacts directly or indirectly the grade of a student - an automatized system is preferable to a classical one in which every employee/student writes its name on a piece of paper. Therefore, the system proposed in this project and inspired from another similar projects available online comes to address this matter. In order to create this automatized system, another question raised: Which method has the smallest possibility of fraud? The answer was that a system based on biometric authentication is the most fraudless and because of that this project it is based upon the user fingerprint to introduce the attendance in a spreadsheet.

Project Description

A. Hardware Description

Hardware Components:
  • NodeMCU32-S ESP32
    • A low-power SoC that integrates WiFi and Bluetooth functionalities.
  • R307 Fingerprint Module
    • An optical module based on asynchronous serial (UART) communication that is able to recognize a fingerprint with a confidence level if that fingerprint is registered in his storage. Being biometric, on a scale from 1 to 5, the security of this module is 5.
  • SSD1306 OLED Display
    • A 128×64 display that uses I2C to communicate with the ESP32 dev board.
  • Active Buzzer Module
    • An audio signaling device.
  • Breadboard
    • The cornerstone of the electronic prototype.
Block diagram:

Circuit diagram:

Real-life design:

B. Software Description

The software that makes this hardware to behave like it is desired has three main sections:

  1. The global variables declaration part, where all of the hardware components of the design are declared alongside the variables needed for the configuration as SSID, password of the SSID - for WiFi -, the ntpServer, gmtOffset_sec and daylightOffset_sec - for the incorporated RTC in the ESP32 -, the pin of the buzzer, the Google Script ID and the array that describes the first image that appears on the display when the circuit starts.
  2. The setup part, where the board is connected to the WiFi referenced by the SSID with the password defined in the first section, the display and fingerprint are started and the RTC is configured.
  3. The loop part, the section that represents the main logic of the code. Here, the fingerprint read by the R307 is compared to the ones stored in the module storage and if a match is found, the timestamp is computed, the direction - In or Out - is introduced by the user and a GET request to the url of the Google Script with name (in fact, it is the ID returned by the fingerprint - to respect the privacy of the user), timestamp and In/Out as parameters and exec as command is launched. This GET request will trigger the function from the Google Script to introduce a new entry in the Google Spreadsheet where the attendances are stored. If the status code returned after HTTP request is OK, the display shows that the attendance has been added. If no match is found, the display will notify the user that the finger is not valid and the buzzer will buzz for 4 seconds.

To define the fingerprint module a Hardware Serial from the library with the same name was used, WiFi.h was used to take care of the connection of the board to WiFi, while the Adafruit_Fingerprint.h and Adafruit_SSD1306.h were used for the fingerprint module and display. This libraries took care of the UART and I2C communications between the sensors and the dev board. To be able to launch the HTTP Request that triggers the Google Script the HTTPClient.h library was used.



Presentation Slides


The project intends to solve the problem that appears when the attendance can be altered and fraudulent - some people writing names in attendance for other people and so on. The use of the fingerprint modules, that represents a type of biometric authentication, try to address this problem and increase the level of security to 5, on a scale of 1 to 5. Also the project respects the privacy of the attendants because in the Google Spreadsheet stores only an ID that is known only by the attendant and the admin. From my point of view it was an interesting and challenging project that with some more improvements can become an interesting method to get the attendance for courses/labs or work. It was a way to learn how to use MCUs like ESP32 in do-it-yourself IoT projects and to see what are the advantages and the disadvantages (the one that challenged me the most was the fact that ADC pins cannot be used at the same time with WiFi on my ESP32 dev board).


iothings/proiecte/2022sric/biometricattendancesystem.txt · Last modified: 2023/06/01 12:35 by andrei.ouatu
CC Attribution-Share Alike 3.0 Unported Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0