Site icon Joseph Mwema – Biometrics Engineer

Raspberry Pi Biometric Integration in Python

I recently developed a Software Application solution in Python 3 on my Raspberry Pi 4 B board for Raspberry Pi Biometric Integration using a DigitalPersona 4500 Fingerprint Scanner.

Raspberry Pi Biometric Authentication PACK using Digital Persona Fingerprint Scanner

I will be telling you shortly a little story about what compelled me to develop this Raspberry Pi Biometric Software Application in Python. It is about a prospective client in Middle East. So, hang in there and read on!

I can use just about any Fingerprint Scanner to code a Biometric Software Application with but I often use DigitalPersona series of Fingerprint Scanners for most of my work and Biometric Integration Projects.

By the way I have a large collection of Fingerprint Scanners at my disposal that I have acquired and accumulated over the years from working on various diverse Biometric Integration Software Projects.

If this is the first time you are visiting Jomutech Systems’ website, let me first start by introducing myself to you.

I am a Biometrics Engineer by Profession and I Help People like You, Companies and SMEs to Integrate Biometrics in Software Applications for Linux, Windows, Android, Web, Cloud and Raspberry Pi Platforms.

Take time to go thru the Jomutech Systems’ website to see some of the Biometric Projects I have worked on and integrated with Biometrics in the past on Linux, Windows, Web, Android and Raspberry Pi.

Raspberry Pi Biometric Registration in Python

Motivation for Developing a Python based Raspberry Pi Biometric Authentication Software Application

Description of a real life use case of Biometric authentication system running from a Raspberry Pi board.

Talking about helping People with Raspberry Pi Biometric integration, in the middle of 2019 some client hopeful from Middle East reached out to me.

They had developed this unique retail software solution that uses Biometric Fingerprint Authentication powered by a series of Raspberry Pi boards for controlling access to their unmanned shops.

I am calling it retail solution because they use it in that context.

A simple description about the use case for their Biometric controlled unmanned shop as was described by them to me at that time was as follows;

  1. Client visits unmanned shop and unlocks the entrance door with their Biometric enrolled Finger.
  2. Once inside the unmanned shop, Client accesses a variety of lockers in the hall way with items and products on sale that they can buy with everyone of them encased in a Glass walled unit with a Biometric lock controlled and Powered by Raspberry Pi board.
  3. Client presents their finger on Biometric lock to unlock the Glass locker unit with the product that they want to shop and repeat the same for the other products and items that they want to shop in the unmanned shop.
  4. During unlocking of a locker containing a product that client wants to buy, fingerprint data is captured and compared other previously enrolled fingerprints in the fingerprint scanner before a decision is made to unlock the product locker or deny access to it.
  5. Finally, once item is pulled from the biometric controlled lockers, data for the item is displayed on a small screen powered by the Raspberry Pi next to the locker. There were supposedly as many Raspberry Pi boards as there were lockers with items and products for shopping.

Do not ask me how their solution was able to determine if only one item packet and not two or more item packets had been pulled from the unmanned shop lockers after Biometric Authentication because that was not explained to me. I would have also wanted to figure out the same but I think they have a bar code where you run the item you have picked for the pricing to be picked and quantity to be reduced.  

Let me show you at what point I come in and why they reached out to me.

So the guy who is behind this unmanned retail shop solution of theirs finds out that there are unacceptable delayed speeds for their clients between the time a client places their finger on the biometric lock for authentication and the time the biometric locker gives a decision on whether to open the item locker or not.

I observed that they had programmed it to do a beep and then unlock the item locker for client to pull out the item after a successful biometric authentication.

To first understand how their Biometric Authentication software solution worked, I asked about the type of Fingerprint Scanners they were using and how they were doing the Biometric Authentication and the number of Persons they had their Biometric data enrolled.

I established that their entire solution was coded in Python.

The Biometric Fingerprint Authentication was happening inside the Fingerprint Scanner memory! Yeah inside the Fingerprint Scanner memory. I will highlight something about this later on as I describe the solution I was proposing to them.

The Fingerprint Scanners were connected, installed and run from Raspberry Pi boards adjacent to them.

Every item locker had a Fingerprint Scanner module connected to a Raspberry Pi board that controlled access to it.

Since Biometric Authentication was happening on the respective Fingerprint Modules, there was bound to be some bottle necks to deal with.

First and foremost, there was a limit to the number of Biometric Fingerprint that could be archived inside the Fingerprint Scanner Module memory

Secondly, there was bound to be a reduction in speed of Biometric Authentication with increasing number of Biometric Fingerprints loaded in the Fingerprint Scanner Module at any one given time.

Though I was not able to determine how many Persons they had enrolled and how many more they were expecting to bring onboard for this retail solution and how many Biometric Fingerprints they had enrolled per individual, I am imagining that if the number of Fingerprints were more than the Fingerprint Scanner could handle, they had to load the Fingerprints Biometric Data in batches to compare them against the presented Fingerprint and this would have implicitly contributed to the prolonged Biometric Authentication speeds especially if the client’s presented Finger was not featuring among the first batches of Biometric Fingerprint Data loaded onto the Fingerprint Scanner Module’s memory for purposes of Fingerprint Authentication.

Raspberry Pi Biometric Authentication in Python

My Proposed Raspberry Pi Biometric integration solution using Python and Raspberry Pi 4 B boards

With this background understanding of how their unmanned biometric controlled retail solution worked, I will now demonstrate to you the solution that I was proposing to them and how I ended up developing this Python based Biometric Registration and Authentication software application that runs on Raspberry Pi 4 B boards.

So, first things first!

At the time this client was reaching out to me, I did not have any ready operational Raspberry Pi Biometric solution developed in Python that I could help them integrate with to resolve the problems that they had made me understand were the issues they were grappling with which they wanted me to give them a helping hand with.

What I had was a Python based Biometric Fingerprint Authentication solution that I had developed for Linux based operating systems but I knew it only needed to be recompiled on Raspberry Pi for it to work on Raspberry Pi boards.

The Python based Biometric Fingerprint Authentication solution that I had for Linux based operating systems later on after I had worked on it and recompiled it to work on Raspberry Pi 4 B boards on Raspbian OS 10 is now able to save unlimited number of Biometric Fingerprint Data into a Mariadb RDBMs and perform at least 10,000 Biometric Fingerprint Templates per 1 second in a Raspberry Pi 4 B board with 4Gb RAM.

I was telling my prospective client that the first hurdle they needed to deal with was to stop doing Biometric Fingerprint Authentication inside the Fingerprint Scanner Module memory as it is limited in capacity. My suggestion was that they have the Biometric Fingerprints Data in a Centralized Database on a Server somewhere from where the Raspberry Pi boards could send the presented Biometric Fingerprint Data from Client for Biometric Fingerprint Authentication then based on the decision received of whether there was a Fingerprint MATCH FOUND or NO Fingerprint MATCH the Raspberry Pi boards could then process the result decision to further open or no open the locker shelves with items and products for sale.

This suggestion I was proposing to them of having a centralized RDBMs Database like MySQL or Mariadb or any other SQL based RDBMs in which they could archive all Biometric Fingerprint Data in one place did not seem to be… well I doubt whether they really understood the rationale behind it because when the lead developer ( could have been their software engineering manager I presume ) who was liaising with me from their end put thru a conference with his other software developers, himself and I ( you know the way managers setup and stir up an us versus them type of thing to get the best of both sides for actioning ), the vocal software developer in that conference who seemed to have his way was so against archiving Biometric Data in a Centralized Database somewhere which could be assessed by all the Raspberry Pi boards in their unmanned shop retail solution.

The software developer in that conference call did not want anything to do with the Biometric Fingerprint Data getting archived outside the Raspberry Pi where their Fingerprint Scanner modules could load it in batches into their memory.

This sounded strange to me because in my view, having a centralized database somewhere which could be easily updated every time a new client and their Biometric Data was added to the list of existing clients it would have been a smooth and easy alternative to replicating Biometric Data archived in one Raspberry Pi to all other Raspberry Pi boards.  

This can further be looked at differently this way, their Raspberry Pi boards would need to be repopulated again with updated Biometric Data every time new clients came on board and needed to be able to access all the product item lockers that are controlled with Biometrics.

Raspberry Pi Biometric Enrolled Data in Mariadb Database

Secondly, their modus operandi transferred the same problem from one biometric controlled item locker to another because there was no way Biometric Authentication speeds could improve with increasing number of Clients and growing number of their Biometric Data.

Also, loading Biometric Data on a limited memory capacity of a Fingerprint Scanner module for purposes of Fingerprint Authentication as they were doing and insisting on continuing to do the same repeatedly for every one of their product item lockers controlled by Biometrics instead of doing Fingerprint Authentication on a Computer Server Memory or the memory of advanced Raspberry Pi boards like those ones that ship with 4Gb RAM was not helping alleviate anything.  

At this point, it was plain obvious that they truly needed an infrastructure that they could scale up with their continued growth of clientele group and the most viable solution in my take as per that time that I could suggest to them was for them to move the Biometric Data to a centralized server somewhere e.g. like a cloud based server whose Biometric Database storage space could be expanded, whose processing speeds can be increased, whose number of processing nodes could be increased.

Before the conference call, I think a day or two before, their lead developer ( the guy I presume to have been their software manager ) had sent me the full software code for their unmanned retail shop software solution to integrate with the biometric solution I was proposing to them. To be honest I never even got to pore over it after the conference call because, they never got to respond nor reply again to any of my follow up e-mails like they had previously done on days leading up to the conference call.

So without knowing whether they were going to get in touch with me to discuss the way forward or being that they had now gotten the ideas they needed from me to cross the hurdle ahead of them and no longer needed anything else from me, they could have as well gone ahead and implemented it the way I was proposing to them or even found a better way of doing it. I never got to know what ensued afterwards from their end as they never communicated back.

I love those projects where the client is experimenting with something new, something out of their comfort zone and they are willing to explore uncharted waters and they are entrusting you to take the lead reigns as a consultant to guide them all thru and avail the solution they are looking for. These are the projects I get attached to such that even when they are completed and handed over to client, I still wish that project was still ongoing because a part of my life had become involved and accustomed to the routine of working on it to bring it to fruition. In my mind I was envisaging that this particular prospective client was bringing one of those Biometric Projects but it never happened.

I swear, to date I still feel hesitant to offer all the tech solution and advise a client needs to implement their solution forthwith without them committing to the project. I have had these encounters one too many times to even compare and contrast which one was the most shrewd than the next one.

Developing the Raspberry Pi Python based Biometric Authentication using a Raspberry Pi 4 B board with 4Gb RAM.

Sometimes in June of 2019, Raspberry Pi 4 B boards with options of having one with RAM categories of 1Gb, 2Gb and 4Gb were availed to the market.

I figured out the Raspberry Pi 4 B board with 4 Gb RAM category would be the perfect and ideal platform for implementing the Python based Biometric Authentication solution that could perform Biometric Authentication on the Raspberry Pi chip board instead of doing Fingerprint Authentication inside a limited memory capacity of Fingerprint Scanner Module.

 My prospective client was using the Raspberry Pi 3 B+ boards. The now new series of Raspberry Pi 4 B boards with 4 Gb RAM would have given them more leverage to do more especially if they would have decided to do it the way I was proposing for them to do it but now on the Raspberry Pi 4 B board because  with a 4 Gb RAM category, it is almost the equivalent of a Core i3 Computer with which you can do so much computer processing with and have a lot more of memory ( 4 Gb ) to run more tasks on a Raspberry Pi board.

Without much ado, I placed an order for the Raspberry Pi 4 board with 4 Gb RAM and set out to implement this whole solution entirely on my Raspberry Pi .

Pre-requisite steps for preparing Raspberry Pi for installing and running a Python based Software Application

At the very beginning, one of my worries was whether I would be able to install an RDBMs like MSSQL or MySQL or Oracle on my Raspberry Pi because I was already aware of the resource intensive nature of these RDBMs applications and I knew about the limitations of Raspberry Pi boards. Unlike Desktop Computers and Laptops, you cannot upgrade some of the on board specifications in a Raspberry Pi board like RAM or Processor.

Before I could experiment with either MSSQL, MySQL or Oracle Databases, I decided to try out Mariadb which turned out to be a significant success than I had tried out e.g. MySQL or MSSQ or Oracle which are usually bloated and occupying a lot of Computer Disk Space. Furthermore, I do not know if they are even supported in Raspberry Pi OS platforms like the Raspbian OS 10 that I use on my Raspberry Pi 4 B board.

Here is a snapshot of the Biometric Database I created for my Raspberry Pi Biometric integration inside Mariadb RDBMs database.

Raspberry Pi Biometric integration Database

Raspbian OS 10 already comes preinstalled with Python 2 and Python 3. So there was not much needed on my end to install Python.

I chose to use Python 3 as I had read somewhere on the Python forums that they will cease support of Python 2 in favor of Python 3. Even though latest versions of Python 2 and Python 3 are almost updated simultaneously, using Python 3 is more progressive than using the latter.

Here is a snapshot of the commands you can type on the Raspberry Pi Terminal to determine the versions of Python already pre-installed.

Python Version

The Fingerprint Scanner I chose to use for my Raspberry Pi Biometric integration Python Software is the DigitalPersona 4500 Fingerprint Scanner though I could have used just about any other Fingerprint Scanner.

Here is a snapshot of the DigitalPersona 4500 Fingerprint Scanner I used.

Digital Persona 4500 Fingerprint Scanner

With everything all set, I developed the Python based Software for Biometric Registration and Authentication on my Raspberry Pi 4 B board while connecting to it via VNC viewer from my workstation computer.

Here is a video of How to do Biometric Registration in Raspberry Pi Biometric Integration using the Raspberry Pi Python Biomeric Software Application I developed in Python 3 while using a DigitalPersona 4500 Fingerprint Scanner.

Here is a video of How to do Biometric Authentication in Raspberry Pi Biometric Integration using the Raspberry Pi Python Biomeric Software Application I developed in Python 3 while using a DigitalPersona 4500 Fingerprint Scanner.

Let me know if you need Premium based support developing and integrating Biometric Authentication and Biometric Registration in your Raspberry Pi based Application whether it is on Python or another language or even if it uses DigitalPersona series of Fingerprint Scanners or any other Fingerprint Scanners. I will help you!

Contact Joseph Mwema for Biometrics Support

Should you need Help to integrate Biometric Fingerprint Authentication in your Python Software Applications? I will show you how I did it here at Jomutech Systems and I can Help your Company, Organisation or Institution to integrate with this also!

If you need help with Python Django Web Framework based solution for implementing Biometric Fingerprint Authentication on Python Django Web Browser based Applications, please make sure you check out this Python Django Biometric Authentication PACK solution.

Exit mobile version