I want to do a project with fingerprint access control. But my client wants one on both sides of the door (inside and outside). Now I am using this product Adafruit Fingerprint module but I don't want to enroll each person on each fingerprint module. I want to look at enrolling each employee on 1 of these modules and then via arduino "SYNC" the fingerprint models between each other. Is this possible? Can someone maybe point me in the right direction or am I just insane HAHAHA. Look I can do the route of programming/enrolling each person on each module. But we life in a real world and at some point the fingerprint model/id's are not going to match up. And then there is going to come a problem with my online software. As well sorry for my bad lanuage :)

  • How many Arduinos are you using? Describe your current setup. How are the Arduino(s) achieving internet connectivity? What is the nature of your web server? Apr 15 '16 at 22:46
  • Current setup is each fingerprint module has its own arduino uno. But ideal I just want to use 1 arduino and have both connected. I am using a ESP8266 loaded with the arduino IDE which connects to my Linux Server/Website
    – Dev Expert
    Apr 16 '16 at 7:22
  • TisteAndii Is that using an adafruit fingerprint library, another one or are those direct commands that can be sent over serial to the fingerprint module?
    – freshbtcer
    Nov 4 '17 at 22:53

You should get an Arduino Mega, if you arent using one already. You'll need the SRAM and Serial ports.

When I used this module, I didnt have enough time to experiment with it but here goes:

The enroll command for the FPM10 sensor takes an image of a fingerprint, processes it and finally creates a 512-byte model/template that is stored in flash memory with a unique ID (PageID) and used for future comparisons. However, it is also possible to read those templates from the flash memory with a few commands. You have not said much about the role your web server plays here, so I'll assume its possible for you to store data easily and that its responsible for authorizing fingerprint enrollment and deletion. Since you have more than one sensor, a general solution to your problem would be:

  • The server must keep a record of available fingerprint IDs
  • When instructing the Arduino to begin enrollment, the server must also send along a fingerprint ID, based on its records of what ID is free. IDs may be assigned sequentially at first but templates may be deleted, leaving holes, hence the need for the server.
  • The Arduino begin()s the current sensor where the user is located and performs the normal enrollment. As soon as enrollment is done, the template that was just stored, should be loaded by the Arduino from the module's flash library and into one of its character file buffers using the LoadChar command. The only parameters for this command are the BufferID and the PageID.
  • Then the Arduino should download the template from the character file buffer into a 512-byte buffer that you will create in the Arduino SRAM. The command needed here is the UpChar command and its sole argument is the BufferID of the buffer to be read from. As soon as confirmation is received from the module, the sensor begins sending the 512-byte template in packets of 32 bytes (by default), each with a packet identifier of 0x02 until the last packet which has a package identifier of 0x08.
  • Then the Arduino begin()s the other sensor and sends the DownChar command to the module, which tells the sensor to expect a template to be stored in one of its character buffers (must be specified in the command). Once the Arduino receives confirmation, it should start sending the template to this sensor, using the same packet size and format that has been set for that sensor 9or the default I mentioned before if it hasnt been changed).
  • Finally, the Arduino sends the Store command to the sensor, to store the template in the buffer you just wrote to, into its flash library using the same fingerprint ID it was stored with in the first sensor.
  • The Arduino may then send confirmation to the Linux server, which then adds the fingerprint ID to the list of used IDs.

Now both sensors have identical fingerprint libraries and may be used to match fingerprints and get the same results. Deletion of fingerprints may also follow the same process: the server commands the Arduino to delete a print with a given ID and the Arduino sends the DeleteChar command to both sensors. All the commands I mentioned here are in the sensor's datasheet, which you must have downloaded along with the Adafruit library.

Use 57600 baud to communicate with the sensors, for reliable results. This is my fork of the Adafruit library with more functions available and without the buffer overflow issues. It should make the interfacing tasks a lot easier.

  • This is excellent. Thank you so much! I now have a clear line to work with!
    – Dev Expert
    Apr 18 '16 at 19:50

Yes, you can easily do that. This finger Print sensor works over Serial communication.

You can have multiple Serial devices connected to your Arduino UNO using SoftwareSerial library.

All you have to do is to create multiple instances of Adafruit_Fingerprint initialized with different SoftwareSerial objects. i.e.

// pin #2 is IN from sensor1 (GREEN wire)
// pin #3 is OUT from arduino to sensor1  (WHITE wire)
// pin #8 is IN from sensor2 (GREEN wire)
// pin #9 is OUT from arduino to sensor2  (WHITE wire)
SoftwareSerial mySerial1(2, 3);
Adafruit_Fingerprint finger1 = Adafruit_Fingerprint(&mySerial1);
SoftwareSerial mySerial2(8, 9);
Adafruit_Fingerprint finger2 = Adafruit_Fingerprint(&mySerial2);

Now, you can use finger1 and finger2 for your finger print operations. (previously referenced as only finger)

In order to understand Serial Communication with multiple serial devices, have a look at this Arduino.cc Offical tutorial.

Hope it helps.

Not the answer you're looking for? Browse other questions tagged or ask your own question.