heim - Computers
Biometrisches Schloss – Einrichten des Scanners und Programmieren des Mikrocontrollers. Selbstgebautes biometrisches Fingerabdruckschloss für das Garagentor. Fingerabdruckscanner für verschiedene Arduino-Vorlagen

Da ich kein Auto habe, muss ich meine Schlüssel nicht überall bei mir tragen. Aus diesem Grund stellte sich heraus, dass ich mehrere Male ohne Schlüssel vor dem Haus stand und darauf warten musste, dass einer der Verwandten nach Hause kam und mich hereinließ, und irgendwann beschloss ich, dass ich etwas dagegen tun musste und entwarf ein selbstgebautes Garagenschloss.

In diesem Projekt zeige ich Ihnen, wie Sie ein Fingerabdruckschloss für Ihre Haustür herstellen.

Schritt 1: Materialien


Hier finden Sie eine Liste der benötigten Materialien und Werkzeuge.

Elektronik:

  • Fingerabdruckscanner (und JST-Anschluss)
  • LCD-Set (mit ATmega328)
  • ATtiny85
  • NPN-Transistor
  • Hochtöner-Lautsprecher
  • Lautsprecherkabel
  • Gehäuse (in Schritt 9 werden Dateien für den 3D-Druck vorhanden sein)
  • Kupferfolie
  • Spannungsregler 5V
  • Batterie 9V
  • Anschluss für 9V-Batterie
  • SPDT-Schalter

Der Einfachheit halber werde ich eine vorgefertigte Wunschliste auf der Sparkfun-Website anhängen.

Werkzeug:

  • Lötkolben und Lötzinn
  • Isolierband
  • Drähte und Jumper
  • Zangen/Stripper
  • Prototyping-Board
  • Verschiedene Widerstände
  • Schrauben
  • Bohren
  • Mehrere LEDs zum Testen
  • FTDI 5V-Platine
  • Heißklebepistole
  • Zugang zu einem 3D-Drucker
  • Optional: IC-Sockel (8-polig für ATtiny und 28-polig für ATmega)
  • Optional: ein weiteres Arduino-Board / 10uF-Kondensator (Details in Schritt 5)

Schritt 2: Gerätediagramm






Das bei Sparkfun gekaufte LCD-Kit wurde mit einem ATmega328 geliefert, der die Anzeige steuert. ATmega328 ist recht leistungsstark und kann nicht nur zur Displaysteuerung, sondern auch für andere Aufgaben eingesetzt werden. Vor diesem Hintergrund können wir es anstelle von Arduino verwenden, um mit dem Fingerabdruckscanner zu kommunizieren und Befehle an den ATtiny85 zu senden sowie das Display und den Beeper zu steuern.

Um zu verhindern, dass das biometrische Türschloss ständig funktioniert, habe ich einen Schalter eingebaut, der in dem Moment funktioniert, in dem der Koffer geschlossen wird. Wenn das Gehäuse geschlossen ist, wird das Gerät nicht mit Strom versorgt und wir schonen die Batterieressourcen.

Wichtiger Hinweis: Der Fingerabdruckscanner arbeitet mit 3,3 V, daher empfehle ich die Verwendung eines Spannungsteilers, der die Signale vom ATmega in 3,2 V umwandelt. Der Spannungsteiler besteht aus einem 560-Ohm-Widerstand zwischen D10/zweiter Scanner-Pin und einem 1K-Widerstand zwischen GND/zweiter Scanner-Pin.

LCD-Pinbelegung:

  • D10 – Scanner-Pin 1 (schwarzes Kabel)
  • D11 - Pin 2 Scanner (über Spannungsteiler)
  • D12 - ATtiny85
  • D13 – Quietscher

ATtiny85-Pinbelegung:

  • Pin 5 (0 im Programmcode) – Eingang von ATmega
  • Pin 3 (4 im Programmcode) – Transistor / gelbe LED
  • Pin 7 (2 im Programmcode) – Anzeige-LED

Schritt 3: Zusammenbau der Komponenten aus dem LCD-Bausatz

Der Name der Stufe spricht für sich: praktische Schnellstart-/Montageanleitung

Schritt 4: Zusammenbau der Schaltung auf der Prototyping-Platine




Die Platzierung der Komponenten auf der Platine bleibt Ihnen überlassen. Versuchen Sie einfach, die Drähte so zu verlöten, dass sie in die gleiche Richtung zeigen und nicht brechen.

Nach dem Zusammenbau habe ich die Ober- und Unterseite der Platine mit Heißkleber bedeckt – so wurden die Schaltkreiselemente gesichert und isoliert. Heißkleber beschädigt den Chip nicht.

Löten Sie wie bei der Hauptplatine alles auf die ATtiny-Platine und tragen Sie Heißkleber auf, um die Komponenten zu befestigen und zu isolieren. Der Spannungsregler kann sehr heiß werden, daher ist es ratsam, keinen Heißkleber auf ihn oder andere Oberflächen in seiner Nähe aufzutragen. Es ist auch am besten, das ATtiny-Board nicht mit Heißkleber zu bedecken, da Sie es sonst möglicherweise entfernen und neu programmieren möchten.

Schritt 5: Programmierung des ATmega328

Wie in Schritt 2 erwähnt, verfügt der ATmega328 über einen ausreichend starken Prozessor und genügend Pins für LCD-Steuerung, während es andere zusätzliche Komponenten steuert. Um dies zu erreichen, müssen Sie den Chip programmieren.

Wenn Sie haben Arduino Uno oder Duemilanove, Sie können einfach den Chip entfernen und ihn durch den im Kit enthaltenen ersetzen. Oder Sie finden ein FTDI Basic Breakout Board (5V) und Lötanschlüsse an der Seite (siehe Bilder in Schritt 3).

Sie müssen den Code auch im Modus „Duemilanove w/ ATmega328“ hochladen.

Code unten - Arbeitsprogramm um die Funktionsfähigkeit des Gerätes zu überprüfen.

#include „LiquidCrystal.h“ LiquidCrystal lcd(2,3,4,5,6,7,8); void setup() ( pinMode(9, OUTPUT); // Hintergrundbeleuchtung pinMode(13, OUTPUT); // Beeper lcd.begin(16, 2); // 16 Zeichen breit, 2 hoch digitalWrite(9, HIGH) ; / /schalte die Hintergrundbeleuchtung ein LCD.print("Hallo Welt! "); //zentrieren Sie den Text mit Leerzeichen Verzögerung(2000); void loop() ( //der Piepser schaltet sich ein und aus, sein Status wird auf dem Display angezeigt LCD .clear( ); lcd.print(" Buzzer is on"); delay(1000);

Schritt 6: Einrichten des Fingerabdruckscanners

Ich habe diese Bibliothek verwendet, um mit dem Scanner zu kommunizieren. Direkter Download-Link.

Um zu überprüfen, ob Ihr Code funktioniert, laden Sie diesen Blinktester herunter.

Der Fingerabdruckscanner verfügt über einen eigenen integrierten Speicher zum Speichern von Daten. Nachdem Sie also sicher sind, dass der Scanner funktioniert, laden Sie dieses Programm herunter, um Ihren Fingerabdruck unter der ID #0 zur Datenbank hinzuzufügen. Öffnen Sie Ihre serielle Konsole und folgen Sie einfach den Anweisungen.

LED-Blinkprogramm zum Testen des Scanners

/* Dieser einfache Code schaltet die LED ein und aus. Es wird verwendet, um zu verstehen, ob die Kommunikation funktioniert. */ #include „FPS_GT511C3.h“ #include „SoftwareSerial.h“ //Hardware-Setup – Fingerscanner angeschlossen an: //digitaler Pin 10 (arduino rx, fps tx) //digitaler Pin 11 (arduino tx – 560 Ohm fps Widerstand tx – 1000-Ohm-Widerstand – GND) // Dies senkt die 5-V-Sendespannung auf etwa 3,2 V und wir werden unseren Scanner nicht durchbrennen FPS_GT511C3 fps(10, 11); void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // Sie können Meldungen auf dem seriellen Debug-Bildschirm sehen fps.Open(); ) void loop())( // LED-Blinktest für die fps scanner. SetLED(true); // schaltet die LED innerhalb der Scannerverzögerung(1000);

Programm zum Aufzeichnen von Daten in den Scanner

#include „FPS_GT511C3.h“ #include „SoftwareSerial.h“ //Hardware-Setup – Fingerscanner angeschlossen an: //digitaler Pin 10 (arduino rx, fps tx) //digitaler Pin 11 (arduino tx – 560 Ohm Widerstand fps tx – 1000-Ohm-Widerstand (GND) // Dies senkt den 5-V-Sender auf etwa 3,2 V und wir werden unseren Scanner nicht durchbrennen FPS_GT511C3 fps(10, 11); void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Registrierungstest // suchen nach open id int enrollid = 0; fps.EnrollStart(enrollid); // Registration Serial.print("Press finger to Enroll #"); bool bret = fps .CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Finger entfernen"); fps.Enroll1(); while(fps.IsPressFinger() == true) delay(100) ; Serial.println("Drücken Sie denselben Finger erneut"); while(fps.IsPressFinger() == false) delay(100); if (bret != false) ( Serial.println( "Finger entfernen"); while(fps.IsPressFinger() == true) delay(100); () == false) delay(100); if (bret != false) ( Serial.println("Finger entfernen"); iret = fps.Enroll3(); if (iret = = 0) ( Serial.println("Enrolling Successfull"); ) else ( Serial.print("Registrierung fehlgeschlagen mit Fehlercode:"); Serial.println(iret); ) ) else Serial.println("Erfassen des dritten Fingers fehlgeschlagen"); ) else Serial.println("Fehler beim Erfassen des zweiten Fingers"); ) else Serial.println("Erfassung des ersten Fingers fehlgeschlagen"); ) void loop())( delay(100000); ) Dateien

Schritt 7: Programmieren Sie den ATtiny85


ATtiny85 ist so etwas wie ein billiger Arduino, der auf einem Chip montiert ist. Der ATtiny85 kann von anderen Arduinos programmiert werden, einschließlich des ATmega328, der in unserem LCD-Kit enthalten ist. Im Projekt werden damit sehr einfache Befehle ausgeführt: Überprüfen Sie das Signal vom ATmega und öffnen Sie das Tor, wenn das Signal korrekt ist.

Um es zu programmieren, schließen Sie alles gemäß den beigefügten Fotos an. Laden Sie dann die erforderlichen Dateien herunter und befolgen Sie diese Anweisungen.

Nach dem Herunterladen des Codes sollte Pin 13 am Arduino (eingebaute LED) aufleuchten und anzeigen, dass der Code heruntergeladen wurde.

Endgültiger Code:

//Erhält ein kurzes Signal vom Hauptmodul, um das Relais zu schließen. void setup())( pinMode(2,OUTPUT); //LED-Anzeige über einen 10K-Widerstand pinMode(4,OUTPUT); //Transistor-Pin, der die Garage öffnet pinMode(0,INPUT); //Eingabeverzögerung(500); //geben Sie dem Gerät Zeit, digitalWrite(2, HIGH) zu starten; //LED-Anzeige ) void loop())( / /einfaches Muster zum Umschalten der Transistorverzögerung (125); if(digitalRead(0)==false)( Verzögerung(55); //warten, da der ATtiny-Timer nicht ideal ist if(digitalRead(0))( Verzögerung(55 ); if(digitalRead(0)= =false)( Verzögerung(55); if(digitalRead(0))( Verzögerung(55); if(digitalRead(0)==false)( digitalWrite(4, HIGH); / / Der Transistor „drückt“ den Knopf „delay(1000 ); digitalWrite(2,LOW);

Schritt 8: Endgültiger Code

Unten ist ein Arduino-Programm, das ich mit den Scanner- und Anzeigebibliotheken geschrieben habe. Um zu verdeutlichen, was in den einzelnen Programmteilen passiert, habe ich versucht, alles bestmöglich zu kommentieren. Nach dem Herunterladen dieses Codes sollte alles funktionieren und es muss nur noch das System in die Tür integriert werden.

Warnung: Wenn die Scannerbibliothek nicht funktioniert, versuchen Sie es mit alte Version Arduino-IDE.

Code für ATmega238:

#include „LiquidCrystal.h“ //Bibliothek anzeigen #include „FPS_GT511C3.h“ //FPS-Bibliothek (Fingerabdruckscanner) #include „SoftwareSerial.h“ //wird von der Scannerbibliothek verwendet //Anzeige- und Scanner-Pins konfigurieren LiquidCrystal LCD( 2, 3, 4, 5, 6, 7, 8); //Pinbelegung anzeigen FPS_GT511C3 fps(10, 11); //RX, TX boolean isFinger = false; //true, wenn die FPS-Bibliothek den Finger auf dem Scanner erkennt //Ausgabepins const int BuzzerPin = 13; const int backlightPin = 9; const int attinyPin = 12; const String idNames = ("self", "Bro", "Ryan", "Mom", "Dad", "Tante", "Oma", "Zeide", "Person", "person", "Thumb"); void setup())( //Einrichten der Ausgänge pinMode(buzzerPin, OUTPUT); pinMode(backlightPin, OUTPUT); pinMode(attinyPin, OUTPUT); //zum Debuggen //Serial.begin(9600); fps.UseSerialDebug = false; / /wird für FPS-Debugging über wahr serielle Schnittstelle//Bibliotheken initialisieren lcd.begin(16,2); digitalWrite(backlightPin, HIGH); //LCD-Hintergrundbeleuchtung fps.Open(); fps.SetLED(true); //LED für fps //Sound wird geladen for(int i=0; i<30; i++){ tone(buzzerPin, 50+10*i, 30); delay(30); } tone(buzzerPin, 350); //вывод стартового сообщения lcd.print("Put your finger "); //команда вывода на экран lcd.setCursor(0, 1); //устанавливаем курсор на нулевую колонку первой строки lcd.print(" on the scanner "); delay(150); noTone(buzzerPin); //останавливаем стартовый звук } void loop(){ //сканируем и распознаём отпечаток, когда приложен палец waitForFinger(); lcd.clear(); //очищаем экран и устанавливаем курсов в положение 0,0 fps.CaptureFinger(false); //захватываем отпечаток для идентификации int id = fps.Identify1_N(); //идентифицируем отпечаток и сохраняем id if(id <= 10){ lcd.print(" Access granted "); //сообщение об успехе lcd.setCursor(0,1); //выводим на экран имя когда дверь открывается String message = " Hey " + idNames + "!"; lcd.print(message); tone(buzzerPin, 262, 1000); delay(1500); //отправляем сигнал для открытия двери digitalWrite(attinyPin, HIGH); //первый импульс синхронизирует задержку (10ms) delay(5); digitalWrite(attinyPin, LOW); delay(3); digitalWrite(attinyPin, HIGH); //следующие два - открывают дверь delay(15); digitalWrite(attinyPin, LOW); delay(5); digitalWrite(attinyPin, HIGH); delay(10); digitalWrite(attinyPin, LOW); delay(1000); lcd.clear(); lcd.print("Don"t forget to "); lcd.setCursor(0,1); lcd.print(" shut me off! "); delay(2000); waitForFinger(); //нажмите чтобы продолжить запись while(true){ //сохраняет новый отпечаток //выводит сообщение на экран lcd.clear(); lcd.print(centerText("So you want to")); lcd.setCursor(0,1); lcd.print(centerText("scan a new one?")); delay(2000); //Скопировано и слегка модифицировано из примера регистрации данных: int enrollid = 11; //выбираете какой id переписать\создать //отпустите палец, когда хотите записать id/имя, напечатанное на экране waitForFinger(); //ждёт, когда будет нажат fps while(enrollid==11){ for (int i = 1; i1){ lcd.print(i); enrollid = i-1; break; } } } //предупреждение, если в данном слоте уже есть данные if(fps.CheckEnrolled(enrollid)){ lcd.clear(); lcd.print(" Warning! ID #"); lcd.print(enrollid); lcd.setCursor(0,1); lcd.print(" has data. OK? "); delay(2500); waitForFinger(); //ждёт, когда будет нажат fps fps.DeleteID(enrollid); //удаляет данные delay(100); } //Enroll fps.EnrollStart(enrollid); lcd.clear(); lcd.print("Place finger to "); lcd.setCursor(0,1); lcd.print("enroll #"); lcd.print(enrollid); //выводит id, который был добавлен waitForFinger(); //ждёт, когда будет нажат fps //захватывает отпечаток и сохраняет его в память трижды для точности данных bool bret = fps.CaptureFinger(true); //картинка высокого качества для записи int iret = 0; //в случае ошибки if (bret != false){ //первая регистрация lcd.clear(); lcd.print(" Remove finger "); fps.Enroll1(); while(fps.IsPressFinger() == true) delay(100); //ждёт пока уберут палец lcd.clear(); lcd.print(" Press again "); waitForFinger(); //ждёт, когда будет нажат fps bret = fps.CaptureFinger(true); if (bret != false){ //вторая регистрация lcd.clear(); lcd.print(" Remove finger "); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); lcd.clear(); lcd.print("Press yet again "); waitForFinger(); bret = fps.CaptureFinger(true); if (bret != false){ //третья регистрация iret = fps.Enroll3(); if (iret == 0){ //проверяет, были ли какие-нибудь ошибки lcd.clear(); lcd.print(" Success! "); delay(2000); beep(); //выключает Ардуино } else{ //запускает этот код в случае любой ошибки lcd.clear(); lcd.print("Fail. Try again "); delay(1000); } } lcd.clear(); lcd.print(" Failed 3rd "); //ошибка на третьей записи delay(1000); } lcd.clear(); lcd.print(" Failed 2nd "); //ошибка на второй записи delay(1000); } lcd.clear(); lcd.print(" Failed 1st "); //ошибка на первой записи delay(1000); } } else{ lcd.print("Fingerprint is"); //если отпечаток не распознан lcd.setCursor(0,1); lcd.print(" unverified "); delay(2000); lcd.clear(); lcd.print("Please try again"); lcd.setCursor(0,1); lcd.print("Use your pointer"); //pointer - указательный палец (можете использовать любой и заменить это слово) delay(500); } delay(250); } void beep(){ //издаёт звуки, чтобы кто-нибудь закрыл кейс lcd.clear(); lcd.print("Please close the"); lcd.setCursor(0,1); lcd.print(" case! "); for(int i=0;i=80 && !fps.IsPressFinger()){ beep(); } } timer = 0; //обнуляет таймер как только функция завершится } String centerText(String s) { //центрует текст на дисплее, чтобы он лучше смотрелся while(16-s.length()>1)( //wenn der Text zentriert werden muss s = " " + s + " "; // fügt auf beiden Seiten gleichmäßig Leerzeichen hinzu ) return s; ) Dateien

Um ein einfaches biometrisches Sicherheitssystem zu erstellen, das Ihr Auto vor unbefugtem Zugriff schützt, benötigen wir einen Fingerabdrucksensor und einen Arduino-Mikrocontroller. Dieses Projekt verwendet Adafruit-Schulungsmaterial. Um die Wiederholung zu erleichtern, wird der vollständige Programmcode aus diesem Material mit geringfügigen Änderungen verwendet.

Zunächst modifizieren wir das Startsystem des Fahrzeugs. Die Hauptverbindung ist der IG-Leiter vom Zündschalter, der den Spannungsregler und dann den Arduino-Mikrocontroller mit Strom versorgt, um ihn ein- und auszuschalten und den Finger 10 Sekunden lang auf dem Sensor zu scannen. Bei Übereinstimmung des Fingerabdrucks aktiviert das System die Relaisbox, die das Starterrelais steuert. Jetzt können Sie den Motor starten. Nach 10 Sekunden schaltet sich der Fingerabdrucksensor aus. Sie können es wieder einschalten, indem Sie den Zündzyklus wiederholen. Wenn der Sensor innerhalb von 10 Sekunden keinen Fingerabdruck erkennt oder der Fingerabdruck nicht mit dem Referenzfingerabdruck übereinstimmt, wird das Startsystem ausgeschaltet und der Motor startet nicht.

Da jedes Fahrzeug über ein anderes Startkonfigurationssystem verfügt, müssen Sie einen Elektriker bezüglich der elektrischen Anlage des Fahrzeugs konsultieren oder den Schaltplan überprüfen, bevor Sie das Startsystem ändern.

Bitte beachten Sie, dass der Fingerabdrucksensor den Motor nicht startet. Es aktiviert und deaktiviert lediglich das Starterrelais, wodurch das Starten des Motors verhindert oder ermöglicht wird.

In diesem Projekt wird eine Diebstahlsicherung an einem zweitürigen Mitsubishi Lancer 2000 Coupé installiert.

Schritt 1: Verwendete Komponenten

Schritt 4: Laden des Hauptprogramms

Schließen Sie den Fingerabdrucksensor wie in der Abbildung gezeigt an und laden Sie das Hauptprogramm. Schließen Sie eine LED und einen Widerstand an Pin 12 an, um den korrekten Betrieb zu überwachen.

Das Programm basiert auf dem Prinzip des Adafruit Fingerprint-Lernmaterials. Allerdings habe ich den Code leicht geändert und einen Timer hinzugefügt, der den Sensor nach 10 Sekunden ausschaltet, um eine Ablenkung durch die blinkende LED des Sensors zu vermeiden.

Schritt 5: Montage Teil 1

Entfernen Sie die Schrauben unter dem Armaturenbrett. Lösen Sie den Haubenentriegelungshebel. Entfernen Sie den unteren Teil des Armaturenbretts. Platzieren Sie den Sensor im freien Raum.

Schritt 6: Zusammenbau, Teil 2

Messen Sie den erforderlichen Abstand und schneiden Sie einen kleinen Bereich aus, um den Sensor sicher zu installieren.

Schritt 7: Zusammenbau, Teil 3

Am besten installieren Sie das Arduino Uno-Board hinter dem Fingerabdrucksensor. Ich habe den Sitz ein wenig geschärft, um das Arduino Uno-Board in die richtige Position zu bringen.

Was brauchen Sie

  1. FPM10A Fingerabdruckmodul
  2. RFID-Modul RC522
  3. Arduino Mega (theoretisch können auch andere Boards verwendet werden, aber ich habe mich aufgrund der Anzahl der Pins für dieses entschieden)
  4. 1 Lizenz für 1C 8.2 (Thick Client in meinem Fall, schneiden Sie es selbst für einen Thin Client)
  5. Kommunikation über Com-Port mit MsCommLib.MsComm (Sie benötigen eine Lizenz, Sie können sie sogar hier googeln)
  6. Entwicklungsumgebung für Arduino (1.8.5 verwendet)
  7. Tablet mit USB-Schnittstelle.
  8. Kabelbaum: 1-Kilo-Ohm-Widerstand, Kurzschlussknopf, Drähte, „blaues“ Isolierband, thermorektaler Kriechanalysator, falls gewünscht (Sie können die Drähte verdrehen, wenn Sie nahe, unbeschreibliche Empfindungen haben, die mit diesem Gerät verbunden sind), USB-Kabel für Arduino, gerade Arme und krumme Windungen des durchschnittlichen 1er-Spitznamens inkl. einen Körper für dieses ganze Wunder zu schaffen.

Hinweise: Auf dem Foto sind die Farben der Drähte unterschiedlich - während des Installationsvorgangs sind mehrere Drähte gebrochen, weil... Sie waren komplett von Huawei und ich musste andere verfügbare Farben nehmen.

Das Nachrichtensystem wird in kritischen Momenten absichtlich dupliziert.
Ich warne Sie gleich, dass dem durchschnittlichen Ingenieur aufgrund des Kolophoniums vielleicht Tränen aus den Augen fließen, aber dies ist mein erstes Arduino-Projekt, und eines von derart komplexer Art, und es scheint zu funktionieren und stabil zu funktionieren. Zuerst gab es die Idee, alles über das Netzwerk (WLAN + Kabel) zu erledigen, aber nachdem ich die Kosten für das Debuggen und die Erstellung meines eigenen HTTP-Dienstes abgeschätzt und alles in 1C implementiert hatte, entschied ich mich, auf jeden Fall die gesamte Logik zu verwenden kann ohne Änderung der Konfiguration an die externe Verarbeitung übergeben werden.

Sie können auch ein System zum Fotografieren eines ankommenden Mitarbeiters über die Webcam des Tablets einfügen, ein Relais hinzufügen und elektronische Tore steuern, vollständige Integration mit dem ZUP durch externe Verarbeitung, die über Startparameter übertragen wird, und die Vernichtung des Karnevals für besonders gefährliche Tore von geheimer Bedeutung) .

Hilfreiche Kritik ist willkommen.

Prolog

Als ich die Preise für bestehende Zutrittssysteme und Zeiterfassungssysteme sah, begann mir langsam die grüne Essenz zu ersticken. Nachdem ich mich lange mit dem Arduino und seinen Modulen beschäftigt hatte, stieß ich auf das Fingerabdruckmodul FPM10A. Dieses Modul kann je nach Ausführung eine große Anzahl von Fingerabdrücken – von 50 bis unendlich – in seinem Flash-Speicher speichern und wird in den meisten Modulen von Herstellern biometrischer Kontrollen verwendet. In meinem Projekt ist sie jedoch aufgrund der Bibliothek auf 254 begrenzt. Ich warne Sie sofort, dass ich meine erschöpfend gefundene Bibliothek für Arduino veröffentliche, weil ... Ich hatte lange mit der Suche zu kämpfen und habe drei Tage damit verschwendet, die Bibliothek für dieses Modul zu suchen und zu debuggen.

Beschreibung der Module

Die im Projekt verwendete Bibliothek ermöglicht die Verwendung von bis zu 256 (Byte) Fingerabdrücken. Dieser Betrag war für mich zu hoch; im Extremfall kann man pro 256 Mitarbeiter 1 Modul nutzen.
Die Anzahl der RFID-Tags ist nur durch die Eindeutigkeit ihrer UID begrenzt. Die Datenbank kann in 1C gespeichert und mit Mitarbeitern verknüpft werden. Es können alle kompatiblen Tags verwendet werden. Theoretisch können alle Schlüssel für Gegensprechanlagen, U-Bahn-Karten und Troika-Karten geeignet sein.
Die Verbindung zu 1c erfolgt über den COM-Port über die MsCommLib.MsComm-Bibliothek, kann aber auf jeden anderen umgeschrieben werden. Treiber für den COM-Port für Arduino sollten zusammen mit der Arduino-Entwicklungsumgebung installiert werden, können aber auch gegoogelt werden.
Alles Verlötete ist in einer Box versteckt und über das Netzwerk verbunden (ich habe WLAN verwendet, man kann aber auch eine externe USB-Netzwerkkarte verwenden).

Arbeitsalgorithmus

Hardware:

  1. Wir löten/drehen Arduino-Module
  2. Wir verbinden uns mit einem PC-Programmierer und laden die Firmware auf den Arda hoch, führen den Test durch und stellen sicher, dass die Befehle funktionieren
  3. Sie verbinden sich über USB mit einem Windows 10-Tablet. Auf dem Tablet ersetzen wir es entweder durch Autoload:

A) über eine Body-Datei:

    start - ausführen: shell:startup

    Erstellen Sie dort mit Notepad eine Datei mit dem Namen hz.bat und dem Inhalt (ich bin sicher, Sie können die Dateidatenbankparameter selbst verwalten – ich habe SQL): „C:\Programme\1cv8\ ... \bin\1cv8 .exe“ ENTERPRISE / SServerName:Port\DBName“ /NUser /PPassword

B) Wir machen eine fortgeschrittenere Variante, indem wir die Shell mithilfe eines VB-Skripts ersetzen (stellen Sie sicher, dass Sie zusätzlich zum Standardbenutzer einen weiteren Benutzer erstellen, ohne die Shell zu starten):

    Erstellen Sie mit Notepad eine Datei mit dem Namen C:\hz\hz.vbs und dem Inhalt

set oShell=createobject("wscript.shell")
sCmd="""C:\Programme\1cv8\ ... \bin\1cv8.exe"" ENTERPRISE /SServerName:Port\DBName" /NUser /PPassword"
oShell.run sCmd,true
sCmd="shutdown /r /t 0"
oShell.run sCmd

    starten – ausführen: regedit, folgen Sie dem Zweig: Aktueller Benutzer\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

    Fügen Sie den String-Parameter „Shell“ (REG_SZ) hinzu.

    Bearbeiten Sie es: „wscript C:\hz\hz.vbs“ (ohne Anführungszeichen im Parameter)

    neu starten und testen. 1c sollte ohne Explorer starten

  1. Als nächstes stellen wir sicher, dass es funktioniert und verpacken es in einen Karton.

Programmatisch:

  1. Im Normalzustand fragt der Arduino Fingerabdruckscanner, RFID-Scanner, Administrationstaste ab und sendet Wartebefehle über den COM-Port.
  2. Sobald ein Finger im Sichtfeld des Lesegeräts erscheint, senden wir einen Befehl an den COM-Port und 1c sieht durch Auslesen der Variablen entweder die Finger-ID oder die UID des Tags.
  3. Der Button wird zur Verwaltung von Fingerabdrücken benötigt. Wenn Sie darauf drücken, fragt 1c nach einem Login-Passwort und kann dem Mitarbeiter dann über das Nachrichtensystem entweder eine Scanner-ID oder eine Karten-UID zuweisen.

Um mit 1c zu kommunizieren, werden die folgenden Zeilen verwendet (ich habe die Verarbeitung für meine Konfiguration und meine Arbeitszeittabelle durchgeführt, sie befindet sich nur als Beispiel im Projekt, ist aber im Quellcode enthalten):

Verbindung zum COM-Port

Prozedur StartSystem() ComPort = New COMObject("MsCommLib.MsComm"); Versuchen Sie es mit ComPort.CommPort = 3; ComPort.Settings = "9600,N,8,1"; ComPort.Handshaking = 0; ComPort.InBufferCount = 0; ComPort.InBufferSize = 70; ComPort.InputLen = 0; ComPort.InputMode = 1; ComPort.NullDiscard = 0; ComPort.PortOpen = True; Ausnahmewarnung("Der Port kann nicht geöffnet werden!"); ThisForm.Close(); EndAttempt; hSekunden = 0; ConnectWaitHandler("OutputSportData", 1, False); // Einen Handler anschließen, um den Port zu überwachen Ende der Prozedur

Trennung vom COM-Port

Prozedur EndSystem() DisableWaitHandler("OutputSportData"); ComPort.PortOpen = False; ComPort = ""; EndProzedur

Daten vom COM-Port lesen

Prozedur OutputSportData() ExportSportData = ""; If ComPort.PortOpen Then //ComPort.Output = "1"; SportsData = ComPort.Input; ProcessEncryptedString(SportData); Wenn abgekürzt (Vorangestellter)<>"" Dann hSeconds = hSeconds + 1; endIf; Wenn hSeconds > 60, dann PreEmployee = 0; hSekunden = 0; endIf; Sonst Warnung("Der Port öffnet sich nicht"); ThisForm.Close(); endIf; Ende der Prozedur Prozedurprozess Verschlüsselte Zeichenfolge (Sportdaten) Array = Sportdaten Unload(); IndexMin = SportsData.GetLowerBound(0); IndexMax = SportsData.GetUpperBound(0); StringInfo = ""; For Index = IndexMin By IndexMax - 1 Cycle SymbolReceived = AbbrLP(Array.Get(Index)); If CharacterReceived = „13“ Then If Not Suspend Then RowInfo = RowProcessing(RowInfo); //Hier Nachrichtenverarbeitung EndIf; Else LineInfo = LineInfo + Symbol(Number(SymbolReceived)); endIf; EndCycle; EndProzedur

Senden von Informationen an den COM-Port

Prozedur SendToPort(Send) If ComPort.PortOpen Then ComPort.Output = AbbrLP(Send); Else Notify("Port öffnet sich nicht", MessageStatus.VeryImportant); endIf; EndProzedur

Projektcode für Arduino Mega

#enthalten // Bibliothek für die Arbeit mit dem Fingerabdruckmodul verbinden #include // Verbinden Sie die Bibliothek für die Arbeit mit der Software UART #include #enthalten const int buttonPin = 2; // Eingangsnummer, die mit der Taste verbunden ist, um in den Programmiermodus zu gelangen int buttonState = 0; // Variable zum Speichern des Schaltflächenzustands int modeState = 0; // Variable zum Speichern des Gerätestatus. 0 – Warten auf den Fingerabdruckscanner. 1 – Programmierung der uint8_t-ID; // Identifikationsnummer, unter der die Fingerabdruckvorlage gespeichert wird String frcUID = ""; // Identifikationsnummer des RFID-Lesegeräts int rfidYes = 0; // erfolgreiche Eingabe RFID SoftwareSerial mySerial(10, 11); // deklariere das mySerial-Objekt für die Arbeit mit der SoftwareSerial-Bibliothek OBJECT_NAME(RX, TX); // Sie können alle Pins angeben, die den PCINTx-Interrupt unterstützen. Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); // ein Fingerobjekt deklarieren, um mit der Adafruit_Fingerprint-Bibliothek zu arbeiten OBJECT_NAME = Adafruit_Fingerprint(PARAMETER); // PARAMETER – Link zu einem Objekt für die Arbeit mit UART, mit dem das Modul verbunden ist, zum Beispiel: &Serial1 MFRC522 mfrc522(53, 5); // MFRC522-Instanz erstellen void setup() ( pinMode(buttonPin, INPUT); // den mit der Schaltfläche verbundenen Pin als Eingang initialisieren Serial.begin(9600); // Hardware-UART mit 9600-Geschwindigkeit initialisieren while (!Serial); // Warten auf Hardware-UART-Initialisierungsverzögerung (500); // Init MFRC522 mfrc522.PCD_DumpVersionToSerial(); // Details zu PCD anzeigen - MFRC522-Kartenleser-Details Verzögerung (500); / Warten auf die Initialisierung des Fingerabdruckmoduls Serial.println(". . . Scan-Sensor . . ." // Anzeige der Meldung „Suche nach Sensor“ finger.begin(57600); // Initialisierung des Software-UART mit Geschwindigkeit 57600 (Standardmodulgeschwindigkeit) Serial.println(finger.verifyPassword()); if (finger.verifyPassword()) ( Serial.println(". . . Sensor gefunden! . . ."); // Wenn das Fingerabdruckmodul erkannt wird , Nachricht „Sensor gefunden“ drucken ) else ( Serial.println(". . . Sensor nicht gefunden . . ."); // Wenn das Fingerabdruckmodul nicht gefunden wird, wird die Meldung „Sensor nicht gefunden“ angezeigt und eine Unendlichkeit eingegeben Schleife: while(1 ); while(1); ) Serial.println(". . . Bitte legen Sie Ihren Finger auf den Scanner oder RFID . . ."); ) void loop() ( //Mit dem Button arbeiten! buttonState = digitalRead(buttonPin); // Werte vom Button-Eingang lesen if (buttonState == HIGH) ( modeState = 1; // Programmiermodus aufrufen NEXT ) switch (modeState) ( case 0: frcUID = ""; //Arbeiten im Fingerabdruck- und RFID-Abfragemodus if (finger.getImage() == FINGERPRINT_OK) ( // Erfassen Sie das Bild, wenn das Ausführungsergebnis gleich der FINGERPRINT_OK-Konstante ist ( korrektes Laden des Bildes), dann übergeben wir weiter if (finger.image2Tz() == FINGERPRINT_OK) ( // Konvertieren Sie das resultierende Bild, wenn das Ausführungsergebnis gleich der Konstante FINGERPRINT_OK ist (das Bild wird konvertiert), dann fahren Sie fort if (finger.fingerFastSearch() == FINGERPRINT_OK) ( // Finden Sie eine Übereinstimmung in der Fingerabdruckdatenbank. Wenn das Ausführungsergebnis gleich der Konstante FINGERPRINT_OK ist (eine Übereinstimmung wurde gefunden), dann gehen wir weiter frcUID = ". . . Gefunden ID=" + String(finger.fingerID) + ",confidence=" + String(finger.confidence) + "! . . ."; Serial.println(frcUID); ) ) ) if (mfrc522.PICC_IsNewCardPresent()) ( delay(100); if (mfrc522.PICC_ReadCardSerial()) ( //mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); frcUID = ""; for (Byte i = 0; i< mfrc522.uid.size; i++) { frcUID = frcUID + (mfrc522.uid.uidByte[i]); } frcUID = ". . . Found RFID UID=" + frcUID + "@ . . ."; Serial.println(frcUID); } } delay(100); // Задержка перед следующим сканированием 0,5 сек (нет смысла запускать на полной скорости) Serial.println(". . . Please put your finger on the scanner or rfid . . ."); break; case 1: Serial.println(". . . Programming mode . . ."); // Входим в режим программирования delay(400); Serial.println(". . . Programming mode . . ."); // Входим в режим программирования delay(400); Serial.println(". . . Programming mode . . ."); // Входим в режим программирования delay(400); Serial.println(". . . Programming mode . . ."); // Входим в режим программирования id = readnumber(); // Ожидание получения цифры, введённой с COM-порта if (id >= 255) ( // Wenn 255 (maximale ID), dann wieder in den Standby-Modus wechseln modeState = 0; ) sonst ( if (id< 254) { // Если 254 то rfid иначе палец 0-253 modeState = 2; // Пытаемся отсканировать палец } else { modeState = 3; // Пытаемся отсканировать rfid uid } } break; case 2: while (!getFingerprintEnroll()); // Пытаемся получить ответ об присваивании ID modeState = 1; break; case 3: rfidYes = 0; Serial.println(". . . Put RFID in Scanner! . . ."); delay(400); Serial.println(". . . Put RFID in Scanner! . . ."); delay(400); Serial.println(". . . Put RFID in Scanner! . . ."); delay(5000); if (mfrc522.PICC_IsNewCardPresent()) { // Пытаемся отсканировать rfid uid delay(100); if (mfrc522.PICC_ReadCardSerial()) { //mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); frcUID = ""; for (byte i = 0; i < mfrc522.uid.size; i++) { frcUID = frcUID + (mfrc522.uid.uidByte[i]); } frcUID = ". . . New RFID UID=" + frcUID + "@ . . ."; rfidYes = 1; Serial.println(frcUID); delay(400); Serial.println(frcUID); delay(400); Serial.println(frcUID); delay(400); Serial.println(frcUID); } } if (rfidYes == 0) { Serial.println(". . . RFID error! . . ."); delay(400); } modeState = 1; break; } } // функция возвращает номер, введённый с COM-порта uint8_t readnumber(void) { int num = -1; // Переменная с номером, который требуется вернуть while (num < 0) { // Вход в цикл, пока переменная num не станет >= 0 while (!Serial.available()); // Warten, bis Daten im COM-Port-Puffer erscheinen while (Serial.available()) ( // Schleife, bis der COM-Port-Puffer keine Daten mehr hat char c = Serial.read(); // Weisen Sie das nächste Zeichen vom COM-Port zu zur Variablen c if (isdigit(c)) ( // Wenn der Wert der Variablen c eine Ziffer ist, dann... if (num< 0) { num = 0; // Увеличиваем значение num на один порядок } else { num *= 10; } num += c - "0"; // Прибавляем к значению num цифру из переменной c } delay(5); // Задержка на 5мс, чтоб в буфер COM-порта успели догрузиться следующие символы (если таковые имеются) } } return num; // Возвращение введённого числа } uint8_t getFingerprintEnroll() { int p; // Переменная для получения результатов выполнения функций //Загрузка первого изображения отпечатка пальца p = -1; Serial.println(". . . Please put your new finger on the scanner . . ."); // Вывод сообщения "Пожалуйста положите Ваш палец на сканер" delay(400); Serial.println(". . . Please put your new finger on the scanner . . ."); // Вывод сообщения "Пожалуйста положите Ваш палец на сканер" delay(400); Serial.println(". . . Please put your new finger on the scanner . . ."); // Вывод сообщения "Пожалуйста положите Ваш палец на сканер" delay(400); Serial.println(". . . Please put your new finger on the scanner . . ."); // Вывод сообщения "Пожалуйста положите Ваш палец на сканер" while (p != FINGERPRINT_OK) { // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_OK (корректная загрузка изображения) p = finger.getImage(); // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p switch (p) { // Проверка ответа... case FINGERPRINT_OK: Serial.println(" Ok!"); break; // Изображение отпечатка пальца корректно загрузилось case FINGERPRINT_NOFINGER: Serial.println(". . . Please put your new finger on the scanner . . ."); break;// Сканер не обнаружил отпечаток пальца case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . ."); break; // Ошибка соединения case FINGERPRINT_IMAGEFAIL: Serial.println(". . . Imaging error Please try again . . ."); break; // Ошибка изображения default: Serial.println(". . . Unknown error Please try again . . ."); break; // Неизвестная ошибка } } //Конвертирование изображения первого отпечатка пальца p = finger.image2Tz(1); Serial.print (". . . Image converting . . ."); // Конвертируем первое изображение и возвращаем результат выполнения данной операции в переменную p switch (p) { // Проверка ответа... case FINGERPRINT_OK: Serial.println("Ok!"); break; // Изображение сконвертировано case FINGERPRINT_IMAGEMESS: Serial.println(". . . Image too messy . . ."); return p; // Изображение слишком нечеткое case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . ."); return p; // Ошибка соединения case FINGERPRINT_FEATUREFAIL: Serial.println(". . . No fingerprint on image . . ."); return p; // Ошибка конвертирования case FINGERPRINT_INVALIDIMAGE: Serial.println(". . . No fingerprint on image . . ."); return p; // Ошибка изображения default: Serial.println(". . . Unknown error . . ."); return p; // Неизвестная ошибка } //Просим убрать палец от сканера p = 0; while (p != FINGERPRINT_NOFINGER) { // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_NOFINGER (сканер не обнаружил отпечаток пальца) Serial.println(". . . Please remove your finger from the scanner . . ."); // Вывод сообщения "Пожалуйста уберите Ваш палец со сканера" delay(400); p = finger.getImage(); // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p } Serial.println(" Ok!"); //Загрузка второго изображения отпечатка пальца p = -1; Serial.println(". . . Place same finger again . . ."); // Вывод сообщения "Пожалуйста положите тот же палец еще раз" delay(400); while (p != FINGERPRINT_OK) { // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_OK (корректная загрузка изображения) p = finger.getImage(); // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p switch (p) { // Проверка ответа... case FINGERPRINT_OK: Serial.println(" Ok!"); break; // Изображение отпечатка пальца корректно загрузилось case FINGERPRINT_NOFINGER: Serial.println(". . . Place same finger again . . ."); break; // Сканер не обнаружил отпечаток пальца case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . ."); break; // Ошибка соединения case FINGERPRINT_IMAGEFAIL: Serial.println(". . . Imaging error . . ."); break; // Ошибка изображения default: Serial.println(". . . Unknown error . . ."); break; // Неизвестная ошибка } } //Конвертирование изображения второго отпечатка пальца p = finger.image2Tz(2); Serial.print (". . . Image 2 converting . . ."); // Конвертируем второе изображение и возвращаем результат выполнения данной операции в переменную p switch (p) { // Проверка ответа... case FINGERPRINT_OK: Serial.println("Ok!"); break; // Изображение сконвертировано case FINGERPRINT_IMAGEMESS: Serial.println(". . . Image too messy . . ."); return p; // Изображение слишком нечеткое case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . ."); return p; // Ошибка соединения case FINGERPRINT_FEATUREFAIL: Serial.println(". . . No fingerprint on image . . ."); return p; // Ошибка конвертирования case FINGERPRINT_INVALIDIMAGE: Serial.println(". . . No fingerprint on image . . ."); return p; // Ошибка изображения default: Serial.println(". . . Unknown error . . ."); return p; // Неизвестная ошибка } //Создание модели (шаблона) отпечатка пальца, по двум изображениям p = finger.createModel(); Serial.print (". . . Creating model . . ."); // Создание модели (шаблона) отпечатка пальца, по двум изображениям if (p == FINGERPRINT_OK) { Serial.println(". . . Model create! Ok! . . ."); } else // Модель (шаблон) отпечатка пальца создана if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println(". . . Communication error . . ."); return p; } else // Ошибка соединения if (p == FINGERPRINT_ENROLLMISMATCH) { Serial.println(". . . Fingerprints did not match . . ."); return p; } else // Отпечатки пальцев не совпадают { Serial.println(". . . Unknown error . . ."); // Неизвестная ошибка return p; } //Сохранение, ранее созданной, модели (шаблона) отпечатка пальца, под определённым ранее, идентификационным номером p = finger.storeModel(id); //Serial.println(". . . Saving model . . ."); Serial.println(". . . Saving model . . ."); //Serial.println(". . . Saving model in ID="); Serial.print(id); Serial.print(": "); // Сохранение модели (шаблона) отпечатка пальца, по двум изображениям if (p == FINGERPRINT_OK) { frcUID = ". . . Model save in ID=" + String(id) + "! . . ."; Serial.println(frcUID); delay(1500); Serial.println(frcUID); delay(400); Serial.println(frcUID); delay(400); Serial.println(frcUID); } else // Модель (шаблон) отпечатка пальца сохранена if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println(". . . Communication error . . ."); return p; } else // Ошибка соединения if (p == FINGERPRINT_BADLOCATION) { Serial.println(". . . Could not store in that location . . ."); return p; } else // Не удалось сохранить в этом месте if (p == FINGERPRINT_FLASHERR) { Serial.println(". . . Error writing to flash . . ."); return p; } else // Ошибка записи в flash память { Serial.println(". . . Unknown error . . ."); // Неизвестная ошибка return p; } }

Epilog

Der Preis des Tablets beträgt etwa 10.000 Rubel. (tatsächlich kann man ab 7000 neue mit 1 GB RAM kaufen, aber mit 4 GB 1c wird es angenehmer zu bewegen sein, ich habe tatsächlich eine gebrauchte für 6000 in einwandfreiem Zustand mit 1 GB gekauft, aber an der Optimierung herumgebastelt).

Der Durchgang war für die Möbelproduktion gedacht, daher habe ich den Korpus dort gefertigt. Ich denke, dass man in einem Geschäft für 1.000 Rubel eine „Mischung aus Sägemehl und Pappe“ schneiden kann. und mit selbstschneidenden Schrauben zusammenschrauben/mit Sekundenkleber verkleben. Als letzten Ausweg können Sie einen fertigen Kasten (z. B. einen Schaltschrank) nehmen und dort ein Fenster ausschneiden.

Arduino-Module und so weiter: etwa 2.000 Rubel.

Die Freude am Brainstorming und Gestalten ist unbezahlbar!

Wenn Sie ein relativ altes Gerät verwenden, sollten Sie sich nicht vorzeitig aufregen. Anstatt Ihren alten Laptop gegen einen moderneren mit integriertem biometrischen Sensor auszutauschen, können Sie ihn über USB anschließen.

Der PQI Mini-USB-Fingerabdruckleser ist eine gute Wahl für alle, die alten Geräten ein zweites Leben geben möchten. Der Scanner wurde speziell für die Arbeit mit der neuen Hello-Funktion entwickelt, die auf Geräten mit Windows 10 verfügbar ist. Das Gerät unterstützt jedoch auch Versionen der Betriebssysteme Windows 7 und 8.

Einer der Hauptvorteile des Sensors besteht darin, dass er über eine 360-Grad-Scanfunktion verfügt. Sie müssen sich also keine Gedanken darüber machen, wie Sie Ihr Gerät am besten an Ihren PC anschließen. Nutzen Sie den nächstgelegenen USB-Anschluss und legen Sie los. Wenn der Scanner einen Fingerabdruck benötigt, fährt er automatisch dorthin, wo er benötigt wird, und vergleicht die empfangenen Daten mit der gespeicherten Kopie.

Der PQI Mini USB-Fingerabdruckleser kann bis zu 10 verschiedene Profile speichern. Dadurch eignet sich das Gerät hervorragend zum Teilen oder wenn Sie einen zusätzlichen Finger scannen müssen (wenn der „Hauptfinger“ schmutzig oder verletzt wird).

Der PQI Mini USB-Fingerabdruckleser ist zu einem sehr günstigen Preis erhältlich und somit eine ausgezeichnete Wahl für alle, die ein Einsteigermodell suchen. Darüber hinaus ist der Scanner tragbar genug, um ihn problemlos mit sich herumzutragen.

Verifi P2000 Fingerabdruckleser

Wenn Sie einen Desktop-Computer verwenden, bei dem es nicht so einfach ist, an USB-Anschlüsse zu gelangen, dann achten Sie auf den Fingerabdruckleser Verifi P2000. Es lässt sich problemlos an einen PC anschließen und – was am wichtigsten ist – kann für eine komfortablere Nutzung in der Nähe des Computers platziert werden.

Der Scanner ist aus schlagfestem Metall gefertigt und hält viele Jahre. Trotz seines robusten Designs verfügt es über eine gute Fingerabdruckerkennungsrate. Sie müssen also nicht ständig die Position Ihres Fingers ändern, um eine perfekte Übereinstimmung zu erzielen. In den meisten Fällen reicht es aus, nur einmal über den Sensor zu streichen.

Bei der Entwicklung des P2000 plante Verifit, das Gerät robust und langlebig zu machen, damit es keinen Einfluss auf den Scanvorgang und die Genauigkeit der Erkennungsergebnisse hat. Der Fingerabdruckleser Verifi P2000 ist ein relativ tragbares Gerät, das Sie problemlos mitnehmen können. Darüber hinaus ist es mit einer viel größeren Anzahl von Computern kompatibel als andere ähnliche Modelle.

Kensington VeriMark

Für einen unglaublich kleinen Fingerabdruckscanner bietet der Kensington VeriMark fast alles, was Sie für ein komfortables Erlebnis benötigen. Das Modell unterstützt 360-Grad-Scannen und ist klein. Aber was Kensington VeriMark vor allem so wertvoll macht, ist die zusätzliche Funktionalität.

Das Gerät speichert alle empfangenen Daten verschlüsselt. Wenn der Sensor einen Fingerabdruck scannt, verschlüsselt er ihn sofort. Es ist unmöglich, diesen Prozess zu unterbrechen, sodass ein Hacken der Soft- oder Hardware und das Extrahieren biometrischer Daten nicht möglich ist.

Darüber hinaus nutzt das Gerät zur Entschlüsselung der empfangenen Scans eine spezielle Vorlage, über die nur der Hersteller verfügt. Dies macht es sicherer vor Hackerangriffen und anderen Versuchen, sich unbefugten Zugriff zu verschaffen.

Der Scanner unterstützt die Arbeit mit relativ alten Ports, unabhängig von der Release-Version. Wenn Sie ein Modell mit USB-C-zu-USB-A-Adapter verwenden, können Sie das Gerät an einen relativ alten Laptop oder Computer anschließen, der modernere USB-Anschlüsse nicht unterstützt.

Benss Fingerabdruck-Lesegerät-Analysator

Der Benss Fingerprint Reader Analyzer ist ein weiterer Scanner, der Ihnen das Leben erleichtern und Ihnen viele Probleme ersparen kann. Bei einfacheren Modellen wird in der Regel zunächst ein Kontrollfoto gemacht, anschließend werden alle weiteren Abzüge mit dem Ausgangsergebnis verglichen. Das heißt, wenn etwas mit dem Originalbild (mit dem alle anderen Scans verglichen werden) passiert, sinkt die Wahrscheinlichkeit, dass die Endergebnisse übereinstimmen, erheblich.

Der Benss Fingerprint Reader Analyzer arbeitet mit einem selbstlernenden Algorithmus, der Ihr Profil bei jeder Berührung automatisch erstellt und aktualisiert. Je länger Sie das Gerät verwenden, desto genauer sind die Ergebnisse. Dadurch wird es schwieriger, den Scanner mit gefälschten Fingerabdrücken zu täuschen. Da der Sensor ständig Ihren Finger scannt und die Datenbank aktualisiert, erkennt er Versuche, sich unbefugten Zugriff zu verschaffen, sofort.

Dies ist eines der effektivsten Mittel zur Abwehr von Hackerangriffen. Die Falschakzeptanzrate beträgt weniger als 0,002 %, was bedeutet, dass Sie wirklich versuchen müssen, das Gerät zu hacken. Gleichzeitig erschwert dies die Arbeit nicht wesentlich; der FRR-Koeffizient (False Rejection Rate – Verweigerung des Zugangs zu einer im System registrierten Person) beträgt nur 3 %.

IDEM BioScan Compact

Wenn Sie auf der Suche nach einem anpassbaren Scanner sind, werden Sie vom IDEM BioScan Compact begeistert sein. Um die Grundfunktionen zu erweitern und zusätzliche Funktionen zu erhalten, laden Sie einfach spezielle Software von der offiziellen Website des Herstellers herunter.

Anschließend können Sie einzelne Dateien und Ordner auf Ihrem Computer verschlüsseln sowie Anmelde- und Passwortdaten für den Zugriff auf Websites in einem speziellen Programm hinterlegen. Auf diese Weise können Sie sich bei beliebigen Internetportalen anmelden, indem Sie einfach den Sensor mit dem Finger berühren.

Auch wenn man die zusätzliche Funktionalität nicht berücksichtigt, gilt der BioScan Compact als würdiges Modell. Das Gerät kann bis zu 10 verschiedene Fingerabdrücke speichern, zeichnet sich durch geringe Abmessungen und integrierte Sicherheitsfunktionen zur Erkennung gefälschter biometrischer Daten aus.

Blucoil SecuGen Hamster Pro 20

Blucoil SecuGen Hamster Pro 20 ist der ideale Fingerabdruckscanner für professionelle Anforderungen. Aufgrund der Tatsache, dass das Modell über erweiterte Sicherheitseinstellungen verfügt, ist sein Preis fast doppelt so hoch wie bei anderen Geräten auf unserer Liste.

Darüber hinaus ist es einer der wenigen Scanner mit offizieller Linux-Unterstützung. Egal welches Betriebssystem Sie nutzen, der Sensor ist für jede Aufgabe geeignet.

SecuGen Hamster Pro 20 ist ein stoßfestes Gerät, das vor Kratzern, Wasser und Staub geschützt ist. Der Scanner ist in der Lage, Spuren früherer Scans zu verfolgen und unklare Ergebnisse auszuschließen.

Darüber hinaus ist Blucoil SecuGen Hamster Pro 20 ein energiesparendes Gerät, das sich automatisch ausschaltet, wenn es längere Zeit nicht benutzt wird.

Zusätzliche Sicherheit

In den letzten Jahren wurde eine große Anzahl mobiler und Desktop-Geräte mit integriertem Fingerabdruckscanner auf den Markt gebracht, und ihre Zahl wächst jedes Jahr. Wenn Ihr Computer nicht über einen integrierten Sensor zur Erkennung biometrischer Daten verfügt, besteht kein Grund zur Sorge. Es gibt eine große Auswahl an USB-Scannern für PCs und Laptops, die mit fast allen gängigen Modellen kompatibel sind.

Um eine Verbindung mit dem Fingerabdrucksensor herzustellen, wurde eine Anleitung von Josh Hawley verwendet (direkter Download der Anleitung).

Um den Betrieb des Fingerabdruckscanners mit der Buchstabenanzeige zu debuggen, ist eine Synchronisierung erforderlich.

Der Fingerabdrucksensor verfügt über einen eigenen Speicher zum Speichern gescannter Bilder. Nachdem der Sensor seine Arbeit aufgenommen hat, laden Sie ihn herunter, indem Sie ihn zur Fingerabdruckdatenbank unter Adresse 0 hinzufügen. Öffnen Sie die Verwaltungskonsole auf Ihrem Computer und befolgen Sie die Popup-Eingabeaufforderungen.

Codes – Blink-Beispiel:

/* Bibliotheksbeispiel zur Steuerung des GT-511C3 Fingerabdruckscanners (FPS) */ #include „FPS_GT511C3.h“ #include „SoftwareSerial.h“ //Hardware-Setup – FPS verbunden mit: //digitaler Pin 10(arduino rx, fps tx) //digitaler Pin 11 (arduino tx – 560-Ohm-Widerstand fps tx – 1000-Ohm-Widerstand – Masse) //Dies senkt die 5-V-Tx-Leitung auf etwa 3,2 V, damit wir unsere FPS nicht durchbrennen FPS_GT511C3 fps(10, 11); void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // damit Sie die Meldungen im seriellen Debug-Bildschirm sehen können fps.Open(); ) void loop())( // FPS Blink-LED Testen Sie fps .SetLED(true); // schalten Sie die LED innerhalb der fps-Verzögerung ein (1000);// schalten Sie die LED innerhalb der fps-Verzögerung aus (1000);

Codes – Beispiel für die Anmeldung:

/* FPS_Enroll.ino – Bibliotheksbeispiel zur Steuerung des GT-511C3 Fingerabdruckscanners (FPS) */ #include „FPS_GT511C3.h“ #include „SoftwareSerial.h“ //Hardware-Setup – FPS verbunden mit: //digitalem Pin 10 (arduino rx, fps tx) //digitaler Pin 11 (arduino tx - 560 Ohm Widerstand fps tx - 1000 Ohm Widerstand - Masse) // Dadurch wird die 5-V-Sendeleitung auf etwa 3,2 V gesenkt, sodass wir unsere fps nicht verbrennen FPS_GT511C3 fps(10, elf); void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Enroll test // open finden enroll id int enrollid = 0; fps.EnrollStart(enrollid); // enroll Serial.print("Drücken Sie den Finger, um # zu registrieren); while(fps.IsPressFinger() == false) Verzögerung(100) ; .CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Finger entfernen"); fps.Enroll1(); while(fps.IsPressFinger() == true ) Verzögerung(100) ; Serial.println("Drücken Sie denselben Finger erneut"); while(fps.IsPressFinger() == false) delay(100); ( Serial.println("Finger entfernen"); fps.Enroll2(); while(fps. IsPressFinger() == true) Verzögerung(100); Serial.println("Drücken Sie denselben Finger noch einmal" while(fps. IsPressFinger() == false) Verzögerung(100); if (bret != false) ( Serial.println("Finger entfernen"); iret = fps.Enroll3(); if (iret == 0) ( Serial.println("Enrolling Successfull"); ) else ( Serial.print("Registrierung fehlgeschlagen mit Fehlercode:"); Serial.println(iret); ) ) else Serial.println("Erfassen des dritten Fingers fehlgeschlagen"); ) else Serial.println("Fehler beim Erfassen des zweiten Fingers"); ) else Serial.println("Erfassung des ersten Fingers fehlgeschlagen"); ) void loop())( Verzögerung(100000); )

Datei synchronisieren:

Skizzenregistrierungsdatei:

Stufe 7: Programmierung des ATtiny85-Prozessors

Der ATtiny85-Mikrochip ist günstig und vollständig mit der Arduino-Platine kompatibel. Er ist wahrscheinlich das beste elektrische Bauteil, das jemals entwickelt wurde!

Außerdem wird ein Arduino-Programmierer benötigt, um den ATmega328-Chip neu zu flashen, der den Betrieb des LCD-Displays steuert.

Im zusammengebauten Gerät führt der ATtiny-Prozessor sehr einfache Befehle aus: Prüfen Sie, ob ein Signal vom ATmega kommt, und öffnen Sie das Garagentor, wenn das Signal bestätigt wird.

Um den Prozessor zu programmieren, muss er über ein Steckbrett zusammen mit einem 10-uF-Kondensator an den Programmierer angeschlossen werden, wie im Bild unten gezeigt.

Und dann herunterladen endgültiger Code und befolgen Sie die Empfehlungen Anleitungen von High-Low Tech.

Anschließend muss der mit der LED verbundene Ausgang 13 auf der Arduino-Platine in den HIGH-Zustand geschaltet werden, um den Betrieb anhand der Leuchtanzeige zu überwachen.

Endgültiger Code für Winzig :

//fpsAttiny von Nodcah //Erhält ein kurzes Signal vom Hauptmodul, um ein Relais zu schließen. void setup())( pinMode(2,OUTPUT); //Anzeige durch 10K-Widerstand geführt pinMode(4,OUTPUT); //Trasistor-Pin das öffnet die Garage pinMode(0,INPUT); //Eingabeverzögerung(500); //geben Sie den Dingen Zeit zum Starten digitalWrite(2, HIGH); //Anzeige-LED void loop())( if(digitalRead(0)) ) ( //einfaches Muster zum Auslösen des Transistors Delay(125); if(digitalRead(0)==false)( Delay(55); //die Timings sind aus, weil der Timer des ATtiny nicht perfekt ist if(digitalRead ( 0))( Verzögerung(55); if(digitalRead(0)==false)( Verzögerung(55); if(digitalRead(0))( Verzögerung(55); if(digitalRead(0)==false)( digitalWrite(4, HIGH); //Transistor „drückt“ die Taste verzögern(1000); digitalWrite(2, HIGH);

Biometrisches Schloss – endgültiger Code, Abdeckung ausschneiden, Garage vorbereiten GPS-Uhr auf Arduino Biometrisches Schloss – Diagramm und Montage des LCD-Displays



 


Lesen:



So ändern Sie den GPT-Partitionsstil auf einem Laptop

So ändern Sie den GPT-Partitionsstil auf einem Laptop

Ein Freund brachte mir seinen Lenovo Laptop und bat mich, Windows 10 statt Windows 8 darauf zu installieren. Die „Acht“ steht übrigens schon seit...

Speccy kostenlos in der russischen Version herunterladen

Speccy kostenlos in der russischen Version herunterladen

Speccy ist ein kostenloses Diagnoseprogramm, mit dem Sie viele Informationen über Ihren Computer und seine Komponenten abrufen können. Dieses kompakte Programm mit...

Was tun, wenn das Startmenü Windows 10 nicht mit dem regulären Menü öffnet?

Was tun, wenn das Startmenü Windows 10 nicht mit dem regulären Menü öffnet?

Endlich kam Microsoft seinen Nutzern entgegen und brachte das klassische Startmenü in das Betriebssystem Windows 10 zurück. Neue Speisekarte...

Windows XP blieb ohne Unterstützung

Windows XP blieb ohne Unterstützung

Evgeniy Zolotov In der Liste der IT-Wunder gibt es eines, das in seiner Größe alle anderen übertrifft. Das ist Windows XP. Der ehemals beliebteste Operationssaal...

Feed-Bild RSS