ultra slim fingerprint sensor

General project help for Adafruit customers

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
blongo
 
Posts: 4
Joined: Wed Dec 29, 2021 8:54 pm

ultra slim fingerprint sensor

Post by blongo »

Hello! I am trying to use ultra slim fingerprint sensor to turn on and off an led. However, I can't seem to get the sensor to work with the led. I have tried on my own as well as have tried to follow a few online guides people put on Youtube ( they used the bulkier fingerprint sensor) but it still would not interact with the led. I have used both example codes for enrolling and fingerprint testing and both seemed to work. I then modified the fingerprint example code with if statements that used the finger.fingerID number to turn on the led. Any thoughts or advice would be great!

User avatar
adafruit_support_mike
 
Posts: 67485
Joined: Thu Feb 11, 2010 2:51 pm

Re: ultra slim fingerprint sensor

Post by adafruit_support_mike »

Post a photo showing your hardware and connections, along with your code (between CODE tags please) and we'll take a look. 800x600 images usually work best.

User avatar
blongo
 
Posts: 4
Joined: Wed Dec 29, 2021 8:54 pm

Re: ultra slim fingerprint sensor

Post by blongo »

i currently have the fingerprint sensors red wire connected to 3.3v, the black to gnd, green to pin 2 and yellow to pin 3. The led is in pin 13 and gnd. The two codes i am using are the adafruit enroll code and a modified version of the fingerprint code. The serial monitor recognizes the enrolled finger and the sensor changes color when detected. eventually i hope to move this project from an arduino to a trinket pro 5v. would that potential cause further issues?

Code: Select all

/***************************************************
  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
const int ledPin =  13;      // the number of the LED pin

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");
  
    // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  
  // 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;

  if (finger.fingerID = 1){
    digitalWrite(ledPin, HIGH);
  }
  else{ 
    digitalWrite(ledPin,LOW);
  }
}[code]
Attachments
setup800x600.jpg
setup800x600.jpg (59.75 KiB) Viewed 132 times

User avatar
adafruit_support_mike
 
Posts: 67485
Joined: Thu Feb 11, 2010 2:51 pm

Re: ultra slim fingerprint sensor

Post by adafruit_support_mike »

As a sanity check, can you light the LED directly from code?

There's always a chance that an LED can be connected backwards.

User avatar
blongo
 
Posts: 4
Joined: Wed Dec 29, 2021 8:54 pm

Re: ultra slim fingerprint sensor

Post by blongo »

Yes, using a simple LED code the light is able to turn on and off. I can also get it to work with a Tactile Switch.

User avatar
adafruit_support_mike
 
Posts: 67485
Joined: Thu Feb 11, 2010 2:51 pm

Re: ultra slim fingerprint sensor

Post by adafruit_support_mike »

Okay, that rules out connection issues.

Try printing the value of finger.fingerID just before the test to light the LED. See if it has a value that's different from 1.

User avatar
blongo
 
Posts: 4
Joined: Wed Dec 29, 2021 8:54 pm

Re: ultra slim fingerprint sensor

Post by blongo »

With the current code, if i open the serial monitor it says

"Image converted
Found a print match!
Found ID #1 with confidence of 100"

When i place a different finger it says
"Image converted
Did not find a match"

I tried throwing in a Serial.print after the led on and off statement but that did not show in the monitor. It seems like the sensor is able to ID the registered finger and recognize if a finger print is not registered.

User avatar
adafruit_support_mike
 
Posts: 67485
Joined: Thu Feb 11, 2010 2:51 pm

Re: ultra slim fingerprint sensor

Post by adafruit_support_mike »

Work through the code adding "made it this far" print statements, until you can track the flow of execution. Until you know that, it's nearly impossible to guess what needs to be fixed.

Locked
Please be positive and constructive with your questions and comments.

Return to “General Project help”