初始化提交
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
//Leo_passthru
|
||||
// Allows Leonardo to pass serial data between fingerprint reader and Windows.
|
||||
//
|
||||
// Red connects to +5V
|
||||
// Black connects to Ground
|
||||
// Green goes to Digital 0
|
||||
// White goes to Digital 1
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
Serial1.begin(57600);
|
||||
Serial.begin(57600);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
while (Serial.available())
|
||||
Serial1.write(Serial.read());
|
||||
while (Serial1.available())
|
||||
Serial.write(Serial1.read());
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
// this sketch will allow you to bypass the Atmega chip
|
||||
// and connect the fingerprint sensor directly to the USB/Serial
|
||||
// chip converter.
|
||||
|
||||
// Red connects to +5V
|
||||
// Black connects to Ground
|
||||
// White goes to Digital 0
|
||||
// Green goes to Digital 1
|
||||
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
@@ -0,0 +1,67 @@
|
||||
/***************************************************
|
||||
This is an example sketch for our optical Fingerprint sensor
|
||||
Designed specifically to work with the Adafruit Fingerprint sensor
|
||||
----> http://www.adafruit.com/products/751
|
||||
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>
|
||||
|
||||
|
||||
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
|
||||
// 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)
|
||||
// Set up the serial port to use softwareserial..
|
||||
SoftwareSerial mySerial(2, 3);
|
||||
|
||||
#else
|
||||
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
|
||||
// #0 is green wire, #1 is white
|
||||
#define mySerial Serial1
|
||||
|
||||
#endif
|
||||
|
||||
// Using sensor without password
|
||||
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
|
||||
|
||||
// Using sensor with password
|
||||
//Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial, 1337);
|
||||
|
||||
void setup()
|
||||
{
|
||||
while (!Serial); // For Yun/Leo/Micro/Zero/...
|
||||
|
||||
Serial.begin(9600);
|
||||
Serial.println("Adafruit fingerprint sensor, change password example");
|
||||
|
||||
// set the data rate for the sensor serial port
|
||||
finger.begin(19200);
|
||||
|
||||
if (finger.verifyPassword()) {
|
||||
Serial.println("Found fingerprint sensor!");
|
||||
} else {
|
||||
Serial.println("Did not find fingerprint sensor :(");
|
||||
while (1);
|
||||
}
|
||||
|
||||
Serial.print("Set password... ");
|
||||
uint8_t p = finger.setPassword(1337);
|
||||
if (p == FINGERPRINT_OK) {
|
||||
Serial.println("OK"); // Password is set
|
||||
} else {
|
||||
Serial.println("ERROR"); // Failed to set password
|
||||
}
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
/***************************************************
|
||||
This is an example sketch for our optical Fingerprint sensor
|
||||
|
||||
Designed specifically to work with the Adafruit Fingerprint sensor
|
||||
----> http://www.adafruit.com/products/751
|
||||
|
||||
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>
|
||||
|
||||
|
||||
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
|
||||
// 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)
|
||||
// Set up the serial port to use softwareserial..
|
||||
SoftwareSerial mySerial(2, 3);
|
||||
|
||||
#else
|
||||
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
|
||||
// #0 is green wire, #1 is white
|
||||
#define mySerial Serial1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
while (!Serial); // For Yun/Leo/Micro/Zero/...
|
||||
delay(100);
|
||||
Serial.println("\n\nDelete Finger");
|
||||
|
||||
// set the data rate for the sensor serial port
|
||||
finger.begin(57600);
|
||||
|
||||
if (finger.verifyPassword()) {
|
||||
Serial.println("Found fingerprint sensor!");
|
||||
} else {
|
||||
Serial.println("Did not find fingerprint sensor :(");
|
||||
while (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("Please type in the ID # (from 1 to 127) you want to delete...");
|
||||
uint8_t id = readnumber();
|
||||
if (id == 0) {// ID #0 not allowed, try again!
|
||||
return;
|
||||
}
|
||||
|
||||
Serial.print("Deleting ID #");
|
||||
Serial.println(id);
|
||||
|
||||
deleteFingerprint(id);
|
||||
}
|
||||
|
||||
uint8_t deleteFingerprint(uint8_t id) {
|
||||
uint8_t p = -1;
|
||||
|
||||
p = finger.deleteModel(id);
|
||||
|
||||
if (p == FINGERPRINT_OK) {
|
||||
Serial.println("Deleted!");
|
||||
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
|
||||
Serial.println("Communication error");
|
||||
return p;
|
||||
} else if (p == FINGERPRINT_BADLOCATION) {
|
||||
Serial.println("Could not delete in that location");
|
||||
return p;
|
||||
} else if (p == FINGERPRINT_FLASHERR) {
|
||||
Serial.println("Error writing to flash");
|
||||
return p;
|
||||
} else {
|
||||
Serial.print("Unknown error: 0x"); Serial.println(p, HEX);
|
||||
return p;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
/***************************************************
|
||||
This is an example sketch for our optical Fingerprint sensor
|
||||
Designed specifically to work with the Adafruit Fingerprint sensor
|
||||
----> http://www.adafruit.com/products/751
|
||||
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>
|
||||
|
||||
|
||||
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
|
||||
// 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)
|
||||
// Set up the serial port to use softwareserial..
|
||||
SoftwareSerial mySerial(2, 3);
|
||||
|
||||
#else
|
||||
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
|
||||
// #0 is green wire, #1 is white
|
||||
#define mySerial Serial1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
while (!Serial); // For Yun/Leo/Micro/Zero/...
|
||||
delay(100);
|
||||
|
||||
Serial.println("\n\nDeleting all fingerprint templates!");
|
||||
Serial.println("Press 'Y' key to continue");
|
||||
|
||||
while (1) {
|
||||
if (Serial.available() && (Serial.read() == 'Y')) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// set the data rate for the sensor serial port
|
||||
finger.begin(57600);
|
||||
|
||||
if (finger.verifyPassword()) {
|
||||
Serial.println("Found fingerprint sensor!");
|
||||
} else {
|
||||
Serial.println("Did not find fingerprint sensor :(");
|
||||
while (1);
|
||||
}
|
||||
|
||||
finger.emptyDatabase();
|
||||
|
||||
Serial.println("Now database is empty :)");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,230 @@
|
||||
/***************************************************
|
||||
This is an example sketch for our optical Fingerprint sensor
|
||||
|
||||
Designed specifically to work with the Adafruit BMP085 Breakout
|
||||
----> http://www.adafruit.com/products/751
|
||||
|
||||
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>
|
||||
|
||||
|
||||
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
|
||||
// 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)
|
||||
// Set up the serial port to use softwareserial..
|
||||
SoftwareSerial mySerial(2, 3);
|
||||
|
||||
#else
|
||||
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
|
||||
// #0 is green wire, #1 is white
|
||||
#define mySerial Serial1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
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);
|
||||
|
||||
if (finger.verifyPassword()) {
|
||||
Serial.println("Found fingerprint sensor!");
|
||||
} else {
|
||||
Serial.println("Did not find fingerprint sensor :(");
|
||||
while (1) { delay(1); }
|
||||
}
|
||||
|
||||
Serial.println(F("Reading sensor parameters"));
|
||||
finger.getParameters();
|
||||
Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
|
||||
Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
|
||||
Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
|
||||
Serial.print(F("Security level: ")); Serial.println(finger.security_level);
|
||||
Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
|
||||
Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
|
||||
Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
|
||||
}
|
||||
|
||||
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 getFingerprintEnroll() {
|
||||
|
||||
int p = -1;
|
||||
Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
|
||||
while (p != FINGERPRINT_OK) {
|
||||
p = finger.getImage();
|
||||
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;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
/***************************************************
|
||||
This is an example sketch for our optical Fingerprint sensor
|
||||
|
||||
Designed specifically to work with the Adafruit BMP085 Breakout
|
||||
----> http://www.adafruit.com/products/751
|
||||
|
||||
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>
|
||||
|
||||
|
||||
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
|
||||
// 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)
|
||||
// Set up the serial port to use softwareserial..
|
||||
SoftwareSerial mySerial(2, 3);
|
||||
|
||||
#else
|
||||
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
|
||||
// #0 is green wire, #1 is white
|
||||
#define mySerial Serial1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
while (!Serial); // For Yun/Leo/Micro/Zero/...
|
||||
delay(100);
|
||||
Serial.println("\n\nAdafruit finger detect test");
|
||||
|
||||
// set the data rate for the sensor serial port
|
||||
finger.begin(57600);
|
||||
delay(5);
|
||||
if (finger.verifyPassword()) {
|
||||
Serial.println("Found fingerprint sensor!");
|
||||
} else {
|
||||
Serial.println("Did not find fingerprint sensor :(");
|
||||
while (1) { delay(1); }
|
||||
}
|
||||
|
||||
Serial.println(F("Reading sensor parameters"));
|
||||
finger.getParameters();
|
||||
Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
|
||||
Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
|
||||
Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
|
||||
Serial.print(F("Security level: ")); Serial.println(finger.security_level);
|
||||
Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
|
||||
Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
|
||||
Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
|
||||
|
||||
finger.getTemplateCount();
|
||||
|
||||
if (finger.templateCount == 0) {
|
||||
Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example.");
|
||||
}
|
||||
else {
|
||||
Serial.println("Waiting for valid finger...");
|
||||
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
|
||||
}
|
||||
}
|
||||
|
||||
void loop() // run over and over again
|
||||
{
|
||||
getFingerprintID();
|
||||
delay(50); //don't ned to run this at full speed.
|
||||
}
|
||||
|
||||
uint8_t getFingerprintID() {
|
||||
uint8_t p = finger.getImage();
|
||||
switch (p) {
|
||||
case FINGERPRINT_OK:
|
||||
Serial.println("Image taken");
|
||||
break;
|
||||
case FINGERPRINT_NOFINGER:
|
||||
Serial.println("No finger detected");
|
||||
return p;
|
||||
case FINGERPRINT_PACKETRECIEVEERR:
|
||||
Serial.println("Communication error");
|
||||
return p;
|
||||
case FINGERPRINT_IMAGEFAIL:
|
||||
Serial.println("Imaging error");
|
||||
return p;
|
||||
default:
|
||||
Serial.println("Unknown error");
|
||||
return p;
|
||||
}
|
||||
|
||||
// OK success!
|
||||
|
||||
p = finger.image2Tz();
|
||||
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!
|
||||
p = finger.fingerSearch();
|
||||
if (p == FINGERPRINT_OK) {
|
||||
Serial.println("Found a print match!");
|
||||
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
|
||||
Serial.println("Communication error");
|
||||
return p;
|
||||
} else if (p == FINGERPRINT_NOTFOUND) {
|
||||
Serial.println("Did not find a match");
|
||||
return p;
|
||||
} else {
|
||||
Serial.println("Unknown error");
|
||||
return p;
|
||||
}
|
||||
|
||||
// found a match!
|
||||
Serial.print("Found ID #"); Serial.print(finger.fingerID);
|
||||
Serial.print(" with confidence of "); Serial.println(finger.confidence);
|
||||
|
||||
return finger.fingerID;
|
||||
}
|
||||
|
||||
// returns -1 if failed, otherwise returns ID #
|
||||
int getFingerprintIDez() {
|
||||
uint8_t p = finger.getImage();
|
||||
if (p != FINGERPRINT_OK) return -1;
|
||||
|
||||
p = finger.image2Tz();
|
||||
if (p != FINGERPRINT_OK) return -1;
|
||||
|
||||
p = finger.fingerFastSearch();
|
||||
if (p != FINGERPRINT_OK) return -1;
|
||||
|
||||
// found a match!
|
||||
Serial.print("Found ID #"); Serial.print(finger.fingerID);
|
||||
Serial.print(" with confidence of "); Serial.println(finger.confidence);
|
||||
return finger.fingerID;
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
/***************************************************
|
||||
This is an example sketch for our optical Fingerprint sensor with LED ring
|
||||
|
||||
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>
|
||||
|
||||
|
||||
|
||||
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
|
||||
// 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)
|
||||
// Set up the serial port to use softwareserial..
|
||||
SoftwareSerial mySerial(2, 3);
|
||||
|
||||
#else
|
||||
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
|
||||
// #0 is green wire, #1 is white
|
||||
#define mySerial Serial1
|
||||
|
||||
#endif
|
||||
|
||||
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
while (!Serial); // For Yun/Leo/Micro/Zero/...
|
||||
delay(100);
|
||||
Serial.println("\n\nAdafruit finger detect test");
|
||||
|
||||
// set the data rate for the sensor serial port
|
||||
finger.begin(57600);
|
||||
delay(5);
|
||||
if (finger.verifyPassword()) {
|
||||
Serial.println("Found fingerprint sensor!");
|
||||
} else {
|
||||
Serial.println("Did not find fingerprint sensor :(");
|
||||
while (1) { delay(1); }
|
||||
}
|
||||
|
||||
Serial.println(F("Reading sensor parameters"));
|
||||
finger.getParameters();
|
||||
Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
|
||||
Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
|
||||
Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
|
||||
Serial.print(F("Security level: ")); Serial.println(finger.security_level);
|
||||
Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
|
||||
Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
|
||||
Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void loop() // run over and over again
|
||||
{
|
||||
// LED fully on
|
||||
finger.LEDcontrol(FINGERPRINT_LED_ON, 0, FINGERPRINT_LED_RED);
|
||||
delay(250);
|
||||
finger.LEDcontrol(FINGERPRINT_LED_ON, 0, FINGERPRINT_LED_BLUE);
|
||||
delay(250);
|
||||
finger.LEDcontrol(FINGERPRINT_LED_ON, 0, FINGERPRINT_LED_PURPLE);
|
||||
delay(250);
|
||||
|
||||
// flash red LED
|
||||
finger.LEDcontrol(FINGERPRINT_LED_FLASHING, 25, FINGERPRINT_LED_RED, 10);
|
||||
delay(2000);
|
||||
// Breathe blue LED till we say to stop
|
||||
finger.LEDcontrol(FINGERPRINT_LED_BREATHING, 100, FINGERPRINT_LED_BLUE);
|
||||
delay(3000);
|
||||
finger.LEDcontrol(FINGERPRINT_LED_GRADUAL_ON, 200, FINGERPRINT_LED_PURPLE);
|
||||
delay(2000);
|
||||
finger.LEDcontrol(FINGERPRINT_LED_GRADUAL_OFF, 200, FINGERPRINT_LED_PURPLE);
|
||||
delay(2000);
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
/***************************************************
|
||||
This is an example sketch for our optical Fingerprint sensor
|
||||
|
||||
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>
|
||||
|
||||
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
|
||||
// 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)
|
||||
// Set up the serial port to use softwareserial..
|
||||
SoftwareSerial mySerial(2, 3);
|
||||
|
||||
#else
|
||||
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
|
||||
// #0 is green wire, #1 is white
|
||||
#define mySerial Serial1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
|
||||
|
||||
int getFingerprintIDez();
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial);
|
||||
Serial.begin(9600);
|
||||
Serial.println("Fingerprint template extractor");
|
||||
|
||||
// set the data rate for the sensor serial port
|
||||
finger.begin(57600);
|
||||
|
||||
if (finger.verifyPassword()) {
|
||||
Serial.println("Found fingerprint sensor!");
|
||||
} else {
|
||||
Serial.println("Did not find fingerprint sensor :(");
|
||||
while (1);
|
||||
}
|
||||
|
||||
// Try to get the templates for fingers 1 through 10
|
||||
for (int finger = 1; finger < 10; finger++) {
|
||||
downloadFingerprintTemplate(finger);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t downloadFingerprintTemplate(uint16_t id)
|
||||
{
|
||||
Serial.println("------------------------------------");
|
||||
Serial.print("Attempting to load #"); Serial.println(id);
|
||||
uint8_t p = finger.loadModel(id);
|
||||
switch (p) {
|
||||
case FINGERPRINT_OK:
|
||||
Serial.print("Template "); Serial.print(id); Serial.println(" loaded");
|
||||
break;
|
||||
case FINGERPRINT_PACKETRECIEVEERR:
|
||||
Serial.println("Communication error");
|
||||
return p;
|
||||
default:
|
||||
Serial.print("Unknown error "); Serial.println(p);
|
||||
return p;
|
||||
}
|
||||
|
||||
// OK success!
|
||||
|
||||
Serial.print("Attempting to get #"); Serial.println(id);
|
||||
p = finger.getModel();
|
||||
switch (p) {
|
||||
case FINGERPRINT_OK:
|
||||
Serial.print("Template "); Serial.print(id); Serial.println(" transferring:");
|
||||
break;
|
||||
default:
|
||||
Serial.print("Unknown error "); Serial.println(p);
|
||||
return p;
|
||||
}
|
||||
|
||||
// one data packet is 267 bytes. in one data packet, 11 bytes are 'usesless' :D
|
||||
uint8_t bytesReceived[534]; // 2 data packets
|
||||
memset(bytesReceived, 0xff, 534);
|
||||
|
||||
uint32_t starttime = millis();
|
||||
int i = 0;
|
||||
while (i < 534 && (millis() - starttime) < 20000) {
|
||||
if (mySerial.available()) {
|
||||
bytesReceived[i++] = mySerial.read();
|
||||
}
|
||||
}
|
||||
Serial.print(i); Serial.println(" bytes read.");
|
||||
Serial.println("Decoding packet...");
|
||||
|
||||
uint8_t fingerTemplate[512]; // the real template
|
||||
memset(fingerTemplate, 0xff, 512);
|
||||
|
||||
// filtering only the data packets
|
||||
int uindx = 9, index = 0;
|
||||
while (index < 534) {
|
||||
while (index < uindx) ++index;
|
||||
uindx += 256;
|
||||
while (index < uindx) {
|
||||
fingerTemplate[index++] = bytesReceived[index];
|
||||
}
|
||||
uindx += 2;
|
||||
while (index < uindx) ++index;
|
||||
uindx = index + 9;
|
||||
}
|
||||
for (int i = 0; i < 512; ++i) {
|
||||
//Serial.print("0x");
|
||||
printHex(fingerTemplate[i], 2);
|
||||
//Serial.print(", ");
|
||||
}
|
||||
Serial.println("\ndone.");
|
||||
|
||||
/*
|
||||
uint8_t templateBuffer[256];
|
||||
memset(templateBuffer, 0xff, 256); //zero out template buffer
|
||||
int index=0;
|
||||
uint32_t starttime = millis();
|
||||
while ((index < 256) && ((millis() - starttime) < 1000))
|
||||
{
|
||||
if (mySerial.available())
|
||||
{
|
||||
templateBuffer[index] = mySerial.read();
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
Serial.print(index); Serial.println(" bytes read");
|
||||
|
||||
//dump entire templateBuffer. This prints out 16 lines of 16 bytes
|
||||
for (int count= 0; count < 16; count++)
|
||||
{
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
Serial.print("0x");
|
||||
Serial.print(templateBuffer[count*16+i], HEX);
|
||||
Serial.print(", ");
|
||||
}
|
||||
Serial.println();
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
void printHex(int num, int precision) {
|
||||
char tmp[16];
|
||||
char format[128];
|
||||
|
||||
sprintf(format, "%%.%dX", precision);
|
||||
|
||||
sprintf(tmp, format, num);
|
||||
Serial.print(tmp);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user