i work on a time attendance project and i need to use a fingerprint sensor
i have 2 questions
1- when i begin the fingerprint sensor it does not light up
how can i light it up to read the finger image
2- if i change the password how to use the new password if the verifypassword only takes a void parameter [finger.verifyPassword()]?
thanks for your help
How do you know it does not light up? The finger print sensor on my old HP laptop uses an IR led for light to read the finger print. Yes, a white LED lights up, but that is NOT what reads the finger print.
Paul
thanks for replying
the data sheet says it must be lit up to detect the presence of a finger
fidamon:
the fingerprint sensor
Maybe you could provide details of "the" sensor along with the code you used and links to any libraries.
thanks anthony for replying
the fingerprint senseor is a china made zfm fingerprint sensor (that is what we can get in egypt)
Attached a datasheet and enroll arduino example from adafruit which i used
fingerprint_en.pdf (23.3 KB)
enroll.ino (5.89 KB)
What's the type number of that scanner?
Complete data sheet would also be useful.
thank you for replying
the datacheet , the code and the result are all attached to my last reply
fidamon:
the datacheet , the code and the result are all attached to my last reply
There's a single page pdf which appears to be part of a datasheet. Not a complete data sheet. No type number, either.
Without unambiguous identification of the sensor in question this thread is dead in the water.
/***************************************************
This is an example sketch for our optical Fingerprint sensor
Designed specifically to work with the Adafruit BMP085 Breakout
----> Fingerprint sensor : ID 751 : $49.95 : Adafruit Industries, Unique & fun DIY electronics and kits
These displays use TTL Serial to communicate, 2 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#include <Adafruit_Fingerprint.h>
// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white
// uncomment this line:
// #define mySerial Serial1
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire)
// comment these two lines if using hardware serial
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
uint8_t id;
void setup()
{
Serial.begin(9600);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit Fingerprint sensor enrollment");
// set the data rate for the sensor serial port
finger.begin(57600);
uint8_t Q = finger.verifyPassword();
if (Q == FINGERPRINT_OK) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
}
uint8_t readnumber(void) {
uint8_t num = 0;
while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}
void loop() // run over and over again
{
Serial.println("Ready to enroll a fingerprint!");
Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as...");
id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!
return;
}
Serial.print("Enrolling ID #");
Serial.println(id);
while (! getFingerprintEnroll() );
}
// uint8_t G=finger.FLASHERR();
// Serial.println(G);
uint8_t getFingerprintEnroll() {
int p = -1;
Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
while (p != FINGERPRINT_OK) {
p = finger.getImage();
//Serial.println(p);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.println(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}
// OK success!
p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}
Serial.println("Remove finger");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Place same finger again");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}
// OK success!
p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}
// OK converted!
Serial.print("Creating model for #"); Serial.println(id);
p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
return p;
} else {
Serial.println("Unknown error");
return p;
}
Serial.print("ID "); Serial.println(id);
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.println("Unknown error");
return p;
}
}
datasheet
Thank you for the data sheet.
Now tell us how you have the sensor wired to a power supply that can supply more than 150ma.
Paul
Paul_KD7HB:
Thank you for the data sheet.Now tell us how you have the sensor wired to a power supply that can supply more than 150ma.
Paul
is that the problem ?
is the power from arduino 5v not enough ?
i use arduino nano
fidamon:
is that the problem ?
is the power from arduino 5v not enough ?i use arduino nano
40ma is a world away from the 150ma that the device requires. Read the data sheets!!!!!
'
Paul
thank you very much
i will try another power source
forgive me not reading carefully it is because of an injury in my left eye
thanks again
fidamon:
is the power from arduino 5v not enough ?i use arduino nano
How is the Nano powered?
wvmarle:
How is the Nano powered?
.
How is the Nano powered?
it is powered from pc usb
i added another extra USB power to the fingerprint
the same problem no change
fidamon:
i added another extra USB power to the fingerprint
the same problem no change
Are the grounds of the new supply connected to the grounds of the sensor and the ARduino?
Paul
yes
and i reviwed the code
found that it is
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println(FINGERPRINT_PACKETRECIEVEERR);
Serial.println("Communication error");
that means there is an error in the packet sent by arduino ??
Problem Solved
thank you all
fidamon:
Problem Solved
thank you all
What was the solution to the problem? Someone else with a similar problem may find your thread while searching the forum.
Paul
