finger print scanner (FPS) - GT511C1R

Hi,
I'm trying to use a simple program to test FPS sensor GT511C1R - Fingerprint Scanner - TTL (GT-521F32) - SEN-14518 - SparkFun Electronics with ARDUINO MEGA

I followed this tutorial - http://www.homautomation.org/2014/10/11/playing-with-finger-print-scanner-fps-on-arduino/ and tried to test with this program:

#include "FPS_GT511C1R.h"
#include "SoftwareSerial.h"

// Hardware setup - FPS connected to:
//    digital pin 4(arduino rx, fps tx)
//    digital pin 5(arduino tx - 560ohm resistor - fps tx - 1000ohm resistor - ground)
//    this voltage divider brings the 5v tx line down to about 3.2v so we dont fry our fps

FPS_GT511C1R fps(10, 11);

void setup()
{
  Serial.begin(9600);
  fps.UseSerialDebug = true; // so you can see the messages in the serial debug screen
  fps.Open();
  }


void loop()
{
  // FPS Blink LED Test
  fps.SetLED(true);
  delay(1000);
  fps.SetLED(false);
  delay(1000);
}

However, the only response that I have on serial monitor is this:

FPS - Open
FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"

I'm starting to think that the sensor is broken.

Any ideas how to get this to work?

Thanks a lot,
Eddy

fps.begin(correct speed); // missing ?

knut_ny:
fps.begin(correct speed); // missing ?

Well, I just don't know. I used the example code that came with the library. However I saw on this post: FINGERPRINT SENSOR with ARDUINO MEGA - Sensors - Arduino Forum
that was necessary to change the libraries.

Now I have my program like this:

/* 
 FPS_Enroll.ino - Library example for controlling the GT-511C3 Finger Print Scanner (FPS)
 Created by Josh Hawley, July 23rd 2013
 Licensed for non-commercial use, must include this license message
 basically, Feel free to hack away at it, but just give me credit for my work =)
 TLDR; Wil Wheaton's Law

 This simple sketch turns the LED on and off similar to the Arduino blink sketch.
 It is used to show that communications are working.
*/

#include "FPS_GT511C1R.h"
#include "SoftwareSerial.h"

// Hardware setup - FPS connected to:
//  digital pin 4(arduino rx, fps tx)
//  digital pin 5(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
// this brings the 5v tx line down to about 3.2v so we dont fry our fps

FPS_GT511C1R fps(18, 19);

void setup()
{
 Serial.begin(9600);
 fps.UseSerialDebug = true; // so you can see the messages in the serial debug screen
 fps.Open();
 }


void loop()
{
 // FPS Blink LED Test
 fps.SetLED(true); // turn on the LED inside the fps
 delay(1000);
 fps.SetLED(false);// turn off the LED inside the fps
 delay(1000);
}

I connected on (RX1,TX1)=(18,19)

Modified libraries as explained in link above

The result is always the same... :confused:

FPS_GT511C1R.cpp (23.1 KB)

FPS_GT511C1R.h (13.4 KB)

Today I've changed from arduino Mega to Uno R3.
(Later I will try to get it work on Mega)
The "blink" program from "Examples" works.

However, when I open the serial monitor the sensor freezes - stay always on - and I can't see any message sent by Serial.Print. Then I have to disconnect/connect usb cable and it works again.

/* 
	FPS_Enroll.ino - Library example for controlling the GT-511C3 Finger Print Scanner (FPS)
	Created by Josh Hawley, July 23rd 2013
	Licensed for non-commercial use, must include this license message
	basically, Feel free to hack away at it, but just give me credit for my work =)
	TLDR; Wil Wheaton's Law

	This simple sketch turns the LED on and off similar to the Arduino blink sketch.
	It is used to show that communications are working.
*/

#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"

// Hardware setup - FPS connected to:
//	  digital pin 4(arduino rx, fps tx)
//	  digital pin 5(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
//		this brings the 5v tx line down to about 3.2v so we dont fry our fps

FPS_GT511C3 fps(4, 5);

void setup()
{
	Serial.begin(9600);
	fps.UseSerialDebug = true; // so you can see the messages in the serial debug screen
	fps.Open();
      Serial.print("Press finger to Enroll #");

}


void loop()
{
	// FPS Blink LED Test
	fps.SetLED(true); // turn on the LED inside the fps
     // Serial.print("Press finger to Enroll #");

	delay(1000);
	fps.SetLED(false);// turn off the LED inside the fps
	delay(1000);
}

On your Mega - dont use softwareserial (if possible)

I find this a little odd in the library:

void Command_Packet::ParameterFromInt(int i)
{
Parameter[0] = (i & 0x000000ff);
Parameter[1] = (i & 0x0000ff00) >> 8;
Parameter[2] = (i & 0x00ff0000) >> 16;
Parameter[3] = (i & 0xff000000) >> 24;
}

.. as my "ints" are 16 bits only.
sorry I cant point to you in the right direction

i have a similar problem which I described in my thread Fingerprint Sensor GT-511C1R is Not Communicating with Arduino Uno - Sensors - Arduino Forum

I am using the library for the C3. I'm not sure if that's okay or not as I'm using the C1R. I can't get my sensor to communicate with the arduino uno. It's connected to power but it won't blink. If you could tell me how to fix this problem I would be grateful.

Also the demo software doesn't work for me. I'm not sure why. I've been posting on every site with a forum to see if I can get an answer and I saw your attempt on Adafruit's forum. Nice try

how did it work in arduino uno? i tried to test but still the blink didn't work in my case.

Ever get this to work?

I have the same issue and I believe I also have a gt-511c1r and I'm using the spark un library:

The sketches will run if you open the serial monitor enough times. I am using a 1k/2k resistor though for fps_rx from the Arduino 5 pin. I tested them on a voltmeter and they come in at 985/1935 ohms so it should work.

Did you guys get yours to work? What R values did you use?

I just replaced my 1/2k resistors for 10/20k resistors and it seems to work "better". With enroll I'm able to get to the enroll prompt in the serial monitor and I even got 2 finger reads and the 3rd one failed. Unfortunately it seems that once something fails, the code isn't really designed to handle that and restart, it just hangs. I'll keep trying but it seems to be a voltage issue. I'm guessing it's very sensitive and tiny variances in resistors and perhaps now power source (I'm using the 5v from the USB-pc powered Arduino) and perhaps even the movement of the sensor when pressed may be causing the voltage issue which causes the comm issue which hangs the code.