Im following this tutorial: http://www.homautomation.org/2014/10/11/playing-with-finger-print-scanner-fps-on-arduino/
First, I think I can skip over the voltage divider since my UNO has a 3.3V pin and I believe the tutorial says the divider is used to get 3.3V from 5V.
Second, when I plug everything in, I get this in the serial monitor:
FP Open
FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"
FPS - Open
FPS - SEND: "55 AA 01 00 00 00 00 00 01 00 01 01"
But I dont get the backlight blinking every second.
I plugged the UNO into a lipo battery pack and it worked, meaning it blinked.
I decided to measure the voltages across the voltage divider:
While connected to the USB on my laptop I got a 3.17V
While connected to the lipo I got a 3.10V
Then I tried the code that enrolls the fingerprint and again, it doesnt advance past the fps.open() call.
Here is the first code:
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
//FPS connected to pin 4 and 5 - see previous schemas
FPS_GT511C3 fps(4, 5);
void setup()
{
Serial.begin(9600);
//display messages on the classical serial teminal - DEBUG
fps.UseSerialDebug = true;
fps.Open();
}
void loop()
{
//blink the led
fps.SetLED(true);
delay(1000);
fps.SetLED(false);
delay(1000);
}
Here is the second code:
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
//FPS connected to pin 4 and 5 - see previous schemas
FPS_GT511C3 fps(4, 5);
void setup()
{
Serial.begin(9600);
//display messages on the classical serial teminal - DEBUG
fps.UseSerialDebug = true;
Serial.println("before open");
fps.Open();
//call Enroll to add fingerprint
Serial.println("before enroll");
enroll();
}
void enroll(){
// get the first available id for new finger print
int enrollid = 0;
bool usedid = true;
Serial.println("before while");
while (usedid == true)
{
usedid = fps.CheckEnrolled(enrollid);
if (usedid==true) enrollid++;
}
Serial.println("before enrollstart");
//enrollment start here with the first free id
fps.EnrollStart(enrollid);
Serial.print("Press finger to Enroll #");
Serial.println(enrollid);
// ***** FIRST MEASURE *****
// wait for finger press
while(fps.IsPressFinger() == false) delay(100);
bool bret = fps.CaptureFinger(true);
int iret = 0;
if (bret != false)
{
//has a finger print captured
Serial.println("Remove finger");
// Enroll step 1
fps.Enroll1();
//wait for finger removed
while(fps.IsPressFinger() == true) delay(100);
// ***** SECOND MEASURE *****
// Now we need to check the finger print
// wait for finger press
Serial.println("Press same finger again");
while(fps.IsPressFinger() == false) delay(100);
bret = fps.CaptureFinger(true);
if (bret != false)
{
Serial.println("Remove finger");
//enroll step 2
fps.Enroll2();
//wait for finger removed
while(fps.IsPressFinger() == true) delay(100);
// ***** THIRD MEASURE *****
//Check Again the finger print
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)
{
//*** SUCCESS third measure are the same -> NOW finger print is stored
Serial.println("Enrolling Successfull");
}
else
{
//*** FAIL For some reason -> NOTHING STORED
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");
}
//loop is useless here
void loop()
{
delay(100000);
}
Im trying to reproduce my voltage divider in iCircuit to test what values I should be getting but I seem to have set it up wrong:
