Raspberry Pi Fingerprint Sensor zur Authentifizierung nutzen

7. April 2017
4688 Views
18 Comments

Nicht nur in Hollywood Filmen werden Fingerabdruck Leser immer häufiger gesehen. Solche Module sind oftmals in Heimüberwachungssystem eingebaut und dienen der einfachen aber sicheren Verifikation von Personen. Mit einem solchen Raspberry Pi Fingerprint Sensor kann man auch einige andere Projekte, wie gesicherten Schlössern, realisieren.

Einer der Vorteile ist, dass komplett auf Passwörter bzw. Zahlencodes verzichtet werden kann. Zwar ist dies weiterhin möglich, aber ohne doch um einiges bequemer. Um zu beginnen, geht es in diesem Tutorial um den Anschluss sowie das Auslesen, Speichern und Verifizieren von eingelesenen Fingerabdrücken.

 

Zubehör

Raspberry Pi Fingerprint Sensor ttyUSB0 UART Konverter

Ein USB TTL Adapter mit 3.3V und 5V Spannungsausgang kann für viele serielle Module verwendet werden.

Diese Sensoren wurden ursprünglich für den Arduino entwickelt und können über UART ausgelesen werden. Der Raspberry Pi hat zwar zwei Pins (Pin 8 / GPIO14 und Pin 10 / GPIO 15), allerdings arbeiten diese mit 3.3V. Da es verschiedene Fingerabdruck Sensoren gibt, die nicht alle mit 3.3V arbeiten, bietet sich ein USB UART Konverter an. Einige Modelle können sowohl 3.3V als auch 5V Spannung ausgeben. Diese eignen sich besonders (auch in Verbindung mit einem Arduino).

Folgendes wird also benötigt:

Beachte in der Artikelbeschreibung, welche Spannung dein Sensor benötigt. Meiner braucht 3.3V Eingangsspannung, allerdings wollen z.B. andere Modelle eine Spannung zw. 3.8V und 6V. Die Spannung ist gleich entscheidend für den Anschluss.

 

Anschluss des Raspberry Pi Fingerprint Sensor

Der USB Adapter ist beschriftet, die Kabel des Fingerprint Sensors hingegen nicht. Die Kabel haben allerdings eine eindeutige Farbe, mit Hilfe der wir sie identifizieren und an den USB Konverter anschließen können. Wir benötigen nur vier der Kabel (falls dein Fingerabdruckssensor mehr hat, kannst du die restlichen Farben ignorieren):

  • Rot: Je nach akzeptierter Spannung des Sensors an 3.3V oder 5V.
  • Weiß: RXD
  • Grün: TXD
  • Schwarz: GND

Falls dein Sensor eine höhere Spannung als 3.3V möchte (und der Maximalwert größer/gleich 5V ist), kannst du das rote Kabel getrost an den 5V Pin anschließen.

Um zu prüfen, ob die Verkabelung richtig ist und ob der Sensor erkannt wird, kannst du deine Konsole öffnen und vor und nach dem Anschließen folgendes ausführen:

ls /dev/ttyUSB*

Falls keine anderen seriellen Geräte über USB angeschlossen sind, sollte zunächst nichts angezeigt werden und danach /dev/ttyUSB0. Bei abweichendem Namen (weil z.B. noch andere Geräte angeschlossen sind), musst du dies in den folgenden Schritten entsprechend anpassen.

Zweite Variante per GPIO’s

Sofern du einen Sensor mit 3.3V benötigter Eingangsspannung hast, so kannst du diesen auch ohne USB Konverter direkt an die GPIOs anschließen. Theoretisch geht dies auch bei 5V mit einem TTL Konverter (wie hier gezeigt), worauf ich in diesem Tutorial aber nicht näher eingehe. Ein Vorteil der USB Variante ist, dass man einfacher überprüfen kann, ob der Sensor erkannt wurde.

 

Installation der Raspberry Pi Fingerprint Bibliothek

Für einige Befehle, die für die Installation nötig sind, sind Root-Rechte erforderlich. Daher starten wir ein Terminal und tippen folgendes ein, was alle folgenden Befehle als Root ausführt:

sudo bash

Nun fügen wir die benötigten Paketquellen hinzu (der Autor hat übrigens auch noch einige andere spannende Projekte):

wget -O - http://apt.pm-codeworks.de/pm-codeworks.de.gpg | apt-key add -
wget http://apt.pm-codeworks.de/pm-codeworks.list -P /etc/apt/sources.list.d/

Anschließend aktualisieren wir die verfügbaren Pakete und installieren die Python Bibliothek:

apt-get update
apt-get install python-fingerprint --yes

Falls ein Fehler aufgetreten ist (insbesondere, dass nicht alle abhängigen Pakete installiert wurden), führe anschließend noch folgendes aus:

apt-get -f install

Um zurück in die normale Shell (unter dem Pi Nutzer) zu kommen, führe exit aus.

Übrigens: Wer lieber eine  C++ Bibliothek nutzen möchte, kann sich diese von Adafruit (ursprünglich für Arduino) ansehen. Der Code der Python Bibliothek ist auf Github verfügbar.

 

Testcode & Beispielszenario

Als erstes machen wir einen kleinen Test, um zu sehen, ob der Sensor erkannt und zugriffsbereit ist. Dazu führen wir eine der angehängten Beispieldateien aus:

python2 /usr/share/doc/python-fingerprint/examples/example_index.py

Insgesamt können bis zu 1000 verschiedene Fingerabdrücke gespeichert werden. Dabei kann ein Finger auch mehrfach z.B. in unterschiedlichen Positionen gespeichert werden, damit sie schneller/eindeutiger erkannt werden. Folgendes sollte erscheinen, womit du durch die Wahl einer Seite (0-3) die Positionen anzeigen lassen kannst, unter denen ein Abdruck gespeichert ist.

Sofern die Fehlermeldung „Exception message: The fingerprint sensor port „/dev/ttyUSB0″ was not found!“ erscheint, so stimmt etwas mit der Verkabelung bzw. dem Sensor nicht. Überprüfe ihn erneut.

Speichern und auslesen

Anbei sind auch Beispieldateien zum Speichern eines neuen Abdrucks, Auslesen sowie löschen gespeicherter Fingerabdrücke. Fangen wir an und speichern zunächst einen Finger. Rufe folgendes auf:

python2 /usr/share/doc/python-fingerprint/examples/example_enroll.py

Leg nun deinen Finger auf die Glasfläche, warte auf die Anweisung im Terminal und entferne deinen Finger wieder, sobald es dort steht. Anschließend musst du deinen Finger noch ein zweites mal zur Verifikation auflegen und der Abdruck ist an der nächsten freien Stelle gespeichert.

Wir wollen nun auch sehen, ob unser Finger erkannt wird. Entferne deinen Finger also wieder vom Sensor und rufe folgendes Skript auf:

python2 /usr/share/doc/python-fingerprint/examples/example_search.py

Lege deinen Finger wieder darauf. Falls der Fingerabdruck am Raspberry Pi erkannt, so erscheint eine solche Nachricht:

Currently stored templates: 2
Waiting for finger...
Found template at position #1
The accuracy score is: 63
SHA-2 hash of template: 3aa1b01149abf0a7ad0d7803eaba65c22ba084009700c3c7f5f4ecc38f020851

Hierbei wird zusätzlich auch noch ein Genauigkeitswert angegeben (umso höher, umso besser).

In diesem Verzeichnis sind übrigens noch weitere Skripte, mit denen du gespeicherte Abdrücke löschen kannst oder diese gar als Bild laden kannst. Mit ls /usr/share/docs/python-fingerprint/ kannst du dir alle anzeigen lassen.

Ich habe daraus mal ein kleines Video als Vorgeschmack erstellt:

 

 

Besteht weiteres Interesse an Projekten mit Fingerprint Lesern (Tresore, etc.)?

18 Kommentare

  1. Super Video und tolle Anleitung, sehr gut beschrieben! Ich habe da nur eine allgemeine Frage, ist es möglich an den Kabeln des Sensors zu manipulieren, um trotzdem Zugang zu bekommen oder wird das erst an der Elektronik hinter dem Flachbandkabel geregelt? Ich frage nur, denn wie schon weiter oben erwähnt, sieht man ja auch in Hollywood, dass man die Elektronik ausbaut irgendwas kurzschließt und dann die Tür trotzdem öffnet …

    Antworten
    • Die Jungs in Hollywood schließen dann nicht die Elektronik vom PI kurz, sondern
      die Verdrahtung des Türöffners… 🙂

      Antworten
    • Theoretisch ja. Allerdings müsstest du dafür erst einmal wissen, welche Daten akzeptiert werden (die Auswertung findet immer noch per Software statt) und außerdem mit entsprechender Taktung senden (sprich Zubehör nötig). Da ist es einfacher einen Plastikfinger mit Abdruck zu basteln 😀

      Antworten
  2. Hallo,
    kannst du bitte den Link zu der C++ Bibliothek hinzufügen wäre sehr nett.
    Danke im Voraus!!!
    Gruß David

    Antworten
  3. tolles tutorial, ich würde gerne einmal so etwas in kombination mit einem elektronischem schloss, rfid chips, etc sehen. Ich spiele mit dem gedanken eine meiner türen so zusichern

    Antworten
  4. Hallo,
    habe heute meinen Sensor bekommen. Der Sensor wird aber nicht erkannt. Habe es auch am Arduino UNO versucht. Das Gleiche. Bei 4 Leitungen kann man ja nicht viel verkehrt machen.
    Sollte der Sensor beim Anlegen der Spannung bereits leuchten? Ich glaube der ist defekt.

    Antworten
    • Welche Spannung hast du genommen? Die ist wichtig, da der Sensor bei zu hoher Spannung kaputt gehen kann bzw. bei zu niedriger nicht funktioniert.

      Antworten
      • Laut Datenblatt verträgt er 3,8V-7V. Da hab ich ihn an 5V angeschlossen.

  5. Gibt es eine Möglichkeit beim Einlesen des Fingers die Speicherposition vorzugeben? Beim Löschen lässt sich ja logischer Weise auch angeben welche Position gelöscht werden soll. Mit der Funktion hätte ich die Möglichkeit, bei erkannter ID z.B. 100.

    Antworten
    • Hmm da fehlt doch was…
      …bei erkannter ID größer 100 eine andere Aktion ausführen zu lassen als bei kleiner 100.
      Jetzt ist es komplett

      Antworten
  6. Wo kann ich den Pfad der gespeicherten Abdrücke angeben?
    Würde diese gerne auf einem Server speichern.

    Hab leider nicht viel Ahnung von dem ganzen.

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!