Fingerprint Guarded Box

Use DFRobot's UART fingerprint scanner to store fingerprints and only allow authorized people to access the box.

 

Fingerprint Guarded Box

Things used in this project

Hardware components

HARDWARE LIST
1 DFRobot Fingerprint Sensor
1 DFRobot Particle Photon
2 5mm LED

Software apps and online services

 

Particle Build Web IDE

Story

 

 

 

 

Idea

Whether it’s some nosey siblings or a roommate who just won’t stay out of your stuff, being able to store items securely and then using biometrics to unlock them is a great idea.


 

For this project, DFRobot reached out to me and gave me their UART Fingerprint Reader.

 

 

 

Wiring

The wiring for this project is quite simple. First, the fingerprint sensor needs to be connected to the Photon via its UART pins. The white wire goes to Tx and the green one goes to Rx. Next, the two LEDs get connected to pins 2 and 3, along with their grounds.

 

 

 

Enrolling

For the fingerprint to be recognized, it must first get enrolled. This stores the image in the sensor’s onboard storage. To do that, I loaded up the enroll.ino sketch on the Particle Cloud IDE and uploaded it to the Photon.

Next, I opened the serial monitor and reset the Photon, where I placed and removed my finger several times on the sensor, and where I was then prompted to save it with an ID.

 

 

 

Usage

Now that my fingerprint had been stored, I uploaded the attached sketch and ran it. It constantly checks if a finger has been placed, and if it has, read it.

Next, it tries to recognize the print and ID it. If it matches the correct ID, the light changes to green and the box unlocks.

 

Schematics

 

Wiring

 

More Wiring

 

Code

 

Lock Box Code

C/C++

CODE
#include "Adafruit_Fingerprint.h"

int getFingerprintIDez();

const int red_led_pin = 2, green_led_pin = 3;

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial1);

void setup()  
{
  Serial.begin(9600);

  // 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);
  }
  Serial.println("Waiting for valid finger...");
  pinMode(red_led_pin, OUTPUT);
  pinMode(green_led_pin, OUTPUT);
  digitalWrite(red_led_pin, 1);
  digitalWrite(green_led_pin, 0);
}

void loop()                     // run over and over again
{
  getFingerprintIDez();
}

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.fingerFastSearch();
  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); 
}

// 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);
  digitalWrite(green_led_pin, 1);
  digitalWrite(red_led_pin, 0);
  delay(6000);
  digitalWrite(green_led_pin, 0);
  digitalWrite(red_led_pin, 1);
  return finger.fingerID; 
}

The article was first published in hackster, April 11,  2019

cr:https://www.hackster.io/gatoninja236/fingerprint-guarded-box-608487

author: Arduino “having11” Guy


 

License
All Rights
Reserved
licensBg
0