Playing with finger print scanner (FPS) on arduino

In this post I will describe experiments I did with a finger print scanner. Finger print scanner can be used in a lot of applications:

  • access control
  • user recognition
  • security
  • etc…

Needed Hardware

ArduinoUno_r2_front450px Arduino Uno Price: less than $30 (Amazon)

Fingerprint Sc512y11xInXLanner TTL GT511C1R (Amazon)

Price: less than $35

JST SH cable: (Amazon)
Price: less than $2

How it works

All the description of this sensor is available in this datasheet.

The FPS (Finger Print Scanner) has a back light led that can be powered on or off. to be able to compare finger Print it also has its own database to store scanned finger prints in association with a given id. So here are the steps to configure it:

  1. Test your FPS connection making the backlight blink
  2. Store in internal database some finger prints
  3. Try to compare compare a finger print with stored ones

To do so you can use this Arduino library here.


Here is a way to connect your FPS to the Arduino.

As FPS RX and TX are supposed to accept 3.3V and your Arduino deliver 5V on pins, you have to add a divider with 2 resistors (1k and 560) on FPS RX.

NB: FPS TX cable is the black one:

fingerprint_bb fingerprint_schema


Test your FPS connection making the backlight blink

Store in internal database some finger prints

Enrollment process will be done in 3 steps in order to be sure the measured finger print is the same three times in a row. The following code explain the process to add a finger print in the internal database.

Try to compare compare a finger print with stored ones

The FPS can store up to 200 finger prints. In order to know if a finger print is recognized, its id should be < 200:

Reset stored finger prints in your FPS




  1. sir
    In required hardware u mentioned GT511C1R but everywhere else you mentioned GT511C3
    I have GT511C1R
    will this work on it?
    with surety ?
    because I am doing a project and budget is limited so can not afford damaging my most expensive component of project
    please reply…. as soon as possible

  2. sir
    I want to know if this works on GT511C1R perfectly
    U have mentiong GT511C1R in hardware required
    but every where else it is GT511C3
    Does this surely work on GT511C1R too?

    • Hi,

      Both devices work on the same way. The only difference is the number of storable finger print:
      – GT511C3: store up to 200 different fingerprints
      – GT511C1R: can store only 20 fingerprints


      • SIR does that surely imply that the same codes will run on gt511c1r
        and sir one more thing
        in my project there are other perepherals too to be connected to arduino
        I am using freeduino uno board what maximum current can the board source ?

  3. Hi

    First let me say i love your post.

    I know the post is old, but i was wondering since i’m very new to arduino and electronics, wil a 560 carboon resistor work on the setup?

    Thanx in adv.

  4. Hey I’m having the same problem.
    I’m a complete rookie so I have very little idea what i’m doing..
    But, i’ve changed GT511C3.h to GT511C1R.h in the code and I’m continuing to get ‘No such file or directory’ and …’does not name a type’
    Can someone help?

  5. I have a problem.
    Everything Hangs if i open the serial monitor.
    Blink does not work once uploaded. If i unplug the controller from my mac and plug the usb back in, blink works instantaneously. and it hangs when serial monitor is opened.

    Enroll…. i dont see ” press finger to enroll in #”
    I see SEND: 23 23 2 4 34 some numbers.. and nothing works after that

  6. hello sir
    i am vaibhav working as a engineer i am facing a deficulty in finding the library file for aurdino uno board of this sensor GT51133 can you just help me.. please if possible
    Thanks in advance..

  7. the FPS doesn’t work. I am trying to do the blink example and all i get is the

    FPS FPS – Open
    FPS – SEND: “55 AA 01 00 00 00 00 00 01 00 01 01”
    There is one green led constantly ON on the FPS, but that’s all.

    I added Serial.print(“we are here”); which stops working if I put it anywhere after fps.Open(); line (no matter setup or loop).

    I am pretty sure I have the wiring corretly:

    Additional info:
    i have the GT-511C1R and i have tried with both with:

    the result is the same as described above.

    I have tried it with the Arduino Mega and Pololu A-star 32U4 Micro (running as Leonardo up to now no problem)

  8. I solved the problem. Couldn’t reliably communicate with the Finger Print Scanner(FPS). Unplugging the USB cable would get the uploaded code to work on FPS. Initially, I looked at the code and also found it was getting hung up on In particular it was waiting to rx a signal from the Finger Print Scanner. The real problem was the voltage divider going into the RX pin of Finger Print Scanner was producing too slow of a rise time. The fix was to use a level converter. I used the

    SparkFun listed one: BOB-12009

    This produces a rise time approx 14ns. I hooked hv = 5V. hv4 = Arduino Tx pin, lv = 3.3V, lv4 = FPS Rx pin. This also fixed the serial monitor, print statements show up reliably now.

    • I’m trying to work things out for two days now. Sometimes it works, sometimes it doesn’t. You are right, it hangs up on I will buy a level converter tomorrow and try this out. Thanks maan..

  9. Hello,

    I am new to all this and just having a play around. Ive managed to get the scanner to power up but I cannot get my laptop to regognize the scanner. I am using a Arduino Uno board and have followed your set up instructions. What could be the problem and how can I get this resolved. I appreciate any help anyone can offer.

  10. Arduino: 1.6.9 (Windows 10), Board: “Arduino/Genuino Uno”
    C:\Program Files (x86)\Arduino\libraries\Fingerprint_Scanner-TTL-master\FPS_GT511C3\Examples\FPS_Blink\FPS_Blink.ino:12:25: fatal error: FPS_GT511C3.h: No such file or directory
    #include “FPS_GT511C3.h”
    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Uno.

      • This means that your library is not actually added into Arduino IDE. Once you’ve downloaded Josh Hawley’s library, you then need to add the ZIP into Arduino. To do that use the drop down menu from Sketch -> Add .ZIP folder and choose the GT511C3 folder which will be inside the library you downloaded. Hopefully this should work

  11. Dump the resistor divider. In fact there is no reason to use a proto board. Plug the FPS directly into the arduino board. The sensor is designed to operate on 3.3V to 6V supply voltages. If you are using the 5V supply on the arduino board then the RX and TX pins expect 5V signal levels. Dividing down the signals will lead to potential errors.
    The C1 and C3 suffixes simply refer to model numbers. The model ending in C1 can store 20 fingerprint files. The model number ending in C3 can store 200 files. The storage capability has nothing to do with the fundamental operation of the sensor. The same code should work for both except that if you try to store more than 20 files in the C1 it won’t!

  12. I am having difficulty setting up my fingerprint Scanner – TTL (GT-511C3). I have bought it from

    sparkfun I’m using the library from and none of the

    example sketches work.

    I have a message printing to the serial before the command and a message printing afterwards, but I only ever see the first

    message. Does this mean the arduino is stuck trying to open the scanner? Please Help me out…..!!!

  13. As others have alluded to, I could NOT get the FPS to work with the original schematic that included the resistors.
    On a hunch — greatly influenced by some of the comments above — I simply plugged the FPS straight into the Arduino.
    FPS tx to Arduino digital pin 4(arduino rx, fps tx)
    FPS rx to Arduino digital pin 5
    FPS vcc to Arduino 5v
    FPS gnd to Arduino ground

    All work like a charm! No resistors, no lowering voltage to 3.3v.

  14. Does anyone solve this error?

    FPS_Blink.ino:12:26: fatal error: FPS_GT511C1R.h: No such file or directory
    compilation terminated.

    I already download all the libraries but still it results for this. I need you help. thank you

  15. Arduino: 1.8.5 Hourly Build 2017/08/28 06:19 (Linux), Board: “Arduino/Genuino Uno”

    /home/pi/Arduino/FPS_Blink.c/FPS_Blink.c.ino:52:25: fatal error: FPS_GT511C3.h: No such file or directory
    #include “FPS_GT511C3.h”
    compilation terminated.
    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    i am getting this message while compiling this code please guide me regarding this. waiting for some positive response Thankyou

  16. my error is
    This report would have more information with
    “Show verbose output during compilation”
    enabled in File > Preferences.
    Arduino: 1.0.6 (Windows NT (unknown)), Board: “Arduino Leonardo”
    FPS_Blink.cpp.o: In function `__static_initialization_and_destruction_0′:
    C:\Program Files (x86)\Arduino/FPS_Blink.ino:57: undefined reference to `FPS_GT511C3::FPS_GT511C3(unsigned char, unsigned char)’
    C:\Program Files (x86)\Arduino/FPS_Blink.ino:57: undefined reference to `FPS_GT511C3::~FPS_GT511C3()’
    FPS_Blink.cpp.o: In function `loop’:
    C:\Program Files (x86)\Arduino/FPS_Blink.ino:78: undefined reference to `FPS_GT511C3::SetLED(bool)’
    C:\Program Files (x86)\Arduino/FPS_Blink.ino:80: undefined reference to `FPS_GT511C3::SetLED(bool)’
    FPS_Blink.cpp.o: In function `setup’:
    C:\Program Files (x86)\Arduino/FPS_Blink.ino:72: undefined reference to `FPS_GT511C3::Open()’


Leave a Comment.