Arduino Uno Fingerprint Scanner Tutorial: Enroll and Verify Your Fingerprints

Поділитися
Вставка
  • Опубліковано 6 лип 2024
  • Check out this Arduino Uno fingerprint scanner tutorial! Enroll and verify your fingerprints with the FPM11A Fingerprint scanner.
    🔔🔔 SUBSCRIBE 🔔🔔 don't forget to subscribe and click the bell!
    / @bmonsterlaboratory
    Facebook: / bmonster-laboratory-10...
    Twitter: / b_monsterlab
    check out our Arduino play list! We try to make it easy 👍
    • Easy Arduino projects ...
    Unlock the power of biometric security with our Arduino Uno Fingerprint Scanner Tutorial! 🤖🔒
    In this comprehensive guide, we're diving into the exciting world of biometrics, showing you how to enroll and verify a fingerprint into a fingerprint scanner for your Arduino Uno projects. 🆔👆
    🌟 Key Highlights:
    Arduino Uno Fingerprint Reader: Explore the capabilities of the FPM11A Fingerprint Scanner and learn how to connect it to your Arduino Uno board.
    Fingerprint Sensor Setup: We'll guide you through the setup process, making it a breeze to get started.
    Fingerprint Enrollment: Discover how to securely enroll fingerprints, adding an extra layer of authentication to your projects.
    Fingerprint Verification: Master the art of fingerprint verification and access control using your Arduino Uno.
    Biometric Authentication: Harness the power of biometric technology to enhance the security of your DIY projects.
    DIY Security System: Create your very own DIY security system with the help of fingerprint authentication.
    Whether you're a tech enthusiast, a security-conscious homeowner, or simply curious about biometrics, this tutorial is designed for you. Join us on a journey to unlock the potential of fingerprint recognition in your projects. 🏡🔑
    🔒 Secure Your World with Arduino Uno: Elevate your security game, protect your belongings, and add a futuristic touch to your DIY creations. 🌐🛡️
    Ready to embark on this exciting Arduino adventure? Hit that "Play" button, subscribe to our channel, and let's get started on your path to mastering biometric security! 🔓🚀
    #arduino #arduinoproject
    Chapter:
    0:00 intro
    0:20 item list
    1:03 FPM11A finger scanner pinout
    2:52 Arduino wiring
    2:57 download fingerprint library
    3:21 enroll fingerprint
    5:47 verify fingerprint code
    6:25 upload verify fingerprint code
    this fingerprint scanner was purchased on Amazon.
    search Amazon ASIN: B07G6L7YDX for the fingerprint scanner module
  • Наука та технологія

КОМЕНТАРІ • 34

  • @yeshalae6
    @yeshalae6 3 місяці тому +2

    hi there, i am a student i wanna know if it is possible to store the data of the enrolled fingerprints in a worksheet like in microsoft excel?

    • @BMonsterLaboratory
      @BMonsterLaboratory  3 місяці тому

      hey! great question. Fingerprint scanners like the FPM11A store the fingerprint templates in their own memory and give you an ID for each enrolled fingerprint. I haven't tried it with this scanner but I believe using the Serial.print() function would allow you to capture data and display it on the serial monitor. You could add a data logger to your project for more long term data collection. This is just my assumption....I'm going to look into it. Thanks for the question!

  • @rjhemy2495
    @rjhemy2495 5 місяців тому +1

    Can this work for a printed fingerprint scan for a game instead of an actual finger?

    • @BMonsterLaboratory
      @BMonsterLaboratory  5 місяців тому

      hey there! I like where you're going with this. I have never tried it but I don't think it would work. The FPM11A uses an optical sensor to capture a high-resolution image of the fingerprint placed on its scanning surface. It extracts detail such as ridges in the fingerprint that are stored and saved for future comparisons and you can't get that from a printed fingerprint.

  • @jhesseyjoseph8448
    @jhesseyjoseph8448 8 місяців тому +2

    Hello Sir
    How do I add two LEDs to the setup and what changes do I add to the code to make the LEDs work?
    Very intuitive video by the way.

    • @BMonsterLaboratory
      @BMonsterLaboratory  8 місяців тому

      Hi there! Do you want a total of 2 LEDs added to this setup? What do you want the LEDs to do? One LED can light up red for failed scan while the other light up green...etc.
      Thanks for the comment! 👍

    • @emeraldmage5265
      @emeraldmage5265 3 місяці тому +1

      @@BMonsterLaboratory hey ik im not the og commentor but like could i maybe have that second one for future endevors?

    • @BMonsterLaboratory
      @BMonsterLaboratory  3 місяці тому

      @@emeraldmage5265 hey there! no problem. do you want the code where one LED can light up red for failed scan while the other light up green? just clarifying..

    • @emeraldmage5265
      @emeraldmage5265 3 місяці тому

      yea @@BMonsterLaboratory

  • @irafabrice
    @irafabrice 3 місяці тому +1

    I want an Arduino codes for fingerprint car engine starter and will have display. Thank you!

    • @BMonsterLaboratory
      @BMonsterLaboratory  3 місяці тому

      I like the idea! sounds like a fun project 👍

    • @irafabrice
      @irafabrice 3 місяці тому

      @@BMonsterLaboratory how can you help me sir?

  • @user-zr1yv8id9w
    @user-zr1yv8id9w 19 днів тому +1

    Adafruit Fingerprint sensor enrollment
    Did not find fingerprint sensor :(
    WHY is ithis happen?? pls help. Are some sensors not working for this code ??

    • @BMonsterLaboratory
      @BMonsterLaboratory  18 днів тому

      It could be a number of reasons. Wire connections, power supply, correct baud rate, update library.... What message are you getting? You're using the Adafruit library?
      could be a bad sensor but you'll have to do some investigating first before you can determine that.
      Are you using the same sensor as the on in the video? Did any debugging info print to the serial monitor?

  • @user-dv1hf7jc7k
    @user-dv1hf7jc7k 5 місяців тому +1

    Hey I am using R307 fingerprint sensor. I have connected the wire and uploaded the code properly but the serial monitor keeps displaying that "Didn't find fingerprint sensor" would you help me please? Thanks.

    • @BMonsterLaboratory
      @BMonsterLaboratory  5 місяців тому

      hey, sorry about late reply. did you get this figured out? did you try any debugging in the code ?

    • @wasalyunus4553
      @wasalyunus4553 5 місяців тому +1

      Hay brother, if you find any solution for it . Please let us know in the comment section. I have the same problem and I don't know how to solve it .

    • @BMonsterLaboratory
      @BMonsterLaboratory  5 місяців тому

      @@wasalyunus4553 hey there! are you having trouble running the Adafruit_fingerprint library ? If you made any changes to a library or your code is different than the code i'm using in the video, can you post it here? If it's too long you can post it to the facebook page.

    • @notVinodRodrigo
      @notVinodRodrigo 3 місяці тому

      I managed to solve this problem for myself. Try swapping the RX and TX on the ESP32

    • @user-zr1yv8id9w
      @user-zr1yv8id9w 24 дні тому

      @@notVinodRodrigo Is this work for arduino uno??

  • @solankiparth760
    @solankiparth760 4 місяці тому +1

    My enrolling process is done but in fingerprint code it shows fingerprint didn't match .... What should i do?

    • @BMonsterLaboratory
      @BMonsterLaboratory  4 місяці тому

      Hi there! Try lowering the confidence. If you set it at 100, try 70.

    • @solankiparth760
      @solankiparth760 4 місяці тому +1

      Thank you so much 😇

    • @BMonsterLaboratory
      @BMonsterLaboratory  4 місяці тому

      @@solankiparth760 you're welcome. good luck with your projects!

    • @solankiparth760
      @solankiparth760 4 місяці тому +1

      Sir I don't know what's going on with my project
      I have put if if condition like if finger.cofidence < 70 then it should print our confidence level finger
      But now it's showing multiple I'd with same finger like for same finger sometimes show id 2 and sometime I'd 3 with confidence level of 2 or 3
      Please help me

    • @BMonsterLaboratory
      @BMonsterLaboratory  4 місяці тому

      @@solankiparth760 clean the surface with alcohol, even oils from your finger can throw it off. Does your conditional check look something like this? if (finger.fingerID > 0) {
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
      if (finger.confidence < 70) {
      Serial.println("Confidence level too low!"); ? adjust the confidence 70, 80, 85...see what works best.

  • @anilasivan8449
    @anilasivan8449 4 місяці тому +1

    Can u just put the code in the description

    • @BMonsterLaboratory
      @BMonsterLaboratory  4 місяці тому

      #include
      #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
      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("

      Adafruit Fingerprint sensor enrollment");
      // 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) { 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);
      }
      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("Ready to enroll a fingerprint!");
      Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as...");
      id = readnumber();
      if (id == 0) {// ID #0 not allowed, try again!
      return;
      }
      Serial.print("Enrolling ID #");
      Serial.println(id);
      while (! getFingerprintEnroll() );
      }
      uint8_t getFingerprintEnroll() {
      int p = -1;
      Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
      while (p != FINGERPRINT_OK) {
      p = finger.getImage();
      switch (p) {
      case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
      case FINGERPRINT_NOFINGER:
      Serial.print(".");
      break;
      case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      break;
      case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      break;
      default:
      Serial.println("Unknown error");
      break;
      }
      }
      // OK success!
      p = finger.image2Tz(1);
      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;
      }
      Serial.println("Remove finger");
      delay(2000);
      p = 0;
      while (p != FINGERPRINT_NOFINGER) {
      p = finger.getImage();
      }
      Serial.print("ID "); Serial.println(id);
      p = -1;
      Serial.println("Place same finger again");
      while (p != FINGERPRINT_OK) {
      p = finger.getImage();
      switch (p) {
      case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
      case FINGERPRINT_NOFINGER:
      Serial.print(".");
      break;
      case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      break;
      case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      break;
      default:
      Serial.println("Unknown error");
      break;
      }
      }
      // OK success!
      p = finger.image2Tz(2);
      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!
      Serial.print("Creating model for #"); Serial.println(id);
      p = finger.createModel();
      if (p == FINGERPRINT_OK) {
      Serial.println("Prints matched!");
      } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
      Serial.println("Communication error");
      return p;
      } else if (p == FINGERPRINT_ENROLLMISMATCH) {
      Serial.println("Fingerprints did not match");
      return p;
      } else {
      Serial.println("Unknown error");
      return p;
      }
      Serial.print("ID "); Serial.println(id);
      p = finger.storeModel(id);
      if (p == FINGERPRINT_OK) {
      Serial.println("Stored!");
      } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
      Serial.println("Communication error");
      return p;
      } else if (p == FINGERPRINT_BADLOCATION) {
      Serial.println("Could not store in that location");
      return p;
      } else if (p == FINGERPRINT_FLASHERR) {
      Serial.println("Error writing to flash");
      return p;
      } else {
      Serial.println("Unknown error");
      return p;
      }
      return true;
      }

    • @BMonsterLaboratory
      @BMonsterLaboratory  4 місяці тому +1

      hi there. I can't always put code in the description or comments because sometimes it won't fit. This one is a Adafruit_Fingerprint.h library example, i was able to put it here in the comments. If you ever want it posted here or emailed to you, just ask...no problem at all. Good luck! This module is fun to play around with. 👍