Sei sulla pagina 1di 6

//LIBRERIA ADAFRUIT PARA TRABAJAR CON SISTEMAS BIOMETRICOS

#include <Adafruit_Fingerprint.h>
#if ARDUINO >= 100
#include <SoftwareSerial.h>
#else
#include <NewSoftSerial.h>
#endif
uint8_t getFingerprintEnroll(uint8_t id);
// pin #2 entrada de sensor (amarillo) TD serial sensor biometrico
// pin #3 salida del sensor (blanco) SD serial sensor biometrico
#if ARDUINO >= 100
SoftwareSerial mySerial(2, 3);
#else
NewSoftSerial mySerial(2, 3);
#endif
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
Serial.begin(9600);//velocidad a trabajar insertada especifica para nuestro se
nsor
Serial.println("Bienvenido, Huella Digital");
// velocidad de datos del puerto serial
finger.begin(57600);
//velocidad de la huella a captar es donde iniciamos la accin de insertar la huel
la hasta la finalizacin de enroll
//la validacin del sensor se produjo satisfactoriamente al usar un sensor seria
l
if (finger.verifyPassword()) {
Serial.println("Sensor de Huella Digital encontrado!");
} else {
Serial.println("Sensor de Huella digital no encontrado :(");
while (1);
}
}
void loop()
// iniciamos el proceso de ejecucion
{
Serial.println("ID # Para guardar la huella");
uint8_t id = 0;//unidades para el procesamiento de imagenes
while (true) {
while (! Serial.available());
char c = Serial.read();
if (! isdigit(c)) break;
id *= 10;
id += c - '0';
}
Serial.print("Inscripcion ID#");
Serial.println(id);
while (! getFingerprintEnroll(id) );
}
uint8_t getFingerprintEnroll(uint8_t id) {
uint8_t p = -1;

Serial.println("Esperando huella para la inscripcion");


while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen tomada");
break;
case FINGERPRINT_NOFINGER:
Serial.println(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("error de comunicacion");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("error de imagen");
break;
default:
Serial.println("error desconocido");
break;
}
}
// Proceso optimo, reconocimiento establecido
p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen convertida");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Imagen no captada");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("error de comunicacion");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("No se pudo encontrar las caracteristicas de la huella");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("No se pudo encontrar las caracteristicas de la huella");
return p;
default:
Serial.println("error desconocido");
return p;
}
Serial.println("quitar el dedo");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
p = -1;
Serial.println("Coloque el mismo dedo nuevamente");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("imagen tomada");

break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("error de comunicacion");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("error de imagen");
break;
default:
Serial.println("error desconocido");
break;
}
}
// Logro obtenido satisfactoriamente
p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("imagen convertida");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("imagen no captada");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("error de comunicacion");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("No se pudo encontrar las caracteristicas de la huella");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("No se pudo encontrar las caracteristicas de la huella");
return p;
default:
Serial.println("error desconocido");
return p;
}
// CONVERSION, GUARDAR EN LA MEMORIA, LISTO PARA INICAR BIOMETRIA
p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("coincidencia!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("error de comunicacion");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("las huellas no coinciden");
return p;
} else {
Serial.println("error desconocido");
return p;
}
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("almacenada!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {

Serial.println("error de comunicacion");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("No se puede almacenar");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("error al escribir en la memoria flash");
return p;
} else {
Serial.println("error desconocido");
return p;
}
}
A CONTINUACION SE MUESTRA NUESTRAS LINEAS DE PROGRAMACION PARA QUE EL SENSOR PUE
DA RECONOCER NUESTRA HUELLA DACTILAR GUARDADA.
/***************************************************
Optical Fingerprint sensor
****************************************************/
#include <Adafruit_Fingerprint.h>
#if ARDUINO >= 100
#include <SoftwareSerial.h>
#else
#include <NewSoftSerial.h>
#endif
int getFingerprintIDez();
// pin #2 entrada del sensor - amarillo
// pin #3 salida del sensor - blanco
#if ARDUINO >= 100
SoftwareSerial mySerial(2, 3);
#else
NewSoftSerial mySerial(2, 3);
#endif
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
Serial.begin(9600);
Serial.println("Bienvenido, Huella digital");
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
// set the data rate for the sensor serial port
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Sensor de Huella digital encontrado");
} else {
Serial.println("Sensor de Huella digital no encontrado :(");
while (1);
}
Serial.println("Esperando validacion");
}
void loop()
// iniciamos el proceso de ejecucion
{
getFingerprintIDez();
digitalWrite(12,HIGH);
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen tomada");
break;

case FINGERPRINT_NOFINGER:
Serial.println("Huella no detectada");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("error de comunicacion");
return p;
case FINGERPRINT_IMAGEFAIL:
Serial.println("error de imagen");
return p;
default:
Serial.println("error desconocido");
return p;
}
// OK success!
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen convertida");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Imagen no captada");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("error de comunicacion");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("No se pudo encontrar las caracteristicas de la huella");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("No se pudo encontrar las caracteristicas de la huella");
return p;
default:
Serial.println("error desconocido");
return p;
}
// CONVERSION
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("coincidencia!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("error de comunicacion");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("las huellas no coinciden");
return p;
} else {
Serial.println("error desconocido");
return p;
}
// Igualdad, existe una coincidencia entonces se acciona el led de accionar
Serial.print("Encontrado ID #");
Serial.print(finger.fingerID);
Serial.print(" es confiable ");
Serial.println(finger.confidence);
}
// devuelve -1, sino devuelve ID#, para el arduino el -1 significa los microsegu
ndos por ende mandaria un reset de lo contrario se mostrara satisfactoriamente el
LED encendido
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;
// la coincidencia fue aceptada y evidenciada en nuestra salida hacia el led
//sintaxis para salidas y evidenciar el reconocimiento en el puerto 12 de transm
isin de datos donde low es apagado y high encendido, 11 y 12 significan nuestras
salidas plasmadas en LED s.en el arduino 1000 significa 1 seg. Por eso el tiempo d
e validacin es 2 seg.
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
delay(2000);
digitalWrite(11,LOW);
delay(500);
digitalWrite(12,HIGH);
Serial.print("Encontrado ID #");
Serial.print(finger.fingerID);
Serial.print(" es confiable ");
Serial.println(finger.confidence);
return finger.fingerID;
}

Potrebbero piacerti anche