- Erforderliche Materialien
- GT511C3 Fingerabdrucksensor (FPS) -Modul
- Verbinden des Fingerabdrucksensors GT511C3 mit Arduino
- Arduino mit GT511C3
- Programmierung von Arduino für GT511C3 Fingerabdrucksensor
- Arbeiten des Fingerabdrucksensors GT511C3 mit Arduino
Biometrie wird seit langem als zuverlässiges Authentifizierungssystem eingesetzt. Heute gibt es komplexe biometrische Systeme, die einen Menschen anhand seines Herzschlagrhythmus oder sogar anhand seiner DNA identifizieren können. Andere mögliche Methoden umfassen Spracherkennung, Gesichtserkennung, Iris-Scannen und Fingerabdruck-Scannen. Von denen die Fingerabdruckerkennung die am weitesten verbreitete Methode ist, finden wir sie von einem einfachen Anwesenheitssystem über Smartphones bis hin zu Sicherheitsüberprüfungen und vielem mehr.
In diesem Tutorial erfahren Sie, wie Sie den beliebten Fingerabdrucksensor GT511C3 (FPS) mit Arduino verwenden. Es sind viele FPS verfügbar, und wir haben bereits gelernt, wie man sie verwendet, um Designs wie Anwesenheitssystem, Abstimmungsmaschine, Sicherheitssystem usw. zu erstellen. Der GT511C3 ist jedoch mit hoher Genauigkeit und schnellerer Reaktionszeit weiter fortgeschritten, sodass wir lernen werden, wie man ihn verwendet mit Arduino, um Fingerabdrücke darauf zu registrieren und die Fingerabdrücke bei Bedarf zu erkennen. Also lasst uns anfangen.
Erforderliche Materialien
- Arduino Nano / UNO
- GT511C3 Fingerabdrucksensor
- 16x2 LCD-Bildschirm
- Pot - 10k und 1k, 10k, 22k Widerstände
- Druckknopf
- Kabel anschließen
- Brotbrett
GT511C3 Fingerabdrucksensor (FPS) -Modul
Bevor wir uns mit dem Projekt befassen, sollten wir uns mit dem Fingerabdrucksensormodul GT511C3 und seiner Funktionsweise vertraut machen. Dieser Sensor unterscheidet sich stark von dem kapazitiven und Ultraschall-Fingerabdrucksensor, der üblicherweise in unseren Smartphones verwendet wird. Der GT511C3 ist ein optischer Fingerabdrucksensor, dh er basiert auf Bildern Ihres Fingerabdrucks, um sein Muster zu erkennen. Ja, Sie haben richtig gelesen, der Sensor enthält tatsächlich eine Kamera, die Bilder Ihres Fingerabdrucks aufnimmt und diese Bilder dann mit einem leistungsstarken integrierten ARM Cortex M3 IC verarbeitet. Das folgende Bild zeigt die Vorder- und Rückseite des Sensors mit Pinbelegung.
Wie Sie sehen können, verfügt der Sensor über eine Kamera (schwarzer Fleck), die von blauen LEDs umgeben ist. Diese LEDs müssen leuchten, um ein klares Bild des Fingerabdrucks zu erhalten. Diese Bilder werden dann verarbeitet und unter Verwendung des mit dem EEPROM gekoppelten ARM-Mikrocontrollers in einen Binärwert umgewandelt. Das Modul verfügt außerdem über eine grüne SMD-LED zur Anzeige der Stromversorgung. Jedes Fingerabdruckbild hat eine Größe von 202 x 258 Pixel und eine Auflösung von 450 dpi. Der Sensor kann bis zu 200 Fingerabdrücke registrieren und weist jeder Fingerabdruckvorlage eine ID von 0 bis 199 zu. Während der Erkennung kann der gescannte Fingerabdruck automatisch mit allen 200 Vorlagen verglichen werden. Wenn eine Übereinstimmung gefunden wird, wird die ID-Nummer dieses bestimmten Fingerabdrucks mit dem Smack Finger 3.0 angegebenAlgorithmus auf dem ARM-Mikrocontroller. Der Sensor kann von 3,3 V bis 6 V betrieben werden und kommuniziert über serielle Kommunikation bei 9600. Die Kommunikationsstifte (Rx und Tx) sollen nur 3,3 V tolerant sein, das Datenblatt gibt jedoch nicht viel darüber an. Die Pinbelegung eines GT511C3 FPS ist unten dargestellt.
Abgesehen von der seriellen Kommunikation kann das Modul auch über eine USB-Verbindung mit den im vorherigen Bild gezeigten Pins direkt an den Computer angeschlossen werden. Sobald das Modul mit dem Computer verbunden ist, kann es mit der Anwendung SDK_DEMO.exe gesteuert werden, die über den Link heruntergeladen werden kann. Diese Anwendung ermöglicht es dem Benutzer, Fingerabdrücke zu registrieren, zu überprüfen und zu löschen sowie Fingerabdrücke zu erkennen. Die Software kann Ihnen auch dabei helfen, das vom Sensor aufgenommene Bild zu lesen, was einen Versuch wert ist. Alternativ können Sie diese Software auch verwenden, wenn der Sensor mit Arduino verbunden ist. Dies wird später in diesem Artikel erläutert.
Ein weiteres interessantes Merkmal des Sensors ist das Metallgehäuse um den Erfassungsbereich. Wie ich bereits sagte, muss die blaue LED eingeschaltet sein, damit der Sensor funktioniert. In Anwendungen, in denen der Sensor aktiv auf einen Fingerabdruck warten sollte, ist es nicht möglich, die LED immer eingeschaltet zu lassen, da dies den Sensor erwärmt und ihn somit beschädigt. Daher kann in diesen Fällen das Metallgehäuse mit einem kapazitiven Berührungseingangspin einer MCU verdrahtet werden, um zu erkennen, ob es berührt wird. Wenn ja, kann die LED eingeschaltet und der Erfassungsprozess gestartet werden. Diese Methode wird hier nicht demonstriert, da sie nicht in den Geltungsbereich dieses Artikels fällt.
Bei Betrieb mit 3,3 V verbraucht der Sensor ca. 130 mA. Das Registrieren eines Fingers dauert fast 3 Sekunden und das Identifizieren eines Fingers 1 Sekunde. Wenn jedoch die Anzahl der registrierten Vorlagen geringer ist, ist die Erkennungsgeschwindigkeit hoch. Weitere Informationen zum Sensor finden Sie in diesem Datenblatt von ADH-Tech, dem offiziellen Hersteller des Moduls.
Verbinden des Fingerabdrucksensors GT511C3 mit Arduino
Der GT511C3 FPS verfügt über zwei Stromanschlüsse, die über einen + 5-V-Pin von Arduino mit Strom versorgt werden können, und zwei Kommunikationsstifte Rx und Tx, die für die serielle Kommunikation mit einem beliebigen digitalen Pin von Arduino verbunden werden können. Zusätzlich haben wir einen Druckknopf und ein LCD hinzugefügt, um den Sensorstatus anzuzeigen. Das vollständige Schaltbild für die Verbindung von GT511C3 FPS mit Arduino finden Sie unten.
Da die Rx- und Tx-Pins 3,3 V tolerant sind, haben wir einen potenziellen Teiler auf der Rx-Seite verwendet, um 5 V in 3,3 V umzuwandeln. Der 10k-Widerstand und der 22k-Widerstand wandeln das 5V-Signal vom Arduino Tx-Pin in 3,3 V um, bevor es den Rx-Pin des FPS erreicht. Der Sensor kann auch mit 3,3 V betrieben werden. Stellen Sie jedoch sicher, dass Ihr Arduino genügend Strom für den Sensor liefert. Wir haben das LCD im 4-Bit-Modus angeschlossen, der mit einem 5-V-Pin von Arduino betrieben wird. An Pin D2 ist ein Druckknopf angeschlossen, der das Programm beim Drücken in den Registrierungsmodus versetzt, in dem der Benutzer einen neuen Finger registrieren kann. Nach der Registrierung bleibt das Programm im Scanmodus, um nach Fingern zu suchen, die den Sensor berühren.
Arduino mit GT511C3
Wie bereits erwähnt, kommuniziert der GT511C3 FPS über serielle Kommunikation, der Sensor versteht den Hex-Code und für jeden Hex-Code wird eine bestimmte Operation ausgeführt. Sie können das Datenblatt überprüfen, um alle Hex-Werte und die entsprechende Funktion zu kennen, wenn Sie interessiert sind. Glücklicherweise hat bboyho bereits eine Bibliothek erstellt, die direkt mit Arduino zum Registrieren und Erkennen von Fingerabdrücken verwendet werden kann. Die Github-Bibliothek für GT511C3 FPS kann über den folgenden Link heruntergeladen werden
GT511C3 Arduino Bibliothek
Über den Link wird eine ZIP-Datei heruntergeladen. Sie müssen sie dann zu Ihrer Arduino-IDE hinzufügen, indem Sie dem Befehl Skizze -> Bibliothek einschließen -> ZIP-Bibliothek hinzufügen folgen. Nachdem Sie die Bibliothek hinzugefügt haben, starten Sie Ihre IDE neu und Sie sollten in der Lage sein, die Beispielprogramme für GT511C3 FSP unter Datei -> Beispiel -> Fingerabdruckscanner-TTL wie unten gezeigt zu finden
Sie sollten vier Beispielprogramme sehen, das Blinkprogramm blinkt die blaue LED auf dem FPS, das Registrierungs- und ID-Fingerprogramm kann verwendet werden, um die Finger entsprechend zu registrieren und zu identifizieren. Beachten Sie, dass sich ein einmal registrierter Finger immer an das Modul erinnert, auch wenn es ausgeschaltet ist.
Das Serial Pass-Through-Programm kann auf das Arduino hochgeladen werden, um die zuvor in diesem Artikel beschriebene Anwendung Demo_SDK.exe zu verwenden. Zum Löschen von Fingerabdruckvorlagen oder zum Speichern einer Kopie auf Ihrem Computer kann diese SDK-Anwendung verwendet werden.
Programmierung von Arduino für GT511C3 Fingerabdrucksensor
Unser Ziel ist es, ein Programm zu schreiben, das einen Finger registriert, wenn eine Taste gedrückt wird, und die ID-Nummer des bereits registrierten Fingers anzuzeigen. Wir sollten auch in der Lage sein, alle Informationen auf dem LCD anzuzeigen, damit das Projekt eigenständig sein kann. Den vollständigen Code dazu finden Sie unten auf dieser Seite. Hier zerlege ich dasselbe in kleine Schnipsel, damit Sie es besser verstehen.
Wie immer beginnen wir das Programm mit der Aufnahme der erforderlichen Bibliotheken. Hier benötigen wir die Bibliothek FPS_GT511C3 für unser FPS-Modul, die serielle Software zur Verwendung von D4 und D5 für die serielle Kommunikation und die Flüssigkristall-Schnittstelle für die LCD-Schnittstelle. Dann müssen wir erwähnen, an welche Pins der FPS und das LCD angeschlossen sind. Wenn Sie dem Schaltplan als solchem gefolgt sind, sind es 4 und 5 für FPS und D6 bis D11 für LCD. Der Code dafür ist unten gezeigt
#include "FPS_GT511C3.h" // Bibliothek von https://github.com/sparkfun/Fingerprint_Scanner-TTL abrufen #include "SoftwareSerial.h" // Serielle Softwarebibliothek #include
Innerhalb der Setup- Funktion zeigen wir eine Einführungsmeldung auf dem LCD an und initialisieren dann das FPS-Modul. Der Befehl fps.SetLED (true) schaltet die blaue LED am Sensor ein. Sie können sie mit fps.SetLED (false) ausschalten, wenn dies nicht erforderlich ist, da dies den Sensor erwärmen würde, wenn er kontinuierlich eingeschaltet bleibt. Wir haben auch den Pin D2 als Eingangspin hergestellt und ihn mit dem internen Pull-up-Widerstand verbunden, um einen Druckknopf mit dem Pin zu verbinden.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // 16 * 2 LCD lcd.print ("GT511C3 FPS") initialisieren ; // Intro Message Zeile 1 lcd.setCursor (0, 1); lcd.print ("mit Arduino"); // Intro Message Line 2 Delay (2000); lcd.clear (); fps.Open (); // seriellen Befehl senden, um fp fps.SetLED (true) zu initialisieren ; // LED einschalten, damit fps den Fingerabdruck sehen kann pinMode (2, INPUT_PULLUP); // Als Eingangspin an internen Pull-up-Widerstand anschließen }
Innerhalb der Void-Loop- Funktion müssen wir überprüfen, ob die Taste gedrückt ist. Wenn sie gedrückt wird, registrieren wir einen neuen Finger und speichern seine Vorlage mit einer ID-Nummer mithilfe der Registrierungsfunktion. Wenn nicht, warten wir weiter darauf, dass ein Finger in den Sensor gedrückt wird. Wenn diese Taste gedrückt wird, wird der Fingerabdruck identifiziert, indem er mit der 1: N-Methode mit allen registrierten Fingerabdruckvorlagen verglichen wird. Sobald die ID-Nummer gefunden wurde, wird Willkommen angezeigt, gefolgt von der ID-Nummer. Wenn der Fingerabdruck nicht mit einem der registrierten Finger übereinstimmt, beträgt die ID-Anzahl 200. In diesem Fall wird die Begrüßung unbekannt angezeigt.
if (digitalRead (2)) // If-Taste gedrückt { Enroll (); // Fingerabdruck registrieren } // Fingerabdrucktest identifizieren if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Willkommen:"); if (id == 200) lcd.print ("Unbekannt"); // Wenn nicht erkannt lcd.print (id); Verzögerung (1000); }}
Die Registrierungsfunktion müsste drei Probeneingaben vornehmen, um einen Finger erfolgreich zu registrieren. Nach der Registrierung wird eine Vorlage für diesen bestimmten Finger erstellt, die nur gelöscht wird, wenn der Benutzer sie über HEX-Befehle erzwungen hat. Der Code zum Registrieren eines Fingers wird unten angezeigt. Mit der Methode IsPressFinger wird überprüft, ob ein Finger erkannt wird. Wenn ja, wird das Bild mit CaptureFinger aufgenommen und schließlich werden Enroll1, Enroll2 und Enroll3 für drei verschiedene Proben verwendet, um einen Finger erfolgreich zu registrieren. Das LCD zeigt die ID-Nummer des Fingers an, wenn es erfolgreich registriert wurde. Andernfalls wird eine Fehlermeldung mit Code angezeigt. Code 1 bedeutet, dass der Fingerabdruck nicht eindeutig erfasst wurde und Sie es daher erneut versuchen müssen. Code 2 ist eine Speicherfehleranzeige und Code 3 zeigt an, dass der Finger bereits registriert wurde.
void Enroll () // Registrierungsfunktion aus dem Exmaple-Programm der Bibliothek { int registerid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (Enrollid); if (usedid == true) registrid ++; } fps.EnrollStart (Enrollid); // lcd.print einschreiben ("Enroll #"); lcd.print (Enrollid); while (fps.IsPressFinger () == false) delay (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Finger entfernen"); fps.Enroll1 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Erneut drücken"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Finger entfernen"); fps.Enroll2 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Nochmals drücken"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Finger entfernen"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Erfolg beim Registrieren"); } else { lcd.clear (); lcd.print ("Registrierung fehlgeschlagen:"); lcd.print (iret); }} } else lcd.print ("Failed 1"); } else lcd.print ("Failed 2"); } else lcd.print ("Failed 3"); }}
Arbeiten des Fingerabdrucksensors GT511C3 mit Arduino
Jetzt, da unsere Hardware und unser Code fertig sind, ist es Zeit, unser Projekt zu testen. Laden Sie den Code auf Arduino hoch und schalten Sie ihn ein. Ich verwende nur den Micro-USB-Anschluss, um das Projekt mit Strom zu versorgen. Beim Booten sollte die Intro-Meldung auf dem LCD angezeigt werden und dann sollte „Hi!..“ angezeigt werden. Dies bedeutet, dass FPS bereit ist, nach Fingern zu suchen. Wenn ein registrierter Finger gedrückt wird, wird "Willkommen" gefolgt von der ID-Nummer dieses Fingers angezeigt (siehe unten).
Wenn ein neuer Finger registriert werden muss, können wir den Druckknopf verwenden, um in den Registrierungsmodus zu gelangen, und den LCD-Anweisungen folgen, um einen Finger zu registrieren. Nach Abschluss des Registrierungsvorgangs zeigt das LCD erneut „Hi!..“ an, um anzuzeigen, dass es gelesen wurde, um die Finger erneut zu identifizieren. Die komplette Arbeit finden Sie im unten verlinkten Video.
Von hier aus können Sie mit dem Fingerabdruck-Sensormodul viele interessante Dinge darüber entwickeln. Ich hoffe, Sie haben das Tutorial verstanden und es genossen, etwas Nützliches zu erstellen. Wenn Sie Fragen haben, lassen Sie diese im Kommentarbereich oder nutzen Sie die Foren für andere technische Fragen.