Pour créer une connexion avec le capteur d'empreintes digitales, les instructions de Josh Hawley ont été utilisées (téléchargement direct des instructions).
Pour déboguer le fonctionnement du scanner d'empreintes digitales avec l'affichage des lettres, une synchronisation est nécessaire.
Le capteur d'empreintes digitales possède sa propre mémoire pour stocker les images numérisées. Ainsi, une fois que le capteur commence à fonctionner, téléchargez-le en l'ajoutant à la base de données d'empreintes digitales à l'adresse 0. Ouvrez la console de gestion sur votre ordinateur et suivez les invites contextuelles.
Codes – Exemple de clignotement :
/* Exemple de bibliothèque pour contrôler le scanner d'empreintes digitales (FPS) GT-511C3 */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configuration matérielle - FPS connecté à : //broche numérique 10(arduino rx, fps tx) // broche numérique 11 (arduino tx - résistance 560ohm fps tx - résistance 1000ohm - masse) // cela ramène la ligne 5v tx à environ 3,2v donc nous ne faisons pas frire nos fps FPS_GT511C3 fps (10, 11); void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // pour que vous puissiez voir les messages dans l'écran de débogage série fps.Open(); ) void loop())( // FPS Blink LED Test fps .SetLED(true); // allume la LED à l'intérieur du délai fps (1000); fps.SetLED(false); // éteint la LED à l'intérieur du délai fps (1000); )
Codes – Exemple d’inscription :
/* FPS_Enroll.ino - Exemple de bibliothèque pour contrôler le scanner d'empreintes digitales (FPS) GT-511C3 */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configuration matérielle - FPS connecté à : //broche numérique 10 (arduino rx, fps tx) // broche numérique 11 (arduino tx - résistance 560ohm fps tx - résistance 1000ohm - masse) // cela ramène la ligne 5v tx à environ 3,2v donc nous ne faisons pas frire nos fps FPS_GT511C3 fps (10, onze); void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Test d'inscription // recherche ouverte enroll id int enrollid = 0; fps.EnrollStart(enrollid); // inscription Serial.print("Appuyez sur le doigt pour vous inscrire #"); Serial.println(enrollid); while(fps.IsPressFinger() == false) delay( 100) ; bool bret = fps.CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Supprimer le doigt"); fps.Enroll1(); while(fps.IsPressFinger() = = true ) delay(100); Serial.println("Appuyez à nouveau sur le même doigt"); while(fps.IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Supprimer le doigt"); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); Serial.println("Appuyez à nouveau sur le même doigt"); while( fps. IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Remove finger"); iret = fps.Enroll3(); if (iret == 0) ( Serial.println("Inscription réussie"); ) else ( Serial.print("Échec de l'inscription avec code d'erreur :"); Serial.println(iret); ) ) else Serial.println("Échec de la capture du troisième doigt"); ) else Serial.println("Échec de la capture du deuxième doigt"); ) else Serial.println("Échec de la capture du premier doigt"); ) boucle vide())( delay(100000); )
Fichier de synchronisation :
Dossier d'enregistrement d'esquisse :
Étape 7 : Programmation du processeur ATtiny85
La puce ATtiny85 est bon marché et entièrement compatible avec la carte Arduino, c'est probablement la meilleure pièce électrique jamais créée !
Un programmeur Arduino est également nécessaire pour reflasher la puce ATmega328, qui contrôle le fonctionnement de l'écran LCD.
Dans l'appareil assemblé, le processeur ATtiny exécutera des commandes très simples : rechercher un signal de l'ATmega et ouvrir la porte du garage lorsque le signal est confirmé.
Pour programmer le processeur, il doit être connecté à l'aide d'une maquette au programmateur avec un condensateur de 10 uF, comme indiqué dans l'image ci-dessous.
Et puis téléchargez code final et suivez les recommandations instructions de High-Low Tech.
Ensuite, la sortie 13 de la carte Arduino, connectée à la LED, doit être commutée à l'état HIGH pour surveiller le fonctionnement à l'aide de l'indication lumineuse.
Code final pour ATtiny :
//fpsAttiny par Nodcah //Reçoit un bref signal du module principal pour fermer une configuration de relais vide())( pinMode(2,OUTPUT); //indicateur mené à travers une résistance 10K pinMode(4,OUTPUT); //broche de trasistor qui ouvre le garage pinMode(0,INPUT); //délai d'entrée(500); //donner aux choses le temps de démarrer digitalWrite(2, HIGH); //indicateur LED ) void loop())( if(digitalRead(0 )) ( //modèle simple pour déclencher le retard du transistor (125); if(digitalRead(0)==false)( delay(55); //les timings sont désactivés car le timer de l'ATtiny n'est pas parfait if( digitalRead( 0))( delay(55); if(digitalRead(0)==false)( delay(55); if(digitalRead(0))( delay(55); if(digitalRead(0)==false) ( digitalWrite (4, HIGH); //le transistor "appuie" sur le bouton delay(1000); digitalWrite(4,LOW); digitalWrite(2,LOW); delay(1000); digitalWrite(2, HIGH); ) ) ) ) ) )
Serrure biométrique - code final, découpe du couvercle, préparation du garage Horloge GPS sur Arduino Serrure biométrique - Schéma et montage de l'écran LCD
De quoi avez-vous besoin
- Module d'empreintes digitales FPM10A
- Module RFID RC522
- Arduino mega (théoriquement, d'autres cartes peuvent être utilisées, mais j'ai opté pour celle-ci en raison du nombre de broches)
- 1 licence pour 1C 8.2 (client gros dans mon cas, coupez-le vous-même pour un mince)
- Communication via le port Com en utilisant MsCommLib.MsComm (vous avez besoin d'une licence, vous pouvez même la rechercher sur Google ici)
- Environnement de développement pour Arduino (1.8.5 utilisé)
- Tablette avec interface USB.
- Faisceau : résistance 1 Kilo Ohm, bouton de court-circuit, fils, ruban électrique « bleu », analyseur de fluage thermorectal si vous le souhaitez (vous pouvez tordre les fils si vous avez des sensations proches, indescriptibles associées à cet appareil), câble USB pour Arduino, bras droits et circonvolutions tordues du surnom moyen 1s incl. faire un corps pour tout ce miracle.
Remarques : sur la photo, les couleurs des fils sont différentes - lors du processus d'installation, plusieurs fils ont été cassés car... Ils étaient complètement Huawei et j'ai dû prendre d'autres couleurs disponibles.
Le système de messagerie est volontairement dupliqué aux moments critiques.
Je vous préviens tout de suite que l'ingénieur moyen peut avoir les larmes aux yeux à cause de la colophane, mais c'est mon premier projet Arduino, et un d'une telle complexité, et il semble fonctionner et fonctionner de manière stable. Au début, il y avait l'idée de tout faire via le réseau (wifi + filaire), mais après avoir estimé les coûts de débogage et de création de mon propre service http et tout implémenté en 1C, j'ai décidé d'utiliser com ; en tout cas, toute la logique peut être transféré vers un traitement externe sans modifier la conf.
Vous pouvez également insérer un système pour photographier un employé entrant via la webcam de la tablette, ajouter un relais et contrôler les portails électroniques, intégration complète avec la ZUP grâce à un traitement externe transmis via les paramètres de lancement et annihilation du carnaval pour les passerelles particulièrement dangereuses d'importance secrète) .
Les critiques utiles sont les bienvenues.
Prologue
En voyant les prix des systèmes d’accès et des systèmes de suivi du temps existants, l’essence verte a lentement commencé à m’étouffer. Après avoir longuement parcouru l'Arduino et ses modules, je suis tombé sur le module d'empreinte digitale FPM10A. Ce module, selon les versions, peut stocker un grand nombre d'empreintes digitales - de 50 à l'infini dans sa mémoire flash et est utilisé dans la plupart des modules des fabricants de contrôles biométriques. Cependant, dans mon projet, à cause de la librairie, elle est limitée à 254. Je vous préviens tout de suite que je poste ma librairie exhaustivement trouvée pour Arduino car... J'ai longtemps lutté avec la recherche et j'ai perdu 3 jours à chercher et à déboguer la bibliothèque de ce module.
Description des modules
La bibliothèque utilisée dans le projet permet d'utiliser jusqu'à 256 empreintes digitales (octets). Ce montant était pour moi excessif : dans les cas extrêmes, vous pouvez utiliser 1 module pour 256 salariés.
Le nombre d'étiquettes RFID n'est limité que par le caractère unique de leur UID. la base de données peut être stockée dans 1C et liée aux employés. Toutes les balises compatibles peuvent être utilisées. Théoriquement, toutes les clés d'interphone, de carte de métro et de carte troïka peuvent convenir.
La connexion à 1c passe par le port com via la bibliothèque MsCommLib.MsComm, mais elle peut être réécrite sur n'importe quel autre. Les pilotes pour le port COM pour Arduino doivent être installés avec l'environnement de développement Arduino, mais ils peuvent également être recherchés sur Google.
Tout ce qui est soudé est caché dans un boitier, connecté via le réseau (j'ai utilisé le WiFi, mais on peut aussi utiliser une carte réseau USB externe).
Algorithme de travail
Matériel:
- Nous soudons/torsadons les modules Arduino
- Nous nous connectons à un programmeur PC et téléchargeons le firmware sur l'Arda, exécutons le test, nous assurons que les commandes fonctionnent
- Ils se connectent via USB à une tablette Windows 10. Sur la tablette on la remplace soit par chargement automatique :
A) via un fichier corps :
démarrer - exécuter : shell: démarrage
créez-y un fichier à l'aide du Bloc-notes avec le nom hz.bat et son contenu (je suis sûr que vous pouvez gérer vous-même les paramètres de la base de données de fichiers - j'ai SQL) : « C:\Program Files\1cv8\ ... \bin\1cv8 .exe » ENTERPRISE / SServerName:Port\DBName" /NUser /PPassword
B) on en fait un plus avancé en remplaçant le shell par un script VB (veillez à créer un autre utilisateur en plus de celui par défaut sans lancer le shell) :
créez un fichier à l'aide du Bloc-notes avec le nom C:\hz\hz.vbs et son contenu
set oShell=createobject("wscript.shell")
sCmd="""C:\Program Files\1cv8\ ... \bin\1cv8.exe"" ENTERPRISE /SServerName:Port\DBName" /NUser /PPassword"
oShell.run sCmd, vrai
sCmd="arrêt /r /t 0"
oShell.run sCmd
démarrer - exécuter : regedit, suivez la branche : Current User\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
ajoutez le paramètre de chaîne "Shell" (REG_SZ)
éditez-le : "wscript C:\hz\hz.vbs" (sans les guillemets dans le paramètre)
redémarrez et testez. 1c devrait démarrer sans explorera
- Ensuite, nous nous assurons qu'il fonctionne et l'emballons dans une boîte.
Par programme :
- Dans l'état normal, l'Arduino interroge le scanner d'empreintes digitales, le scanner RFID, le bouton d'administration et envoie des commandes d'attente via le port COM.
- Dès qu'un doigt apparaît dans le champ de vision du lecteur, nous envoyons une commande au port com et 1c voit soit l'ID du doigt, soit l'UID du tag grâce à la lecture des variables.
- Le bouton est nécessaire pour gérer les empreintes digitales. Lorsque vous appuyez dessus, 1c demande un mot de passe de connexion et peut ensuite attribuer à l'employé soit un identifiant de scanner, soit un UID de carte via le système de messagerie.
Pour communiquer avec 1c, on utilise les lignes suivantes (j'ai fait le traitement pour ma conf et ma timesheet, c'est dans le projet juste par exemple mais est inclus dans le code source) :
Connexion au port COM
Procédure StartSystem() ComPort = New COMObject("MsCommLib.MsComm"); Essayez 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 ; Exception Warning("Il n'est pas possible d'ouvrir le port!"); ThisForm.Close(); FinTentative ; hSecondes = 0 ; ConnectWaitHandler("OutputSportData", 1, False); // Connecter un handler pour surveiller le port Fin de procédure
Déconnexion du port COM
Procédure EndSystem() DisableWaitHandler("OutputSportData"); ComPort.PortOpen = Faux ; ComPort = "" ; Fin de la procédure
Lecture des données du port COM
Procédure OutputSportData() ExportSportData = ""; Si ComPort.PortOpen Alors //ComPort.Output = "1" ; SportsData = ComPort.Input ; ProcessEncryptedString(SportData); Si abrégé (pré-employé)<>"" Alors hSecondes = hSecondes + 1 ; fin si; Si hSecondes > 60 Alors PreEmployee = 0 ; hSecondes = 0 ; fin si; Sinon Attention("Le port ne s'ouvre pas"); ThisForm.Close(); fin si; Fin de la procédure Procédure Processus Chaîne cryptée (Données sportives) Tableau = Données sportives.Unload(); IndexMin = SportsData.GetLowerBound(0); IndexMax = SportsData.GetUpperBound(0); ChaîneInfo = "" ; Pour Index = IndexMin Par IndexMax - 1 Cycle SymbolReceived = AbbrLP(Array.Get(Index)); Si CharacterReceived = "13" Alors si non Suspendre alors RowInfo = RowProcessing(RowInfo); //Ici traitement des messages EndIf; Sinon LineInfo = LineInfo + Symbol(Number(SymbolReceived)); fin si; Fin du cycle ; Fin de la procédure
Envoi d'informations au port COM
Procédure SendToPort(Send) Si ComPort.PortOpen Then ComPort.Output = AbbrLP(Send); Else Notify("Le port ne s'ouvre pas", MessageStatus.VeryImportant); fin si; Fin de la procédure
Code de projet pour Arduino Mega
#inclure
Épilogue
Le prix de la tablette est d'environ 10 000 roubles. (en fait, à partir de 7000 neufs on peut en acheter avec 1 Go de RAM, mais avec 4 Go 1c ce sera plus agréable à déplacer, j'en ai effectivement acheté un d'occasion pour 6000 en parfait état avec 1 Go mais bricolé avec l'optimisation).
Le passage a été réalisé pour la production de meubles, j'y ai donc réalisé la carrosserie. Je pense qu'on peut découper un « mélange de sciure et de carton » dans un magasin pour 1 000 roubles. et vissez-le avec des vis autotaraudeuses/collez-le avec de la superglue. En dernier recours, vous pouvez prendre un coffret tout fait (par exemple, une armoire électrique) et y découper une fenêtre.
Modules Arduino et ainsi de suite : environ 2 000 roubles.
Le plaisir de réfléchir et de réaliser n’a pas de prix !
Bien que vous puissiez accéder à des systèmes sécurisés via des mots de passe et des clés, les deux options peuvent être peu pratiques et faciles à oublier. Dans ce tutoriel, nous apprendrons comment utiliser le module FPM10A avec la bibliothèque Adafruit Arduino pour créer un système d'empreintes biométriques.
Par tradition, nous commençons par les composants de notre leçon.
Détails
- Module d'empreintes digitales FPM10A
- Arduino Uno
Bibliothèques et logiciels
- EDI Arduino
- Bibliothèque d'empreintes digitales Adafruit
Diagramme de connexion
Le schéma de connexion du module FPM10A et de l'Arduino Uno doivent être connectés ensemble comme sur la figure ci-dessus. Nous y reviendrons plus en détail dans la prochaine étape.
Composants de connexion
Démarrer avec ce module est incroyablement simple car il utilise un port série pour la communication. Cependant, comme l'Arduino Uno ne dispose que d'un seul port série matériel, vous devez utiliser le port série via un logiciel utilisant les broches 2 et 3 pour communiquer avec le module d'empreintes digitales (le port série matériel est réservé à la communication avec le PC).
Le câble plat fourni avec le module FPM10A n'est pas très adapté aux loisirs, car les fils sont placés dans le boîtier au pas de 1,27 mm. Nous avons donc coupé un côté puis connecté les fils aux cavaliers.
Installation et utilisation de la bibliothèque
La première étape de l'utilisation du FPM10A consiste à installer la bibliothèque Fingerprint d'Adafruit, ce qui peut être effectué à l'aide du gestionnaire de bibliothèque. Ouvrez l'IDE Arduino et accédez à :
Sketch → Inclure la bibliothèque → Gérer les bibliothèques
Lorsque le gestionnaire de bibliothèque charge une recherche « Fingerprint », le premier résultat doit être la bibliothèque d'empreintes digitales Adafruit. Installez-le.
Après avoir installé la bibliothèque, il est temps de créer un nouveau projet Arduino. Cliquez sur Fichier → Nouveau puis enregistrez le projet dans son propre dossier. À ce stade, ouvrez le dossier de votre projet et copiez-y le fichier «fingerprint.h».
Il s'agit d'un fichier d'en-tête spécial qui a été écrit pour faciliter l'utilisation de la bibliothèque d'empreintes digitales. Le fichier d'en-tête n'a que trois fonctions :
- Fingerprint_setup() - configure le port série pour 9600 bauds et se connecte au module ;
- readFingerprint() - une fonction d'interrogation qui renvoie -1 si quelque chose s'est mal passé, ou renvoie des informations indiquant qu'une empreinte digitale réussie a été trouvée
- enrollFingerprint (int id) - ajoute une empreinte digitale au système avec l'identifiant attribué « id ».
Pour inclure ce fichier dans votre projet, utilisez simplement la commande include comme indiqué ci-dessous :
#include "empreinte digitale.h"
La première fonction que vous devez appeler dans setup() est Fingerprint_setup(), qui se connecte automatiquement au module et confirme que tout fonctionne.
Annuler la configuration() ( empreinte digitale_setup(); )
Pour ajouter une nouvelle empreinte digitale, appelez la fonction enrollFingerprint(id).
Cela renverra -1 si un échec se produit. Sinon, les valeurs indiquent un enregistrement réussi des empreintes digitales. L'ID fournissait cette fonction avec des liens vers l'empreinte digitale numérisée, et chaque empreinte digitale avait un numéro d'identification unique.
Inscrire l'empreinte digitale (0x01);
Code Arduino
Vous pouvez copier le croquis final de notre carte Arduino ci-dessous :
#include "fingerprint.h" void setup() ( Fingerprint_setup(); ) void loop() ( // Créer une nouvelle entrée d'empreinte digitale enrollFingerprint(0x01); delay(1000); // Demander l'entrée Serial.println(" \nUSER DEMANDE DE CONNEXION...PLACER LE DOIGT SUR LE CAPTEUR \n"); while(readFingerprint() == -1); Serial.println(" \nACCÈS ACCORDÉ \n"); Serial.println(" \nConfiance des empreintes digitales : " + String (confiance) + "\n"); delay(3000); )
Principe d'opération
Lorsque vous activez ce projet, il vous demandera d'abord de placer votre doigt sur le scanner. Si le scanner est capable de lire vos empreintes digitales, il vous demandera de retirer puis de remplacer votre doigt par le scanner. Cela devrait permettre au scanner d'ajouter avec succès votre empreinte digitale à l'ID 1, et placer votre doigt sur le scanner devrait entraîner un accès au système.
Ce projet peut facilement être étendu pour inclure des verrouillages et des relais solénoïdes pour permettre aux utilisateurs autorisés d'apporter des modifications et de déverrouiller le système. Une fois votre projet terminé, installez votre nouveau scanner sur les portes, armoires, coffres-forts, fenêtres, systèmes électriques, ordinateurs et plus encore !
Pour créer un système de sécurité biométrique simple afin de protéger votre voiture contre tout accès non autorisé, nous aurons besoin d'un capteur d'empreintes digitales et d'un microcontrôleur Arduino. Ce projet utilise le matériel de formation Adafruit. Pour faciliter la répétition, le code complet du programme de ce matériel est utilisé, avec des modifications mineures.
Tout d'abord, nous modifions le système de démarrage du véhicule. La connexion principale est le conducteur IG du commutateur d'allumage, qui alimente le régulateur de tension, puis le microcontrôleur Arduino pour l'allumer et l'éteindre et scanner le doigt sur le capteur pendant 10 secondes. Si l'empreinte digitale correspond, le système active le boîtier relais, qui contrôle le relais de démarrage. Vous pouvez maintenant démarrer le moteur. Après 10 secondes, le capteur d'empreintes digitales s'éteint. Vous pouvez le rallumer en répétant le cycle d'allumage. Si dans les 10 secondes le capteur ne détecte pas d'empreinte digitale ou si l'empreinte digitale ne correspond pas à celle de référence, alors le système de démarrage est désactivé et le moteur ne démarre pas.
Étant donné que chaque véhicule possède un système de configuration de démarrage différent, vous devrez consulter un électricien au sujet du système électrique du véhicule ou revoir le schéma de câblage avant de modifier le système de démarrage.
Veuillez noter que le capteur d'empreintes digitales ne démarre pas le moteur. Il active et désactive simplement le relais de démarrage, qui interdit ou autorise le démarrage du moteur.
Dans ce projet, un antivol est installé sur un coupé Mitsubishi Lancer 2000 2 portes.
Étape 1 : composants utilisés
Étape 4 : Chargement du programme principal
Connectez le capteur d'empreintes digitales comme indiqué sur le schéma et chargez le programme principal. Connectez une LED et une résistance à la broche 12 pour surveiller le bon fonctionnement.
Le programme fonctionne sur le principe du matériel pédagogique Adafruit Fingerprint. Cependant, j'ai légèrement modifié le code et ajouté une minuterie pour éteindre le capteur après 10 secondes afin d'éviter toute distraction causée par la LED clignotante du capteur.
Étape 5 : Assemblage, partie 1
Retirez les vis sous le tableau de bord. Desserrez le levier de déverrouillage du capot. Retirez la partie inférieure du tableau de bord. Placez le capteur dans l'espace libre.
Étape 6 : Assemblage, partie 2
Mesurez la distance requise et découpez une petite zone pour installer solidement le capteur.
Étape 7 : Assemblage, partie 3
Il est préférable d'installer la carte Arduino Uno derrière le capteur d'empreintes digitales. J'ai un peu affûté le siège pour que la carte Arduino Uno soit dans la bonne position.