Hi guys,
Im using this sensor (GT-511C3) here
Along with this library
If I add the debug = true line to the sketches I get this:
FPS - Open
FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"
but nothing else happens. Im using the code examples from the library itself. Im using a 985Ω resistor and a 1.46kΩ as a divider.
Connections are
Arduino---------FPS
5V -------------Vcc
GND -----------GND
4 ---------------Tx
5 ---0.985------Rx
|
------1.46kΩ-----GND
I have to open the serial monitor a few times after upload in order for any sketch to work. Below are the Blink and Enroll sketches and what they give once I get them to work after opening the SM about 3 or 5 times after upload.
Here is FPS_Blink.ino:
/*
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);
//Serial.println("hi");
delay(100);
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);
}
When it works I get:
FPS - Open
FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
FPS - LED on
FPS - SEND: "55 AA 01 00 01 00 00 00 12 00 13 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
FPS - LED off
FPS - SEND: "55 AA 01 00 00 00 00 00 12 00 12 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
FPS - LED on
FPS - SEND: "55 AA 01 00 01 00 00 00 12 00 13 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
FPS - LED off
FPS - SEND: "55 AA 01 00 00 00 00 00 12 00 12 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
FPS - LED on
FPS - SEND: "55 AA 01 00 01 00 00 00 12 00 13 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
Here is the FPS_Enroll.ino:
/*****************************************************************
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
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
void setup()
{
Serial.begin(9600); //set up Arduino's hardware serial UART
delay(100);
fps.Open(); //send serial command to initialize fps
fps.SetLED(true); //turn on LED so fps can see fingerprint
Enroll(); //begin enrolling fingerprint
}
void Enroll()
{
// Enroll test
// find open enroll id
int enrollid = 0;
bool usedid = true;
while (usedid == true)
{
usedid = fps.CheckEnrolled(enrollid);
if (usedid==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 Successful");
}
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(100000);
}
When it works I get this:
FPS - Open
FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
FPS - LED on
FPS - SEND: "55 AA 01 00 01 00 00 00 12 00 13 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
FPS - CheckEnrolled
FPS - SEND: "55 AA 01 00 00 00 00 00 21 00 21 01"
FPS - RECV: "55 AA 01 00 04 10 00 00 31 00 45 01"
FPS - EnrollStart
FPS - SEND: "55 AA 01 00 00 00 00 00 22 00 22 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
Press finger to Enroll #0
FPS - IsPressFinger
FPS - SEND: "55 AA 01 00 01 00 00 00 26 00 27 01"
FPS - RECV: "55 AA 01 00 12 10 00 00 30 00 52 01"
FPS - IsPressFinger
FPS - SEND: "55 AA 01 00 01 00 00 00 26 00 27 01"
FPS - RECV: "55 AA 01 00 12 10 00 00 30 00 52 01"
...
FPS - IsPressFinger
FPS - SEND: "55 AA 01 00 01 00 00 00 26 00 27 01"
FPS - RECV: "55 AA 01 00 00 00 00 00 30 00 30 01"
FPS - CaptureFinger
FPS - SEND: "55 AA 01 00 01 00 00 00 60 00 61 01"
FPS - RECV: "55 AA 01 00 12 10 00 00 31 00 53 01"
Failed to capture first finger
And at this last CaptureFinger is when I pressed my finger to the reader.