Intro: Fingerprint Scanner Class Attendance System (GT-521F32)
This Project is a simple attendance loging system that utilizes the GT-521F32, a low cost optical fingerprint scanner from Sparkfun to scan and record who, and when someone logs in.
Step 1: Parts Selection
- Fingerprint Scanner (GT-521F32) - https://www.sparkfun.com/products/14518
JST Connector to .1in header - https://www.sparkfun.com/products/14425
- 16x2 Character LCD - https://www.amazon.com/HC1624-Standard-Character-...
- M3 Nylon Screw Set - https://www.amazon.com/gp/product/B07214815H/ref=...
- DS1307 Real Time Clock Module - https://www.sparkfun.com/products/12708
- MicroSD 5v-3.3v level shifting Module - https://www.sparkfun.com/products/13743
View the BOM CSV file to view all the components used in PCB Design
Step 2: Using the Scanner
Initially, I began testing the scanner outside of any design by utilizing a testing application provided for the scanner that can be found here. https://www.sparkfun.com/products/14518
Communication from the scanner to the computer can be done in one of three ways
- USB to UART converter - FT-232RL - https://www.adafruit.com/product/284
- Arduino uploaded with a serial pass through sketch loaded
- Soldering a USB connection directly to the pads on the module
When connecting the module to either an arduino or the UART converter, the pinout is as such
*Ensure that when connecting the RX pin of the Scanner to use a voltage divider if using a 5v logic device as the pin is only 3.3v logic compatible
A more complete hookup guide can be found here - https://learn.sparkfun.com/tutorials/fingerprint-s...
Things that I would recomend to complete in this step is:
- Verify the functionality of the scanner
- Ensure it can enroll prints
- Ensure it can recognize prints
*The full program does not have an enrollment function capabilities due to memory constraints, be sure to enroll prints before using the main program. Make sure to take note of the ID number of each person you enroll.
Step 3: Design Schematic
This is the schematic for the system using EAGLE 9.0
I had to create a custom part for the finger print module that I will include here.
*The battery charging and boost circuitry is optional, and can be left out if desired. I have also included in the design mounting holes and headers for the sparkfun battery module. https://www.sparkfun.com/products/14411
Step 4: PCB Design
This PCB design is 99mm x 99mm, just under the standard size for cheap pcb ordering, which generally have a limit of 100mm x 100mm.
The holes are M3 bolt compatible and using the nylon standoffs to raise the board off the ground is recommended as the sparkfun modules are designed to mount under the board.
Currently I recommend JLC PCB for manufacturing, as they offer 48hr turnarounds, and DHL shipping. Out of the dozen times I have ordered from them, every order has come within 7 days https://jlcpcb.com/
Step 5: Assemble PCB
All Components on the board are SMD, resistors and capacitors are 0805.
When soldering the board I would recommend starting with the AtMega328 and the most basic components needed for it to function.
Basic functionality can be had by soldering the Crystal Oscillator, its 1M ohm resistor, and the two pull-up resistors for the reset pin. Once you have soldered those components move to the next step to burn the boot-loader and then come back to finish the rest of the soldering.
After burning the boot-loader, soldering the FT-232RL to test USB functionality is a logical next step. To test this you just need to solder the FT-232RL, the MicroUSB port, and the reset coupling capacitor. You can also add the leds for RX and TX for visual feedback, but they are not necessary. You also need to add the series TX RX resistors.
*The add on wire you see in the picture connected to the FT-232RL is not needed, I had made a mistake with connecting the power rail to the device, but have since fixed in the revision of the PCB uploaded to this Instructable.
After verifying the USB connection is functional, solder the LCD to the board (or connect it via headers if you want to reuse the display in the future) and its contrast potentiometer. Then connect the RTC and the SD card modules. Finally solder the connector for the Finger print scanner to the board, and mount it with standoffs.
Step 6: Burn Bootloader
For this project, the Atmega328 needs to be burned with the Arduino pro mini bootloader. The ICSP pins are exposed on the PCB for this purpose and are arranged as shown in the diagram.
A full tutorial on burning the boot-loader can be found here - https://www.arduino.cc/en/Tutorial/ArduinoISP
Step 7: The Code
I will be honest and say that my programming skills are not one of my strong suites, and that being said the code is rather messy, and I appolgize if its confusing. The majority of it is borrowed from other sources and reconfigured to fit the project.
Two projects that I relied heavily on for reference are linked here:
DIY FINGERPRINT SCANNING GARAGE DOOR OPENER - https://www.instructables.com/id/DIY-Fingerprint-S...
Petit FS example - http://elm-chan.org/fsw/ff/00index_p.html
The libraries used in this project can be found here:
FPS_GT511C3 library - https://github.com/sparkfun/Fingerprint_Scanner-TT...
DS1307 RTC library - https://github.com/sparkfun/SparkFun_DS1307_RTC_Ar...
Before you upload the code make sure to set the correct time on the RTC by using the example sketch from the DS1307 Library.
In the main program the first string is full of names that correspond with the ID number of the fingerprints stored on the scanners database. The names are listed in order, so just change the name of each ID to fit your needs. This name will be shown on the display, and logged on the SD card.
Step 8: The Case
The Case is made out of 1/8 in plywood, and is designed to be cut on a laser etching system.
I used wood glue to hold the bottom and the sides together, and the nylon standoffs to hold the top plate and the PCB to the board. This allows for the PCB to be easily removed from the enclosure if needed.
Step 9: Final Thoughts
I hope you enjoyed this project, please let me know if I missed any details that would help you complete your own build.
Here is my Github page if you want to see my other projects. https://github.com/Derek123454