A76 Fingerprint Sensor

0 views
Skip to first unread message

Elva Stuller

unread,
Aug 3, 2024, 5:10:06 PM8/3/24
to grovothochna

Secure your project with biometrics - this all-in-one optical fingerprint sensor will make adding fingerprint detection and verification super simple. These modules are typically used in safes - there's a high powered DSP chip that does the image rendering, calculation, feature-finding and searching. Connect to any microcontroller or system with TTL serial, and send packets of data to take photos, detect prints, hash and search. You can also enroll new fingers directly - up to 162 finger prints can be stored in the onboard FLASH memory.

We like this particular sensor because not only is it easy to use, it also comes with fairly straight-forward Windows software that makes testing the module simple - you can even enroll using the software and see an image of the fingerprint on your computer screen. But, of course, we wouldn't leave you a datasheet and a "good luck!" - we've written both a Arduino library and CircuitPython library, so that you can get running in under 10 minutes. The library can enroll and search so its perfect for any project. We've also written a detailed tutorial on wiring and use. This is by far the best fingerprint sensor you can get.

Adafruit NeoPixel Digital RGB LED strips come to us in 4 or 5 meter reels with a 2 or 3-pin JST SM connector on each end and separated power/ground wires as shown in the picture below. If you order a full 4 or 5 meters, you get the full reel with both connectors installed.

If you buy less than a full reel, you'll get a single strip, but it will be a cut piece from a reel which may or may not have a connector on it. If the piece comes from the end of the reel, the connector may be on the output end of the strip!

I frequently have the fingerprint reader stop working. My workaround is to open the device manager as administrator, uninstall the device (without deleting the driver) and scan for hardware changes.
It seems to be a driver issue, that the driver crashes.
Is there a fix planned?

But when I write any number it doesn't work and I found that if I write a letter and a number in any order, for example, 5x, the sensor turns on and captures my fingerprint but when I upload the show_fingerprint_templates, to see if it really saved the fingerprint, there is nothing saved.
Anyway I don't think is ok to type a letter to make it work. It is supposed to store the IDs using only numbers, I watched videos where it works like that.

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!

If you have no line terminator set in that drop down list, and you type a number like "5" in the output box and click send, it will send that digit 5, and then nothing else (because that's what "no line terminator" means.) The code will receive the 5, add it to the id variable, and then wait for more characters, but none will be received.

If you send it a "5x", the code will see the digit 5, and add it to the id variable. It will then read the next character, which is the non-digit x, and the test for isdigit() will return false, so it will drop out of the list and continue with the sketch. The message that prints stating "Enrolling ID #" should simply print that value 5, as the "x" was ignored.

If you turn on a line terminator in the Serial Monitor, like "Carriage Return" as shown in the pictures on the Adafruit guide page and then just enter 5 in the output box, when you press Send it will send the 5 followed by a carriage return character. The 5 will be read and processed, then it will go back for the next character which is the carriage return character. That carriage return is not a digit, so it will drop out of the list and continue with the sketch.

Amazing!! again with a simple instruction I got the sketch working. Thank you very much. I enrolled my fingerprints and then I tried to read it from the sensor to get the ID, following the sketch named fingerprint. You can open the image I attached to see the result. It seems like it works because the Serial Monitor is asking for valid finger, but the Sensor does not turn on, it stay off then I can't provide any finger. The part of the code that I think is running is this:

UPDATE, i managed to read the fingerprints through the sensor but just 2 minutes before that, i enrolled 9 of my fingers but when I read the fingerprints, it only recognised the 9th and it said it was the #0 not number 9 as i defined it.

Something else, i have to put the finger fast because if I spend more than 2 seconds the Serial Monitor sends me the message "No finger detected" and it turns blocked, it doesnt work until i re-upload the sketch.

I think there are more people like me, looking for answers rather than providing them hehe. We need more information online, fortunately I found the solution to this problem and if someone else is facing the same problem, here it is how i solved it:

The use of an lcd was only to check if it was working but basically what helped me was the WHILE loop. I don't know what was the reason the function the Arduino LOOP didn't work, but when i used while, it worked perfectly.

Now that you have it working, try removing just the while (1) portion of your loop and try it again. There is no reason it shouldn't work unless you have something really strange going on elsewhere in the sketch.

And that's a key concept: when you're looking for help, you really need to post your entire sketch if you want good help. You posted the entire enrollment sketch, but you've only posted little snippets of your current sketch.

You are posting the section of code where you think the problem might be. But in reality, you don't know what is the actual problem (if you did, you wouldn't be asking for help) so you don't really know where the problem might be. Often times, it can be something that seems innocuous in another part of the sketch, and that is what is causing the problem.

But then you're assuming that everybody has that sensor library, and that it's exactly the same version as the copy you have found. Neither assumption is valid - I don't have that library, and if I went searching for it, it might be a different version than what you have.

Your best bet is to post the code, as you just did, or if you done no changes at all, post a link to the exact file you downloaded and are running. If you don't you're asking the people who are offering you free help to go out of their way to find the files they need to answer your questions. The easier you make it for people to answer the question, the more likely you are to get good answers. Make it too hard to get the information they need, and they may just move on to the next question without helping. It's human nature.

Correct, they don't work the same. They use different processors, and there there are some differences in the way some pins behave. For example, on an Uno R3, the I2C pins are on their own dedicated header pins, but they are also duplicated on pins A4 and A5. On the Yun, the I2C pins are on the same dedicated header pins, but they are also duplicated on pins 2 and 3, not A4 and A5. Because of that, if you have a shield or circuit that uses I2C and also pins 2 and 3 for something else, then that will probably work on an Uno R3, but not on a Yun.

Another difference between the Uno and Yun is that not all pins on the Yun can receive interrupts, so not all pins can be used to receive data with software serial. That's why you had to change one of your software serial lines from the sensor from pin 2 on the Uno to pin 8 on the Yun.

Oh, wait a minute, I see now, this is the full version that works because of the added while loop. For the sake of experimentation, I would try it without the added while loop, but call getFingerprintID() instead of getFingerprintIDez(). It looks like that version will print out a lot more diagnostic information, data that the ez version doesn't print. Seeing what messages it prints out on the serial port might give some clues as to what's happening?

Another thing to try is to remove the LCD screen and the code for it, and see if it works while printing your displayed message on the serial port. Maybe there is a conflict with the LCD screen? (There are differences in the timers and underlying interrupt hardware - there may be a conflict that shows up with the Yun's processor that doesn't happen with the Uno's processor?) I've used software serial on the Yun, and I've used the LiquidCrystal library on the Yun, but I've not tried both at the same time.

Now I am sharing all. I did what you told me, i deleted the while loop and run the sketch. I got the same result. It can read immediately when the sketch is loaded but after it doesnt find any finger, it gets blocked. Like it's not following the loop.

From the fact that "Image taken" is printed out several times, it would appear that the loop() function is indeed getting called repeatedly. If you doubt this, you could confirm that it's happening by making a print statement inside loop() - if it keeps on printing, you know the loop is running.

You can see that I added to print messages, one before and after the fingerprint function call. If you keep seeing the output from these two new messages, even after the other fingerprint related messages stop, you know the loop() function is still getting called, and there is something in the library that is preventing it from working properly.

If you see the "Getting fingerprint" message, and the output stops, and you don't see the "Returned from getting fingerprint" message, you know that something in the library got hung up and the function never returned.

If the last thing you see is the "Returned from getting fingerprint" message, then there is a good chance that something drastic has indeed happened, and the loop() function is no longer getting called. That shouldn't normally happen.

c80f0f1006
Reply all
Reply to author
Forward
0 new messages