Close Menu
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
Facebook X (Twitter) Instagram
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us
Facebook X (Twitter) Instagram Pinterest YouTube LinkedIn
How To Electronics
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
How To Electronics
Home » Interfacing GT511C3 Fingerprint Sensor (FPS) with Arduino
Arduino Projects

Interfacing GT511C3 Fingerprint Sensor (FPS) with Arduino

Mamtaz AlamBy Mamtaz AlamUpdated:May 29, 20236 Mins Read
Share Facebook Twitter LinkedIn Telegram Reddit WhatsApp
GT511C3 Fingerprint Sensor Arduino
Share
Facebook Twitter LinkedIn Pinterest Email Reddit Telegram WhatsApp

Overview

In this tutorial we will learn about Interfacing GT511C3 Fingerprint Sensor Module with Arduino. There are many fingerprint sensors available in the market and we used R305/R307 Optical fingerprint sensors in some earlier projects like Attendance System and Biometric Security System. But the GT511C3 is a more advanced fingerprint sensor with high accuracy and faster response time. Instead of the optical method, it uses a camera image processing method to detect fingerprints. A better fingerprint sensor is R502/R503 which is a Capacitive Type fingerprint sensor with fast and better response.

In this post, we will go through the details and specifications of the GT511C3 fingerprint sensor. We will also learn how to use the official SDK of this fingerprint sensor to register, test, and delete fingerprints. Apart from this, we will interface the GT511C3 Fingerprint Sensor with Arduino using the Library and then learn the method to enroll and test fingerprints.


Bill of Materials

S.N.Components NameQuantityPurchase Links
1Arduino UNO Board1Amazon | AliExpress
2GT511C3 Fingerprint Sensor1Amazon
316X2 LCD Display1Amazon | AliExpress
4Resistor 1K1Amazon | AliExpress
5Resistor 2K1Amazon | AliExpress
6Potentiometer 10K1Amazon | AliExpress
7Push Button Switch1Amazon | AliExpress
8Connecting Wires20Amazon | AliExpress
9Breadboard1Amazon | AliExpress



GT511C3 Fingerprint Sensor Module

The GT511C3 Fingerprint Sensor module is very different from the Capacitive and Ultrasonic Fingerprint sensor modules. GT511C3 Module uses an optical sensor to scan fingerprints. It means it relies on images of user fingerprints to recognize its pattern. The module has a camera inside it which takes pictures of your fingerprint. These fingerprints are processed by powerful in-built HOLTEK ARM Cortex M3 microcontroller. This scanner module can save up to 200 fingerprints scans, and it assigns an ID from 0 to 199 for each fingerprint.

GT511C3

This optical sensor module is designed for easy integration into applications with a Serial UART interface. It has two wires for TX and RX and two wires for power supply. The sensor can operate from 3.3V to 6V but communication pins (Rx and Tx) are 3.3V tolerant.

The GT511C3 Module can also be directly interfaced with a computer through a USB connection. While using a USB connection, this Module can be controlled using the SDK_DEMO.exe application. This application allows you to enroll/verify/delete fingerprints.


GT511C3 Module Features & Specifications

  • Operating Voltage: 3.3V to 6V DC
  • Operating Current: < 130mA
  • Operating Temperature: ~20°C ~ +60°C
  • CPU:  ARM Cortex M3 Core (Holtek HT32F2755)
  • Max no of fingerprints: 200 fingerprints
  • Sensor: Optical Sensor
  • Serial Communication: UART (Default: 9600 baud) and USB v1.1
  • False Acceptance Rate (FAR): < 0.001%
  • False Rejection Rate (FRR): < 0.01%
  • Enrollment Time < 3 sec (3 fingerprints)
  • Identification Time: <1.0 seconds (200 fingerprints)

GT511C3 Module Pinout

The GT511C3 Fingerprint Sensor Module has 4 pins.

GT511C3 Module Pinout

The red color wire is VCC & Black is the GND. Similarly, green is the Rx & white is the Tx.



GT511C3 SDK Demo Software

To use the demo software first connect the fingerprint sensor to USB-to-TTL Module. Here is the UART Connection with USB-to-TTL FTDI Module & GT511C3 Fingerprint Sensor.

Connect the red wire to VCC, black to GND, Green to Tx, and White to Rx.

USB-to-TTL FTDI Module & GT511C3 Fingerprint Sensor

For basic operation with the software, download the demo software development kit (SDK) from here.

To use the demo SDK on a computer:

  1. Download the SDK_DEMO.exe
  2. Unzip the folder.
  3. Go to the directory that it was unzipped
  4. Open the SDK_DEMO.exe executable.
  5. Select the COM port that the FTDI enumerated in the Serial Port Number’s drop-down menu.*
  6. Select 9600 in the Baudrate’s drop-down menu.
  7. Click on the Open button.

Once the demo SDK has been opened, it will look like this:

Once connected, it will display the Firmware Version and Device Serial Number. And there are so many options like Enroll, Verify, Identify, Get an image, delete, get a database, etc. You can try all the options one by one. The most important option is deleting the fingerprint which can be done by simply clicking on Delete All option.


Interfacing GT511C3 Fingerprint Sensor Module with Arduino

Let’s see how we can interface the fingerprint sensor with Arduino. So here is a simple schematic for the project.

GT511C3 Fingerprint Sensor Arduino

We have used 2K & 1K resistors for the voltage divider network as the sensor UART Pins are 3.3V tolerant. Connect the Green Wire (Rx) to Arduino D5 Pin & White Wire (Tx) to Arduino D4 Pin.



GT511C3 Arduino Library

Moving to the software part, we can use a GT511C3 Arduino Library library written by Sparkfun. This repository contains Arduino example code to work with GT511C3.

GT511C3 Arduino Library

This code has been tested with other types of fingerprint sensors as well. You can download this library and add it to the Arduino IDE.


Fingerprint Enroll Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
 
FPS_GT511C3 fps(4, 5);          //    digital pin 5(arduino Tx, fps Rx)
                                //    digital pin 4(arduino Rx, fps Tx)
void setup()
{
  Serial.begin(9600);           //default baud rate
  delay(100);
  fps.Open();
  fps.SetLED(true);
 
  Enroll();
}
 
 
void Enroll()
{
  int enrollid = 0;             // find open enroll id
  bool okid = true;
  while (okid == true)
  {
    okid = fps.CheckEnrolled(enrollid);
    if (okid==true) enrollid++;
  }
  fps.EnrollStart(enrollid);   // enroll
 
  
  Serial.print("Press finger to Enroll #");
  Serial.println(enrollid);
  while(fps.IsPressFinger() == false) delay(100);
  bool bret = fps.CaptureFinger(true);
  int iret = 0;
  if (bret != false)
  {
    Serial.println("Remove finger");
    fps.Enroll1();
    while(fps.IsPressFinger() == true) delay(100);
    Serial.println("Press same finger again");
    while(fps.IsPressFinger() == false) delay(100);
    bret = fps.CaptureFinger(true);
    if (bret != false)
    {
      Serial.println("Remove finger");
      fps.Enroll2();
      while(fps.IsPressFinger() == true) delay(100);
      Serial.println("Press same finger yet again");
      while(fps.IsPressFinger() == false) delay(100);
      bret = fps.CaptureFinger(true);
      if (bret != false)
      {
        Serial.println("Remove finger");
        iret = fps.Enroll3();
        if (iret == 0)
        {
          Serial.println("Enrolling Successfull");
        }
        else
        {
          Serial.print("Enrolling Failed with error code:");
          Serial.println(iret);
        }
      }
      else Serial.println("Failed to capture third finger");
    }
    else Serial.println("Failed to capture second finger");
  }
  else Serial.println("Failed to capture first finger");
}
 
 
void loop()
{
  delay(100);
}

You can upload the code and test it. After uploading codes, open the Serial Monitor and you will be asked to place a finger for enrolling.


Fingerprint Read Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
 
FPS_GT511C3 fps(4, 5);          //    digital pin 5(arduino Tx, fps Rx)
                                //    digital pin 4(arduino Rx, fps Tx)
void setup()
{
  Serial.begin(9600);           //default baud rate
  delay(100);
  fps.Open();
  fps.SetLED(true);
}
 
void loop()
{
 
  // Identify fingerprint test
  if (fps.IsPressFinger())
  {
    fps.CaptureFinger(false);
    int id = fps.Identify1_N();
    if (id <200)
    {
      Serial.print("Verified ID:");
      Serial.println(id);
    }
    else
    {
      Serial.println("Finger not found");
    }
  }
  else
  {
    Serial.println("Please press finger");
  }
  delay(100);
}

You can upload the code again and test it. After uploading codes, open the Serial Monitor and you will be asked to place a finger. You can place your enrolled finger and the fingerprint will read it.




Portable Fingerprint Scanner with Arduino & LCD Display

Let us add an LCD Display to see how we can observe the serial monitor data on LCD Display. This is the schematic for interfacing GT511C3 Fingerprint Sensor & LCD with Arduino for the project.

Interface GT511C3 Fingerprint Sensor Arduino

We have used a push-button connected to the digital pin 2 of Arduino. When it’s pressed, the sensor will go into enrolling mode. A 16×2 character LCD is attached which is programmed for displaying all the happening when interacting with a fingerprint sensor.

GT511C3 Arduino

You can use a breadboard for assembly. Otherwise, you can use a dedicated PCB for this project.


Source Code/Program

On the coding part, we have combined the fingerprint enroll and verify code together. We also added the LCD Display library and modified the code as per LCD requirements.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
 
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
 
FPS_GT511C3 fps(4, 5);          //    digital pin 5(arduino Tx, fps Rx)
 
void setup()
{
  Serial.begin(9600);           //default baud rate
  lcd.begin(16, 2);
  delay(100);
  fps.Open();
  fps.SetLED(true);
 
  pinMode(2, INPUT_PULLUP); //Connect to internal pull up resistor as input pin
 
  lcd.setCursor(4, 0);
  lcd.print("GT511C3");
  lcd.setCursor(3, 1);
  lcd.print("FPS Sensor");
  delay(2500);
}
 
 
void loop()
{
  read_fps();
 
  if (digitalRead(2) == 0) //If button pressed
  {
    Enroll(); //Enroll a fingerprint
  }
  delay(100);
}
 
 
 
void Enroll()
{
  int enrollid = 0;             // find open enroll id
  bool okid = true;
  while (okid == true)
  {
    okid = fps.CheckEnrolled(enrollid);
    if (okid == true) enrollid++;
  }
  fps.EnrollStart(enrollid);   // enroll
 
 
  Serial.print("Press finger to Enroll #");
  Serial.println(enrollid);
 
  lcd.setCursor(0, 0);
  lcd.print("Put Finger to");
  lcd.setCursor(0, 1);
  lcd.print("Enroll: #");
  lcd.print(enrollid);
 
  while (fps.IsPressFinger() == false)
    delay(100);
  bool bret = fps.CaptureFinger(true);
  int iret = 0;
  if (bret != false)
  {
    Serial.println("Remove finger");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Remove finger");
 
    fps.Enroll1();
    while (fps.IsPressFinger() == true)
      delay(100);
 
    Serial.println("Press same finger again");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Put same finger");
    lcd.setCursor(0, 1);
    lcd.print("again");
 
    while (fps.IsPressFinger() == false)
      delay(100);
    bret = fps.CaptureFinger(true);
    if (bret != false)
    {
      Serial.println("Remove finger");
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Remove finger");
 
 
      fps.Enroll2();
      while (fps.IsPressFinger() == true)
        delay(100);
      Serial.println("Press same finger yet again");
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Put same finger");
      lcd.setCursor(0, 1);
      lcd.print("yet again");
 
 
      while (fps.IsPressFinger() == false)
        delay(100);
      bret = fps.CaptureFinger(true);
      if (bret != false)
      {
        Serial.println("Remove finger");
        iret = fps.Enroll3();
        if (iret == 0)
        {
          Serial.println("Enrolling Successfull");
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("Enrolling");
          lcd.setCursor(0, 1);
          lcd.print("Successfull");
 
        }
        else
        {
          Serial.print("Enrolling Failed with error code:");
          Serial.println(iret);
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("Enrolling Failed");
          lcd.setCursor(0, 1);
          lcd.print(iret);
        }
      }
      else
        Serial.println("Failed to capture third finger");
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Failed Capturing");
      lcd.setCursor(0, 1);
      lcd.print("third finger");
    }
    else
      Serial.println("Failed to capture second finger");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Failed Capturing");
    lcd.setCursor(0, 1);
    lcd.print("second finger");
  }
  else
    Serial.println("Failed to capture first finger");
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Failed Capturing");
  lcd.setCursor(0, 1);
  lcd.print("first finger");
}
 
 
void read_fps()
{
  // Identify fingerprint test
  if (fps.IsPressFinger())
  {
    fps.CaptureFinger(false);
    int id = fps.Identify1_N();
    if (id < 200)
    {
      Serial.print("Verified ID:");
      Serial.println(id);
 
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Verified ID:");
      lcd.setCursor(0, 1);
      lcd.print(id);
    }
    else
    {
      Serial.println("Finger not found");
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Finger Not Found");
    }
  }
  else
  {
    Serial.println("Please press finger");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Please Put ");
    lcd.setCursor(0, 1);
    lcd.print("Finger");
  }
  delay(100);
}

Select Arduino Nano Board and COM port and upload the code. After uploading is done, the LCD will display the message to put your finger, and also the blue LED will light up in the Fingerprint module.




Testing Portable Fingerprint Scanner

To register your finger press the push button. Then scan your finger 3 times. The fingerprint will be enrolled.

To verify the fingers, place the same finger on the fingerprint module.

So, this is how you can enroll and read the fingerprint data.


Video Tutorial & Guide

GT511C3 Fingerprint Sensor Tutorial || Enroll + Read Fingerprint & Interface with Arduino
Watch this video on YouTube.

Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Reddit Telegram WhatsApp
Previous ArticleConnecting ESP32 to Amazon AWS IoT Core using MQTT
Next Article Blood Oxygen & Heart Rate Monitor with MAX30100 & Arduino

Related Posts

DC Energy Meter using Arduino

Build a DC Energy Meter using Arduino – 32V/5A

Updated:August 26, 20252K
Interfacing ADXL375 Accelerometer with Arduino

Interfacing ADXL375 Accelerometer with Arduino (±200g)

Updated:June 28, 2025
PZEM-004T Arduino Energy Meter

DIY AC Energy Meter using PZEM-004T & Arduino

Updated:March 6, 20258K
Interfacing BMI160 Accelerometer & Gyroscope with Arduino

Interfacing BMI160 Accelerometer & Gyroscope with Arduino

Updated:February 2, 20259K
Password Based Door Lock Security System Using Arduino & Keypad

Password Based Door Lock Security System Using Arduino & Keypad

Updated:February 2, 20252436K
Earthquake Detector Alarm with with Accelerometer & Arduino

Earthquake Detector Alarm with Accelerometer & Arduino

Updated:February 2, 2025661K
Add A Comment

CommentsCancel reply

Latest Posts
IoT Based PM & Air Quality Monitoring System using ESP32

IoT Based PM & Air Quality Monitoring System using ESP32

May 31, 2026
DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

May 10, 2026
IoT Activity Tracker with ESP32 & Accelerometer Gyroscope

IoT Activity Tracker with ESP32 & Accelerometer/Gyroscope

May 2, 2026
A Guide to Sourcing Obsolete ICs for Vintage Projects

Beyond AliExpress: A Guide to Sourcing Obsolete ICs for Vintage Projects

April 21, 2026

ESP32 IoT Vehicle Motion Analyzer with MPU6050 & LIS3MDL

April 27, 2026
Building a Smart Sensor Node with a BLE Microcontroller

Building a Smart Sensor Node with a BLE Microcontroller

February 26, 2026
High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

April 27, 2026
DIY Colorimeter using AS7265x Spectroscopy Sensor & ESP32

DIY Colorimeter using AS7265x Spectroscopy Sensor & ESP32

February 1, 2026
Top Posts & Pages
  • IoT Based PM & Air Quality Monitoring System using ESP32
    IoT Based PM & Air Quality Monitoring System using ESP32
  • 12V DC to 220V AC Inverter Circuit & PCB
    12V DC to 220V AC Inverter Circuit & PCB
  • IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
    IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
  • Buck Converter: Basics, Working, Design & Application
    Buck Converter: Basics, Working, Design & Application
  • LD2410 Sensor with ESP32 - Human Presence Detection
    LD2410 Sensor with ESP32 - Human Presence Detection
  • ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
    ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
  • ESP32 CAN Bus Tutorial | Interfacing MCP2515 CAN Module with ESP32
    ESP32 CAN Bus Tutorial | Interfacing MCP2515 CAN Module with ESP32
  • L293D Dual H-Bridge Motor Driver IC Pins, Circuit, Working
    L293D Dual H-Bridge Motor Driver IC Pins, Circuit, Working
Categories
  • Arduino Projects (197)
  • Articles (60)
    • Learn Electronics (19)
    • Product Review (15)
    • Tech Articles (28)
  • Electronics Circuits (46)
    • 555 Timer Projects (21)
    • Op-Amp Circuits (7)
    • Power Electronics (13)
  • IoT Projects (204)
    • ESP32 MicroPython (7)
    • ESP32 Projects (81)
    • ESP32-CAM Projects (15)
    • ESP8266 Projects (76)
    • LoRa/LoRaWAN Projects (22)
  • Microcontrollers (38)
    • AMB82-Mini IoT AI Camera (4)
    • BLE Projects (18)
    • STM32 Projects (19)
  • Raspberry Pi (93)
    • Raspberry Pi Pico Projects (57)
    • Raspberry Pi Pico W Projects (12)
    • Raspberry Pi Projects (24)
Follow Us
  • Facebook
  • Twitter
  • Pinterest
  • Instagram
  • YouTube
About Us

“‘How to Electronics’ is a vibrant community for electronics enthusiasts and professionals. We deliver latest insights in areas such as Embedded Systems, Power Electronics, AI, IoT, and Robotics. Our goal is to stimulate innovation and provide practical solutions for students, organizations, and industries. Join us to transform learning into a joyful journey of discovery and innovation.

Copyright © How To Electronics. All rights reserved.
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us

Type above and press Enter to search. Press Esc to cancel.

Ad Blocker Enabled!
Ad Blocker Enabled!
Looks like you're using an ad blocker. Please allow ads on our site. We rely on advertising to help fund our site.