-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
R551 support #8
Comments
They're probably just hidden commands, occupying the reserved range. But I remember 0x50 and 0x51 are for turning on/off the LED for ZFM60 modules, perhaps that's also the case here. But there are no issues with the library, right? |
0x50 and 0x51 don't do anything, the green led stays lit... Rest of the library works so far. |
Depends on how well you've verified that it does only what you say it does. If there's no supporting documentation, we'll have to rely on observations alone. You measured the 10uA? How sure are you of your results in general? |
I cannot find any datasheet for the R551 module or the µC PM6542A which it uses. I've contacted the seller as well as GROW directly but haven't got a response yet. I primary look for a way to control the red LEDs ... |
Okay, now I also found some problems with the library. Your "show_fingerprint_template" also has issues. I've enrolled
After that, |
Regarding 0x33 and 0x60, it's unlikely that there are 2 commands which do the exact same thing, would be nice if you could figure out the difference between them. Still, I can add the commands as a sort of "light sleep" option. The library is due for a lot of re-structuring anyways. Regarding the get_free_id(), when you say it returns 0, you're not referring to the literal return value of the function, right? I assume you know the function itself returns false if it couldn't find any slot and that the actual free id, if one is found, is stored in the passed "Error receiving packet" means the initial load and upload commands succeeded but the transfer of the template failed at some point, maybe because of an incorrect packet length or even a UART timeout. You can try printing everything thats received beyond the "template 1 loaded" so we can see what arrived, if anything. |
Hey, |
Shame. Will add them anyways when I can, so anybody can test their behaviour and maybe we can figure out the difference between them. You can try the recent library version and examples to see if they now work for the module, especially the templates example. |
I was just following up to see if there had been any progress made on this? I'm about to buy one of these modules, and given the (terrible) documentation available, this is a goldmine for me. I'll be happy to do some testing when I get it... |
Sure. I've added the command, you just call it with the standby() method. You can try out 0x33 or 0x60 by editing the FPM_STANDBY macro in the header. Let me know how it works out. |
I was also wondering if anything ever came of the red/green LEDs, as well. Thanks for the response! |
You're welcome. Since I don't have your module, there's not a lot I can do about the LEDs and I can only spend so much time on this. You can of course try out stuff and if you discover anything interesting, pls let me know. |
Hey, sorry for being so quiet. I've downloaded your latest version today and now I can't get the sensor to read my fingerprint at all... I used your examples as last time, enroll and then search_database:
enroll with debug:
search database with debug:
|
I think I know why the fingerprint search didn't work, basically your module seems to not support the "high-speed" search command 0x1B, so it just echoed the command and parameters it received. I've fixed that in the library, you just need to comment the |
Thank you, with |
Sure, in debug mode, try multiple enroll attempts calling get_free_id() each time but not using the ID it returns, instead set the location manually in the sketch. Also try using your previous version of the library (here, I think) to be sure get_free_id() worked properly then, if it did, then send those debug messages too. |
Okay, I now called
The 2nd byte of the response changes.
|
I see a pattern and the problem I think. The LSb remains 0 but the table of stored IDs does get updated, just off by a bit. Don't wipe the database, try enrolling with IDs 6, 7, 8 so I can confirm the nature of the problem. Send those debug messages too |
Guess that's enough? :)
|
Yeah, it looks like an off-by-one error. For your module, ID 0 corresponds to bit 1 (instead of bit 0) in the index table and it counts as usual from there. Bit 0 is always cleared so get_free_id() returns immediately since that's the first bit it inspects. Will fix and push in a few mins. |
Can you try enrolling at IDs 254, 255, 256, 257? Change the initial value of page to 1 in this line in your sketch when you enroll 256 and 257:
|
I've made some changes, should work for IDs up to the first page's boundary at 254. Whether it will work beyond that depends on the results of the enrollments I requested earlier |
Okay, I'm running out of fingers :D
guess 0x24 means the fingerprint is already saved... now, having only one finger unused, I tried 254 again
now slots 0 1 2 3 6 7 8 254 256 257 are used |
Your module is getting stranger, other modules so far don't care if you enroll the same finger multiple times. I imagine it was a feature the client requested. You can wipe the database if you need to. Since get_free_id() isn't really being used now, replace its current body with just this:
Then enroll 254 - 257 again |
I'm surprised other modules don't complain. How do they match a fingerprint if it is stored in more than one slots? Anyways, here is the debug log:
|
I think they just return the first location where the fingerprint is found, it's up to the user to scan before enrollment and ensure a print doesn't already exist. But you can of course use your module's return code to check for that, you just need an additional case for the 0x24 return value in the switch statement. I've made the changes, you can now test |
@xsrf Did it work? Will be closing this issue |
@brianrho I'm sorry, I just had 10min to test it... but yes, the enroll example now works fine :) |
Hello, So ist this module now fully supported, with the exception of the LED? Regards |
@henfri The situation's the same as stated in the readme. Advanced functionality like image and template downloads still don't work. But if you all want to do is perform enrollments and matching, then you can go ahead. Anything else and you should just get an FPM10 or R307. |
can any one send me the arduino working code for this sensor. Mail id :adarshparavoor@gmail.com |
i am keeping search_database() at main loop, so i can search my fingerprint and send it to server, but every 8 minutes, it disconnects mqtt and not connect to server, then i have to hard reset mcu, |
@ankit993 Create a new issue and provide all the details, including your code and sensor info. |
Hey,
I recently ordered a R551 module ( https://www.aliexpress.com/item/-/32879785395.html ) and it also works fine, as far as I can tell ( just tested enroll / read fingerprint so far ).
I found that sending command 0x33 or 0x60 turn the module into standby (~10µA) until it detects a finger. This also turns the LED and UART off. I cannot find this mentioned in any datasheet.
Also found that sending 0x47, 0x50, 0x51, 0x52, 0x53 or 0x68 returns something - but I don't know what it does.
The module has dual color LEDs (red/green) but I haven't found a way to control them... It's always green, or off in Stand-By.
The text was updated successfully, but these errors were encountered: