Pendaftaran Sidik Jari

Kode ESP32 untuk mendaftarkan sidik jari ke sensor sidik jari

Enroll_esp32.ino INO FILE
#include <Adafruit_Fingerprint.h>

#define MODEM_RX 16
#define MODEM_TX 17
#define mySerial Serial2 // use for ESP32

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\nzidCreative Innoiti TF 1");

  // set the data rate for the sensor serial port
  finger.begin(57600);
  
  if (finger.verifyPassword()) {
    Serial.println("Sensor ditemukan!");
  } else {
    Serial.println("Ups, sensor tidak ditemukan :(");
    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("Siap untuk mendaftarkan sidik jari!");
  Serial.println("Masukkan ID # (from 1 to 127) simpan sidik sebagai...");
  id = readnumber();
  if (id == 0) {// ID #0 not allowed, try again!
  return;}
  
  Serial.print("Mendaftarkan ID #");
  Serial.println(id);
  
  getFingerprintEnroll() ;
}

uint8_t getFingerprintEnroll() {

  int p = -1;
  Serial.print("Tungguu.... #"); Serial.println(id);
  while (p != FINGERPRINT_OK) {
    p = finger.getImage();
    switch (p) {
    case FINGERPRINT_OK:
      Serial.println("gambar diambil");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.println(".");
      break;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Komunikasi eror");
      break;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Gambar eror");
      break;
    default:
      Serial.println("eror tidak diketahui");
      break;
    }
  }

  // OK success!

  p = finger.image2Tz(1);
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("gambar terkonversi");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Gambar terlalu blur");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Komunikasi eror");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("tidak dapat menemukan fitur sidik jari");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("tidak dapat menemukan fitur sidik jari");
      return p;
    default:
      Serial.println("eror tidak diketahui");
      return p;
  }
  
  Serial.println("Lepas jari");
  delay(2000);
  p = 0;
  while (p != FINGERPRINT_NOFINGER) {
    p = finger.getImage();
  }
  Serial.print("ID "); Serial.println(id);
  p = -1;
  Serial.println("Letakkan jari yang sama");
  while (p != FINGERPRINT_OK) {
    p = finger.getImage();
    switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Gambar terambil");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.print(".");
      break;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Komunikasi eror");
      break;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("pengambilan gambar eror");
      break;
    default:
      Serial.println("eror tidak diketahui");
      break;
    }
  }

  // OK success!

  p = finger.image2Tz(2);
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("gambar terkonversi");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("gambar terlalu blur");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("komunikasi eror");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("tidak dapat menemukan fitur sidik jari");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("tidak dapat menemukan fitur sidik jari");
      return p;
    default:
      Serial.println("eror tidak diketahui");
      return p;
  }
  
  // OK converted!
  Serial.print("Creating model for #");  Serial.println(id);
  
  p = finger.createModel();
  if (p == FINGERPRINT_OK) {
    Serial.println("Cocok!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("komunikasi eror");
    return p;
  } else if (p == FINGERPRINT_ENROLLMISMATCH) {
    Serial.println("sidik jari tidak cocok");
    return p;
  } else {
    Serial.println("eror tidak diketahui");
    return p;
  }   
  
  Serial.print("ID "); Serial.println(id);
  p = finger.storeModel(id);
  if (p == FINGERPRINT_OK) {
    Serial.println("terdaftar!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("komunikasi eror");
    return p;
  } else if (p == FINGERPRINT_BADLOCATION) {
    Serial.println("tidak dapat menyimpan di lokasi tersebut");
    return p;
  } else if (p == FINGERPRINT_FLASHERR) {
    Serial.println("eror menulis flash");
    return p;
  } else {
    Serial.println("eror tidak diketahui");
    return p;
  }   
}