top of page
IMG_20220326_130328.jpg
finger-g02dfeb488_1280.jpg

Autenticação por biometria

>mATERIAL

>Arduino UNO;
>Jumpers;
>1 LED;
>Sensor biométrico;

>MONTAGEM

Captura de ecrã 2022-03-26 142511.jpg

>Código


#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>

SoftwareSerial mySerial(7,8);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

// DECLARAÇÃO DAS VARIÁVEIS E FUNCOES
uint8_t numID = 0;
bool gravar=true;

uint8_t modoGravacaoID(uint8_t IDgravar);

void setup() {
  pinMode(13, OUTPUT);
  Serial.begin(9600);
  finger.begin(57600);
}
void loop() {
  getFingerprintIDez();
 
}

uint8_t modoGravacaoID(uint8_t IDgravar) {

  int p = -1;
  Serial.print("Esperando uma leitura válida para gravar #"); Serial.println(IDgravar);
  delay(2000);
  while (p != FINGERPRINT_OK) {
  p = finger.getImage();
  switch (p) {
  case FINGERPRINT_OK:
     Serial.println("Leitura concluída");
     break;
  case FINGERPRINT_NOFINGER:
     Serial.println(".");
     delay(200);
     break;
  case FINGERPRINT_PACKETRECIEVEERR:
     Serial.println("Erro comunicação");
     break;
  case FINGERPRINT_IMAGEFAIL:
     Serial.println("Erro de leitura");
     break;
  default:
     Serial.println("Erro desconhecido");
     break;
  }
  }

  // OK successo!

  p = finger.image2Tz(1);
  switch (p) {
  case FINGERPRINT_OK:
     Serial.println("Leitura convertida");
     break;
  case FINGERPRINT_IMAGEMESS:
     Serial.println("Leitura suja");
     return p;
  case FINGERPRINT_PACKETRECIEVEERR:
     Serial.println("Erro de comunicação");
     return p;
  case FINGERPRINT_FEATUREFAIL:
     Serial.println("Não foi possível encontrar propriedade da digital");
     return p;
  case FINGERPRINT_INVALIDIMAGE:
     Serial.println("Não foi possível encontrar propriedade da digital");
     return p;
  default:
     Serial.println("Erro desconhecido");
     return p;
  }
 
  Serial.println("Remova o dedo");
  delay(2000);
  p = 0;
  while (p != FINGERPRINT_NOFINGER) {
  p = finger.getImage();
  }
  Serial.print("ID "); Serial.println(IDgravar);
  p = -1;
  Serial.println("Coloque o Mesmo dedo novamente");
  while (p != FINGERPRINT_OK) {
  p = finger.getImage();
  switch (p) {
  case FINGERPRINT_OK:
     Serial.println("Leitura concluída");
     break;
  case FINGERPRINT_NOFINGER:
     Serial.print(".");
     delay(200);
     break;
  case FINGERPRINT_PACKETRECIEVEERR:
     Serial.println("Erro de comunicação");
     break;
  case FINGERPRINT_IMAGEFAIL:
     Serial.println("Erro de Leitura");
     break;
  default:
     Serial.println("Erro desconhecido");
     break;
  }
  }

  // OK successo!

  p = finger.image2Tz(2);
  switch (p) {
  case FINGERPRINT_OK:
     Serial.println("Leitura convertida");
     break;
  case FINGERPRINT_IMAGEMESS:
     Serial.println("Leitura suja");
     return p;
  case FINGERPRINT_PACKETRECIEVEERR:
     Serial.println("Erro de comunicação");
     return p;
  case FINGERPRINT_FEATUREFAIL:
     Serial.println("Não foi possível encontrar as propriedades da digital");
     return p;
  case FINGERPRINT_INVALIDIMAGE:
     Serial.println("Não foi possível encontrar as propriedades da digital");
     return p;
  default:
     Serial.println("Erro desconhecido");
     return p;
  }
 
  // OK convertido!
  Serial.print("Criando modelo para #");  Serial.println(IDgravar);
 
  p = finger.createModel();
  if (p == FINGERPRINT_OK) {
  Serial.println("As digitais batem!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
  Serial.println("Erro de comunicação");
  return p;
  } else if (p == FINGERPRINT_ENROLLMISMATCH) {
  Serial.println("As digitais não batem");
  return p;
  } else {
  Serial.println("Erro desconhecido");
  return p;
  }   
 
  Serial.print("ID "); Serial.println(IDgravar);
  p = finger.storeModel(IDgravar);
  if (p == FINGERPRINT_OK) {
  Serial.println("Armazenado!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
  Serial.println("Erro de comunicação");
  return p;
  } else if (p == FINGERPRINT_BADLOCATION) {
  Serial.println("Não foi possível gravar neste local da memória");
  return p;
  } else if (p == FINGERPRINT_FLASHERR) {
  Serial.println("Erro durante escrita na memória flash");
  return p;
  } else {
  Serial.println("Erro desconhecido");
  return p;
  }   
}

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;
 
  //Encontrou uma digital!
  if (finger.fingerID == 0) {
    Serial.print("Modo Administrador!");
   
    numID++;
    modoGravacaoID(numID);
    return 0;
 
  } else {
  digitalWrite(13, HIGH);
  delay(2000);
  digitalWrite(13, LOW);
  }
}

Atenção

Após gravar a Imressão mude bool gravar=true; para bool gravar=false;

>Resultado Final

© 2023 por Arduino Power Max

bottom of page