ESP32 Based Fingerprint/PIN Authenticated Timepunch Machine

by Paul Jackson in Circuits > Arduino

70 Views, 1 Favorites, 0 Comments

ESP32 Based Fingerprint/PIN Authenticated Timepunch Machine

CoverImage.jpg

This project is about building a LAN operated Fingerprint/PIN operated Timepunch machine for students or employees. This project is stage 1 of development of my own product but I would love to share this project as opensource for everyone over here.

I built this originally for a client (student), but inspired to create this entirely userfriendly thing that I can implement for my local businesses.

PS: The explainations are all over the places so be careful when following it. ;)

Supplies

  1. Microcontroller: ESP32 Development Board (ESP-WROOM-32) (30-pin Version)
  2. Fingerprint Sensor: R307S Fingerprint Sensor (UART Version)
  3. Keypad: 4x4 Matrix Keypad
  4. Display: I2C Enabled 16x2 LCD Display
  5. Enclosure: 4x7x2in PVC Enclosure (Commonly called Board Box in local hardware shops)
  6. Power: 5V 2A Adapter with DC Jack
  7. Port: PCB Mountable DC Jack Female
  8. Misc:
  9. 470uF - 1000uF Capacitor (16V or UP)
  10. Male Headers
  11. Female Headers
  12. Heatshrink
  13. Copper Jumperwires (Salvaged from CAT5 Ethernet Cable)
  14. General purpose Perforated PCB (Any size comfortable)


Tools:

  1. Soldering Iron
  2. Solder + Flux
  3. Scale
  4. Fine Tip Marker
  5. Box Cutter
  6. Sand Paper
  7. SuperGlue (FeviKwik)

Build the Circuit

WhatsApp Image 2025-10-13 at 01.42.25_beb492c3.jpg
WhatsApp Image 2025-10-13 at 01.42.25_083dbc86.jpg
Schematic_Fingerprint_Keypad_React_Esp32_2025-10-13.png

Build the circuit on a dotted perforated PCB. You can go ahead and fabricate a PCB if you want. Its easy and I have attached my built pcb as a refrence for begineers. Circuit diagram is simple to follow and you can always google the pinout of your specific fingerprint sensor on internet.

For me;

  1. RED: VCC Connected to 3.3V
  2. BLACK: GND
  3. YELLOW: TXD
  4. WHITE: RXD
  5. GREEN: TOUCH
  6. BLUE: TOUCH POWER

For safety, short the '3.3V' jumper with solder or wire to make sure the ESP32's 3.3V logic level pins don't encounter any problem what so ever. You can power the LCD with 5V and no need for level shifters. Just it needs to have I2C Controller on the back.

Coding

Create a folder with name attendance_server and inside that server download these files.


the .ino file's name should be 'attendance_server.ino'

the .cpp file's name should be 'pins.cpp'

the .h file's name should be 'pins.h'


once its done, open the attendance_server.ino file. Make sure you have necessary libraries for making it work. This includes LiquidCrystal_I2C, Webserver, Keypad, WiFi, Adafruit Fingerprint Library. If an error persists, I guess ChatGPT can help you. (I am very very Sorry for poor explaination. I already had the these installed from a very very long time and never felt in error of 'library not included' for a long time!)


const char* ssid = "";

const char* password = "";


Enter your router's SSID and Password in this place. It should be a 2.4GHz Network. 5G does not work!


Code then should compile and work like it is supposed to...


It is also worth mentioning that the PIN, adjacent to every fingeprint ID is stored in the pins.cpp file. You can either remove the default pins to make it secure. or keep it. Your choice!

Enclosure

The enclosure that I used is a PVC Switch Board Box. It is a blank box normally used for mounting switches with nuts instead of common snap-in modular types. Size is 4x7x2 inches or 4x6x2 inches. These are common in all hardware shops; atleast in Mumbai, India. Mark, Cut, glue and stick your components how you like. Just be creative. PVC is a soft material, so even a box cutter and a sand paper should help you create great results. For holes, I just inserted my hot soldering iron to punch holes.

HOW TO USE IT

I have explained how to use it in the Reddit's Post and I will be answering the questions over there as well. If you encounter anything while build it, be sure to ask or read the comments for anyone who have troubleshooted any problems encountered.