hogar - Ordenadores
Cerradura biométrica: configuración del escáner y programación del microcontrolador. Cerradura biométrica de huellas dactilares casera para la puerta del garaje Escáner de huellas dactilares para diferentes plantillas Arduino

Como no tengo coche, no necesito llevar las llaves a todas partes. Debido a esto, resultó que varias veces me encontré sin llaves afuera de la casa y tuve que esperar a que algún familiar viniera a casa y me dejara entrar, y en algún momento decidí que tenía que hacer algo al respecto. y diseñó una cerradura de garaje casera.

En este proyecto, te mostraré cómo hacer una cerradura con huella digital para la puerta de entrada.

Paso 1: Materiales


Aquí hay una lista de materiales y herramientas necesarios.

Electrónica:

  • Escáner de huellas dactilares (y conector JST)
  • Conjunto de LCD (con ATmega328)
  • ATtiny85
  • Transistor NPN
  • altavoz de agudos
  • Cable de altavoz
  • Caso (en el paso 9 habrá archivos para impresión 3D)
  • Película de cobre
  • Regulador de voltaje 5V
  • batería de 9v
  • Conector para batería de 9V
  • interruptor SPDT

Para mayor comodidad, adjuntaré una lista de deseos ya preparada en el sitio web de Sparkfun.

Herramienta:

  • Soldador y soldadura
  • Cinta insultiva
  • Cables y puentes
  • Pinzas/destripadoras
  • tablero de prototipos
  • Varias resistencias
  • Tornillos
  • Perforar
  • Varios LED para pruebas.
  • Placa FTDI 5V
  • Pistola de silicona
  • Acceso a una impresora 3D
  • Opcional: conector IC (8 pines para ATtiny y 28 pines para ATmega)
  • Opcional: otra placa Arduino/condensador de 10uF (detalles en el paso 5)

Paso 2: Diagrama del dispositivo






El kit LCD comprado en Sparkfun venía con un ATmega328 que controla la pantalla. ATmega328 es bastante potente y puede usarse no sólo para controlar la pantalla, sino también para otras tareas. En vista de esto, podemos usarlo en lugar de Arduino para comunicarnos con el escáner de huellas digitales y enviar comandos al ATtiny85, controlar la pantalla y el beeper.

Para evitar que la cerradura biométrica de la puerta funcione todo el tiempo, le incorporé un interruptor que funciona en el momento en que se cierra la caja. Si la carcasa está cerrada, no se suministra energía al dispositivo y ahorramos recursos de batería.

Nota importante: el escáner de huellas digitales funciona a 3,3 V, por lo que recomiendo usar un divisor de voltaje que convertirá las señales del ATmega a 3,2 V. El divisor de voltaje consta de una resistencia de 560 ohmios entre D10/segundo pin del escáner y una resistencia de 1K entre GND/segundo pin del escáner.

Distribución de pines LCD:

  • D10 - pin 1 del escáner (cable negro)
  • D11 - escáner pin 2 (a través del divisor de voltaje)
  • D12 - ATtiny85
  • D13 - Chirriador

Distribución de pines ATtiny85:

  • Pin 5 (0 en el código del programa): entrada de ATmega
  • Pin 3 (4 en el código del programa) - transistor / LED amarillo
  • Pin 7 (2 en el código del programa) - LED de indicación

Paso 3: ensamblar los componentes del kit LCD

El nombre del paso habla por sí solo: práctica guía rápida de inicio/montaje

Paso 4: ensamblar el circuito en la placa de prototipos




La ubicación de los componentes en la placa depende de usted, solo intente soldar los cables para que miren en la misma dirección y no se rompan.

Una vez ensamblado, cubrí la parte superior e inferior del tablero con pegamento caliente; esto aseguró y aisló los elementos del circuito. El pegamento caliente no dañará el chip.

Al igual que con la placa principal, suelde todo a la placa ATtiny y aplique pegamento caliente para asegurar y aislar los componentes. El regulador de voltaje puede calentarse mucho, por lo que es una buena idea evitar aplicar pegamento caliente a él o a cualquier superficie cercana. También es mejor no cubrir la placa ATtiny con pegamento caliente, ya que es posible que desees quitarla y reprogramarla.

Paso 5: Programar el ATmega328

Como se mencionó en el paso 2, el ATmega328 tiene un procesador lo suficientemente potente y suficientes pines para control LCD, mientras controla otros componentes adicionales. Para lograr esto, es necesario programar el chip.

si usted tiene ArduinoUno o Duemilanove, simplemente puedes quitarles el chip y reemplazarlo por el que viene en el kit. O puede encontrar una placa de conexión básica FTDI (5 V) y accesorios para soldar en su costado (vea las imágenes en el paso 3)

También deberá cargar el código en el modo "Duemilanove con ATmega328".

Código a continuación - programa de trabajo para comprobar el funcionamiento del dispositivo.

#incluye "LiquidCrystal.h" LiquidCrystal lcd(2,3,4,5,6,7,8); void setup() ( pinMode(9, SALIDA); // retroiluminación pinMode(13, SALIDA); // busca lcd.begin(16, 2); // 16 caracteres de ancho, 2 de alto digitalWrite(9, ALTO); / /encender la luz de fondo lcd.print("¡Hola mundo!"); //centrar el texto usando espacios delay(2000); ) void loop() ( //el beeper se enciende y apaga, su estado se muestra en la pantalla lcd.clear( ); lcd.print(" El zumbador está encendido "); tono(13, 262, 1000); retraso(1000); lcd.clear(); lcd.print(" El zumbador está apagado "); retraso( 1000); ) Archivos

Paso 6: configurar el escáner de huellas dactilares

Utilicé esta biblioteca para comunicarme con el escáner. Enlace de descarga directa.

Para comprobar si su código funciona, descargue este probador de parpadeo.

El escáner de huellas dactilares tiene su propia memoria integrada para almacenar datos. Entonces, después de estar seguro de que el escáner está funcionando, descargue este programa para agregar su huella digital a la base de datos con el ID #0. Abra su consola serie y simplemente siga las instrucciones.

Programa de parpadeo de LED para probar el escáner.

/* Este código simple encenderá y apagará el LED. Se utiliza para comprender si la comunicación está funcionando. */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configuración del hardware: escáner de dedo conectado a: //pin digital 10(arduino rx, fps tx) //pin digital 11(arduino tx - resistencia de 560 ohmios fps tx - resistencia de 1000 ohmios - GND) //esto reduce el tx de 5v a aproximadamente 3,2v y no quemaremos nuestro escáner FPS_GT511C3 fps(10, 11); void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // puedes ver mensajes en la pantalla de depuración serial fps.Open(); ) void loop())( // Prueba de parpadeo del LED para el escáner fps. SetLED(true); // enciende el LED dentro del retardo del escáner (1000); fps.SetLED(false); // apaga el LED dentro del retardo del escáner (1000); )

Programa para registrar datos en el escáner.

#include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configuración del hardware: escáner de dedo conectado a: //pin digital 10(arduino rx, fps tx) //pin digital 11(arduino tx - resistencia de 560 ohmios fps tx - resistencia de 1000 ohmios - GND) //esto reduce el tx de 5v a aproximadamente 3,2v y no quemaremos nuestro escáner FPS_GT511C3 fps(10, 11); void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Prueba de registro // buscar open id int enrollid = 0; fps.EnrollStart(enrollid); // registro Serial.print("Presione el dedo para registrar #"); Serial.println(enrollid); while(fps.IsPressFinger() == false) retraso( 100); bool bret = fps.CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Quitar dedo"); fps.Enroll1(); while(fps.IsPressFinger() = = true) delay(100); Serial.println("Presiona el mismo dedo otra vez"); while(fps.IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Quitar el dedo"); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); Serial.println("Presione el mismo dedo una vez más"); while( fps.IsPressFinger () == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Quitar dedo"); iret = fps.Enroll3(); if (iret = = 0) ( Serial.println("Inscripción exitosa"); ) else ( Serial.print("Error al registrarse con código de error:"); Serial.println(iret); ) ) else Serial.println("Error al capturar el tercer dedo"); ) else Serial.println("Error al capturar el segundo dedo"); ) else Serial.println("Error al capturar el primer dedo"); ) bucle vacío())( retraso(100000); ) Archivos

Paso 7: programe el ATtiny85


ATtiny85 es algo así como un Arduino barato ensamblado en un solo chip. El ATtiny85 puede ser programado por otros Arduinos, incluido el ATmega328 que se encuentra en nuestro kit LCD. En el proyecto se utiliza para ejecutar comandos muy simples: verificar la señal del ATmega y abrir la puerta si la señal es correcta.

Para programarlo conecta todo según las fotos adjuntas. Luego descargue los archivos necesarios y siga estas instrucciones.

Después de descargar el código, el pin 13 del Arduino (LED incorporado) debería iluminarse, lo que indica que el código se ha descargado.

Código final:

//Recibe una señal corta del módulo principal para cerrar el relé void setup())( pinMode(2,OUTPUT); //Indicación LED a través de una resistencia de 10K pinMode(4,OUTPUT); //pin del transistor que abre el garaje pinMode(0,INPUT ); //retardo de entrada(500); //da tiempo al dispositivo para iniciar digitalWrite(2, HIGH); //indicación LED ) void loop())( if(digitalRead(0))( / /patrón simple para cambiar el retardo del transistor (125); if(digitalRead(0)==false)( retardo(55); //espera, ya que el temporizador ATtiny no es ideal if(digitalRead(0))( retardo(55 ); if(digitalRead(0)= =false)( retraso(55); if(digitalRead(0))( retraso(55); if(digitalRead(0)==false)( digitalWrite(4, ALTO); / / el transistor “presiona” el botón delay(1000 ); digitalWrite(4,LOW); digitalWrite(2,LOW); delay(1000); digitalWrite(2, HIGH); ) ) ) ) ) ) ) Archivos

Paso 8: Código final

A continuación se muestra un programa Arduino que escribí usando las bibliotecas de escáner y pantalla. Para dejar claro lo que pasa en cada parte del programa, intenté comentar todo de la mejor manera posible. Después de descargar este código todo debería funcionar y solo queda integrar el sistema en la puerta.

Advertencia: si la biblioteca del escáner no funciona, intente usar versión antigua IDE de Arduino.

Código para ATmega238:

#include "LiquidCrystal.h" //biblioteca de visualización #include "FPS_GT511C3.h" //biblioteca de fps (escáner de huellas dactilares) #include "SoftwareSerial.h" //utilizado por la biblioteca del escáner //Configurar los pines de la pantalla y del escáner LiquidCrystal lcd( 2, 3, 4, 5, 6, 7, 8); //muestra la configuración de pines FPS_GT511C3 fps(10, 11); //RX, TX booleano isFinger = false; //verdadero si la biblioteca fps detecta el dedo en el escáner //pines de salida const int buzzerPin = 13; const int retroiluminaciónPin = 9; const int attinyPin = 12; const String idNames = ("self", "Bro", "Ryan", "Mamá", "Papá", "Tía", "Abuela", "Zeide", "Persona", "persona", "Pulgar"); void setup())( //configura las salidas pinMode(buzzerPin, OUTPUT); pinMode(backlightPin, OUTPUT); pinMode(attinyPin, OUTPUT); //para depurar //Serial.begin(9600); fps.UseSerialDebug = false; / /se vuelve verdadero para la depuración de fps mediante Puerto serial//inicializar bibliotecas lcd.begin(16,2); escritura digital (pin de retroiluminación, ALTA); //Retroiluminación LCD fps.Open(); fps.SetLED(verdadero); //LED para fps //cargando sonido 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)( //si el texto necesita centrado s = " " + s + " "; // agrega espacios uniformemente en ambos lados) return s; ) Archivos

Para crear un sistema de seguridad biométrico simple para proteger su automóvil del acceso no autorizado, necesitaremos un sensor de huellas dactilares y un microcontrolador Arduino. Este proyecto utiliza material de formación de Adafruit. Para facilitar la repetición, se utiliza el código de programa completo de este material, con cambios menores.

En primer lugar modificamos el sistema de arranque del vehículo. La conexión principal es el conductor IG del interruptor de encendido, que suministra energía al regulador de voltaje, luego al microcontrolador Arduino para encenderlo y apagarlo y escanear el sensor con el dedo durante 10 segundos. Si la huella dactilar coincide, el sistema activa la caja de relés, que controla el relé de arranque. Ahora puede arrancar el motor. Después de 10 segundos, el sensor de huellas dactilares se apaga. Puede volver a encenderlo repitiendo el ciclo de encendido. Si en 10 segundos el sensor no detecta una huella digital o la huella no coincide con la de referencia, entonces el sistema de arranque se apaga y el motor no arranca.

Dado que cada vehículo tiene un sistema de configuración de arranque diferente, deberá consultar a un electricista sobre el sistema eléctrico del vehículo o revisar el diagrama de cableado antes de modificar el sistema de arranque.

Tenga en cuenta que el sensor de huellas dactilares no arranca el motor. Simplemente activa y desactiva el relé de arranque, que prohíbe o permite que el motor arranque.

En este proyecto, se instala un dispositivo antirrobo en un cupé Mitsubishi Lancer 2000 de 2 puertas.

Paso 1: Componentes utilizados

Paso 4: Cargando el programa principal

Conecte el sensor de huellas dactilares como se muestra en el diagrama y cargue el programa principal. Conecte un LED y una resistencia al pin 12 para monitorear el correcto funcionamiento.

El programa funciona según el principio del material educativo Adafruit Fingerprint. Sin embargo, modifiqué ligeramente el código y agregué un temporizador para apagar el sensor después de 10 segundos para evitar la distracción del LED parpadeante del sensor.

Paso 5: Montaje Parte 1

Retire los tornillos debajo del tablero. Afloje la palanca de liberación del capó. Retire la parte inferior del tablero. Coloque el sensor en el espacio libre.

Paso 6: Montaje, Parte 2

Mida la distancia requerida y corte un área pequeña para instalar de forma segura el sensor.

Paso 7: Montaje, Parte 3

Lo mejor es instalar la placa Arduino Uno detrás del sensor de huellas dactilares. Afilé un poco el asiento para que la placa Arduino Uno quedara en la posición correcta.

Qué necesitas

  1. Módulo de huellas dactilares FPM10A
  2. Módulo RFID RC522
  3. Arduino mega (teóricamente, se pueden usar otras placas, pero me decidí por esta debido a la cantidad de pines)
  4. 1 licencia para 1C 8.2 (cliente pesado en mi caso, córtelo usted mismo para obtener uno delgado)
  5. Comunicación a través del puerto Com usando MsCommLib.MsComm (necesita una licencia, incluso puede buscarla en Google aquí)
  6. Entorno de desarrollo para Arduino (se utiliza 1.8.5)
  7. Tableta con interfaz USB.
  8. Arnés: resistencia de 1 kiloohmio, botón de cortocircuito, cables, cinta aislante “azul”, analizador de fluencia termorectal si lo desea (puede torcer los cables si tiene sensaciones cercanas e indescriptibles asociadas con este dispositivo), cable USB para Arduino, brazos rectos y circunvoluciones torcidas del apodo promedio 1 incl. para hacer un cuerpo para todo este milagro.

Notas: en la foto los colores de los cables son diferentes - durante el proceso de instalación se rompieron varios cables porque... Eran completamente Huawei y tuve que coger otros colores disponibles.

El sistema de mensajes se duplica intencionalmente en momentos críticos.
Les advierto de inmediato que al ingeniero promedio le pueden brotar lágrimas de los ojos debido a la resina, pero este es mi primer proyecto Arduino, y uno de tal complejidad, y parece funcionar y funcionar de manera estable. Al principio surgió la idea de hacer todo a través de la red (wifi + cableado), pero después de estimar los costos de depurar y crear mi propio servicio http e implementar todo en 1C, decidí usar com; en cualquier caso, toda la lógica se puede transferir al procesamiento externo sin cambiar la configuración.

También puede insertar un sistema para fotografiar a un empleado entrante a través de la cámara web de la tableta, agregar un relé y controlar puertas electrónicas, integración completa con el ZUP a través de procesamiento externo transmitido a través de parámetros de lanzamiento y aniquilación del carnaval para puertas de entrada particularmente peligrosas y de importancia secreta) .

Las críticas útiles son bienvenidas.

Prólogo

Al ver los precios de los sistemas de acceso existentes y los sistemas de seguimiento del tiempo, la esencia verde poco a poco empezó a ahogarme. Después de caminar mucho tiempo por el Arduino y sus módulos, me encontré con el módulo de huellas dactilares FPM10A. Este módulo, según la versión, puede almacenar una gran cantidad de huellas dactilares en su memoria flash, de 50 a infinitas, y se utiliza en la mayoría de los módulos de los fabricantes de controles biométricos. Sin embargo, en mi proyecto, debido a la biblioteca, está limitado a 254. Les advierto de inmediato que estoy publicando mi biblioteca exhaustivamente encontrada para Arduino porque... Luché con la búsqueda durante mucho tiempo y perdí 3 días buscando y depurando la biblioteca para este módulo.

Descripción de módulos

La biblioteca utilizada en el proyecto permite el uso de hasta 256 (bytes) de huellas dactilares. Esta cantidad me resultó excesiva, en casos extremos se puede utilizar 1 módulo por cada 256 empleados.
La cantidad de etiquetas RFID está limitada únicamente por la singularidad de su UID. la base de datos se puede almacenar en 1C y vincularla a los empleados. Se pueden utilizar todas las etiquetas compatibles. En teoría, cualquier clave para intercomunicadores, tarjetas de metro y tarjetas troika puede ser adecuada.
La conexión a 1c pasa por el puerto com a través de la biblioteca MsCommLib.MsComm, pero se puede reescribir en cualquier otra. Los controladores para el puerto com de Arduino deben instalarse junto con el entorno de desarrollo de Arduino, pero también se pueden buscar en Google.
Todo lo soldado está escondido en una caja, conectado a través de la red (yo usé WiFi, pero también puedes usar una tarjeta de red USB externa).

Algoritmo de trabajo

Hardware:

  1. Soldamos/torcemos módulos Arduino
  2. Nos conectamos a un programador de PC y cargamos el firmware en Arda, ejecutamos la prueba, nos aseguramos de que los comandos estén funcionando.
  3. Se conectan vía USB a una tableta con Windows 10. En la tableta la reemplazamos mediante carga automática:

A) a través de un archivo corporal:

    iniciar - ejecutar: shell:inicio

    cree un archivo allí usando el Bloc de notas con el nombre hz.bat y el contenido (estoy seguro de que puede manejar los parámetros de la base de datos del archivo usted mismo; tengo sql): “C:\Program Files\1cv8\ ... \bin\1cv8 .exe” EMPRESA / SServerName:Puerto\DBName" /NUser /PPContraseña

B) hacemos uno más avanzado reemplazando el shell usando un script VB (asegúrese de crear otro usuario además del predeterminado sin iniciar el shell):

    cree un archivo usando el Bloc de notas con el nombre C:\hz\hz.vbs y contenido

establecer oShell=createobject("wscript.shell")
sCmd="""C:\Program Files\1cv8\ ... \bin\1cv8.exe"" EMPRESA /SServerName:Puerto\DBName" /NUser /PPContraseña"
oShell.ejecutar sCmd, verdadero
sCmd="apagar /r /t 0"
oShell.ejecutar sCmd

    iniciar - ejecutar: regedit, siga la rama: Usuario actual\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

    agregue el parámetro de cadena "Shell" (REG_SZ)

    edítelo: "wscript C:\hz\hz.vbs" (sin comillas en el parámetro)

    reinicie y pruebe. 1c debería comenzar sin explorera

  1. A continuación, nos aseguramos de que funcione y lo empaquetamos en una caja.

Programáticamente:

  1. En estado normal, Arduino sondea el escáner de huellas dactilares, el escáner RFID, el botón de administración y envía comandos de espera a través del puerto de comunicaciones.
  2. Tan pronto como aparece un dedo en el campo de visión del lector, enviamos un comando al puerto de comunicación y 1c ve el ID del dedo o el UID de la etiqueta mediante la lectura de las variables.
  3. El botón es necesario para administrar huellas dactilares. Cuando lo presiona, 1c solicita una contraseña de inicio de sesión y luego puede asignar al empleado una ID de escáner o una UID de tarjeta a través del sistema de mensajería.

Para comunicarse con 1c, se utilizan las siguientes líneas (hice el procesamiento de mi configuración y mi hoja de horas, está en el proyecto solo por ejemplo, pero está incluido en el código fuente):

Conexión al puerto com

Procedimiento StartSystem() ComPort = Nuevo COMObject("MsCommLib.MsComm"); Pruebe ComPort.CommPort = 3; ComPort.Configuración = "9600,N,8,1"; ComPort.Apretón de manos = 0; ComPort.InBufferCount = 0; ComPort.InBufferSize = 70; ComPort.InputLen = 0; ComPort.InputMode = 1; ComPort.NullDiscard = 0; ComPort.PortOpen = Verdadero; Advertencia de excepción("¡No es posible abrir el puerto!"); ThisForm.Close(); intento final; hSegundos = 0; ConnectWaitHandler("OutputSportData", 1, Falso); // Conectar un controlador para monitorear el puerto Fin del procedimiento

Desconexión del puerto com

Procedimiento EndSystem() DisableWaitHandler("OutputSportData"); ComPort.PortOpen = Falso; Puerto Com = ""; Fin del Procedimiento

Leyendo datos del puerto com

Procedimiento OutputSportData() ExportSportData = ""; Si ComPort.PortOpen Entonces //ComPort.Output = "1"; Datos deportivos = ComPort.Entrada; ProcessEncryptedString(SportData); Si está abreviado (pre-empleado)<>"" Entonces hSeconds = hSeconds + 1; terminara si; Si hSeconds > 60 Entonces PreEmployee = 0; hSegundos = 0; terminara si; De lo contrario Advertencia("El puerto no se abre"); ThisForm.Close(); terminara si; Fin del procedimiento Procedimiento Proceso Cadena cifrada (Datos deportivos) Matriz = Datos deportivos Unload(); IndexMin = SportsData.GetLowerBound(0); IndexMax = SportsData.GetUpperBound(0); CadenaInfo = ""; Para índice = IndexMin por IndexMax - 1 ciclo SymbolReceived = AbbrLP(Array.Get(Index)); Si CharacterReceived = "13" Entonces, si no se suspende, entonces RowInfo = RowProcessing(RowInfo); //Aquí se procesa el mensaje EndIf; De lo contrario, LineInfo = LineInfo + Símbolo (Número (SímboloRecibido)); terminara si; Fin del ciclo; Fin del Procedimiento

Envío de información al puerto com

Procedimiento SendToPort(Enviar) Si ComPort.PortOpen Entonces ComPort.Output = AbbrLP(Enviar); De lo contrario Notificar("El puerto no se abre", MessageStatus.VeryImportant); terminara si; Fin del Procedimiento

Código de proyecto para Arduino Mega

#incluir // conecta la biblioteca para trabajar con el módulo de huellas dactilares #include // conecta la biblioteca para trabajar con el software UART #include #incluir botón const intPin = 2; // ingresa el número conectado al botón para ingresar al modo de programación int buttonState = 0; // variable para almacenar el estado del botón int modeState = 0; // variable para almacenar el estado del dispositivo. 0 - esperando el escáner de huellas dactilares. 1 - programación uint8_t id; // número de identificación bajo el cual se guardará la plantilla de huella digital String frcUID = ""; // número de identificación del lector rfid int rfidYes = 0; // entrada exitosa RFID SoftwareSerial mySerial(10, 11); // declarar el objeto mySerial para que funcione con la biblioteca SoftwareSerial OBJECT_NAME(RX, TX); // Puede especificar cualquier pin que admita la interrupción PCINTx Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); // declarar un objeto de dedo para que funcione con la biblioteca Adafruit_Fingerprint OBJECT_NAME = Adafruit_Fingerprint(PARAMETER); // PARÁMETRO: enlace a un objeto para trabajar con UART al que está conectado el módulo, por ejemplo: &Serial1 MFRC522 mfrc522(53, 5); // Crear instancia MFRC522 void setup() ( pinMode(buttonPin, INPUT); // inicializa el pin conectado al botón como entrada Serial.begin(9600); // Inicializa el hardware UART a una velocidad de 9600 while (!Serial); // Esperando retraso de inicialización de UART de hardware (500); SPI.begin(); // Iniciar bus SPI mfrc522.PCD_Init(); // Iniciar MFRC522 mfrc522.PCD_DumpVersionToSerial(); // Mostrar detalles de PCD - Detalles del lector de tarjetas MFRC522 delay( 500); // Esperando a que el módulo de huellas dactilares se inicialice Serial.println(". . . Scan sensor . . ."); // Mostrando el mensaje "Buscando sensor" finger.begin(57600); // Inicializando software UART a velocidad 57600 (velocidad predeterminada del módulo) Serial.println(finger.verifyPassword()); if (finger.verifyPassword()) ( Serial.println(". . . ¡Sensor encontrado! . . ."); // If se detecta el módulo de huellas dactilares, imprima el mensaje "sensor encontrado" ) else ( Serial.println(". . . No encontró el sensor . . ."); // Si no se encuentra el módulo de huellas dactilares, muestre el mensaje "sensor no encontrado" " y entra en un bucle infinito: while(1 ); mientras(1); ) Serial.println(". . . Coloque el dedo en el escáner o rfid..."); ) void loop() ( //¡Trabaja con el botón! buttonState = digitalRead(buttonPin); // lee los valores de la entrada del botón if (buttonState == HIGH) ( modeState = 1; // ingresa al modo de programación NEXT ) switch (modeState) ( case 0: frcUID = ""; //Trabajando en modo de sondeo de huellas dactilares y rfid if (finger.getImage() == FINGERPRINT_OK) ( // Captura la imagen, si el resultado de la ejecución es igual a la constante FINGERPRINT_OK ( carga correcta de la imagen), luego pasamos más allá if (finger.image2Tz() == FINGERPRINT_OK) ( // Convierte la imagen resultante, si el resultado de la ejecución es igual a la constante FINGERPRINT_OK (la imagen se convierte), luego continuamos if (finger.fingerFastSearch() == FINGERPRINT_OK) ( // Encuentra una coincidencia en la base de datos de huellas digitales, si el resultado de la ejecución es igual a la constante FINGERPRINT_OK (se encontró una coincidencia), entonces vamos más allá frcUID = ". . . ID encontrado=" + String(finger.fingerID) + ", confianza=" + String(finger.confidence) + "! . . ."; Serial.println(frcUID); ) ) ) if (mfrc522.PICC_IsNewCardPresent()) ( retraso(100); if (mfrc522.PICC_ReadCardSerial()) ( //mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); frcUID = ""; para (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) ( // Si es 255 (identificación máxima), ingrese nuevamente al modo de espera modeState = 0; ) else ( 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 mientras (!Serial.available()); // Espera hasta que aparezcan datos en el búfer del puerto COM while (Serial.available()) ( // Realiza un bucle hasta que el búfer del puerto COM se quede sin datos char c = Serial.read(); // Asigna el siguiente carácter del puerto COM a la variable c if (isdigit(c)) ( // Si el valor de la variable c es un dígito, entonces... 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; } }

Epílogo

El precio de la tableta es de unos 10.000 rublos. (de hecho, a partir de 7000 nuevos se pueden comprar con 1 Gb de RAM, pero con 4Gb 1c será más agradable moverse, de hecho compré uno usado por 6000 en perfecto estado con 1Gb pero modifiqué la optimización).

El recorrido se hizo para la producción de muebles, así que hice la carrocería allí. Creo que se puede cortar una “mezcla de aserrín y cartón” en una tienda por 1.000 rublos. y atorníllelo con tornillos autorroscantes/péguelo con superpegamento. Como último recurso, puede tomar una caja ya preparada (por ejemplo, un armario eléctrico) y cortar una ventana allí.

Módulos Arduino, etc.: unos 2.000 rublos.

¡El placer de intercambiar ideas y crear no tiene precio!

Si está utilizando un dispositivo relativamente antiguo, no debe enojarse antes de tiempo. En lugar de cambiar su vieja computadora portátil por una más moderna con un sensor biométrico incorporado, puede conectarle un USB.

El lector de huellas dactilares PQI Mini USB es una excelente opción para aquellos que desean darle una segunda vida a sus equipos antiguos. El escáner fue creado específicamente para funcionar con la nueva función Hola disponible en dispositivos con Windows 10. Sin embargo, el dispositivo también es compatible con las versiones de los sistemas operativos Windows 7 y 8.

Una de las principales ventajas del sensor es que tiene capacidades de escaneo de 360 ​​grados. Así que no tienes que preocuparte por cuál es la mejor manera de conectar tu dispositivo a tu PC. Utilice el puerto USB más cercano y comience. Cuando el escáner necesita una huella digital, automáticamente se dirigirá al lugar donde se necesita y comparará los datos recibidos con la copia guardada.

El lector de huellas dactilares PQI Mini USB puede almacenar hasta 10 perfiles diferentes. Esto hace que el dispositivo sea ideal para compartir o cuando necesitas escanear un dedo adicional (si el "principal" se ensucia o se lastima).

El lector de huellas dactilares PQI Mini USB está disponible a un precio muy razonable, lo que lo convierte en una excelente opción para quienes buscan un modelo inicial. Además, el escáner es lo suficientemente portátil como para llevarlo consigo sin muchos problemas.

Lector de huellas dactilares Verifi P2000

Si está utilizando una computadora de escritorio donde no es tan fácil acceder a los puertos USB, preste atención al lector de huellas dactilares Verifi P2000. Se conecta fácilmente a una PC y, lo más importante, se puede colocar cerca de la computadora para un uso más cómodo.

El escáner está fabricado de metal resistente a impactos y durará muchos años. A pesar de su diseño robusto, tiene una buena tasa de reconocimiento de huellas dactilares. Así que no tendrás que cambiar constantemente la posición de tu dedo sólo para conseguir una combinación perfecta. En la mayoría de los casos, bastará con deslizar el sensor una sola vez.

Al crear el P2000, Verifit planeó hacer que el dispositivo fuera robusto y duradero para que no tuviera ningún impacto en el proceso de escaneo y la precisión de los resultados del reconocimiento. El lector de huellas dactilares Verifi P2000 es un dispositivo bastante portátil que puede llevar consigo fácilmente. Además, es compatible con un número mucho mayor de ordenadores que otros modelos similares.

Kensington VeriMark

Para ser un escáner de huellas dactilares increíblemente pequeño, Kensington VeriMark tiene casi todo lo que necesita para una experiencia cómoda. El modelo cuenta con soporte para escaneo de 360 ​​grados y es de tamaño pequeño. Pero lo principal que hace que Kensington VeriMark sea tan valioso es su funcionalidad adicional.

El dispositivo almacena todos los datos recibidos de forma cifrada. Cuando el sensor escanea una huella digital, la cifra inmediatamente. Es imposible interrumpir este proceso, por lo que no será posible piratear el software o hardware y extraer datos biométricos.

Además, el dispositivo utiliza una plantilla especial para descifrar los escaneos recibidos, que sólo el fabricante tiene. Esto lo hace más seguro contra ataques de piratas informáticos y otros intentos de obtener acceso no autorizado.

El escáner admite trabajar con puertos relativamente antiguos, independientemente de la versión de lanzamiento. Si está utilizando un modelo con un adaptador USB-C a USB-A, puede conectar el dispositivo a una computadora portátil o computadora relativamente antigua que no admita puertos USB más modernos.

Analizador de lector de huellas dactilares Benss

Benss Fingerprint Reader Analyzer es otro escáner que puede hacerle la vida más fácil y salvarle de muchos problemas. Como regla general, los modelos más simples primero toman una fotografía de control, después de lo cual todas las impresiones posteriores se comparan con el resultado inicial. Esto significa que si algo le sucede a la imagen original (con la que se comparan todos los demás escaneos), la probabilidad de que los resultados finales coincidan disminuirá considerablemente.

Benss Fingerprint Reader Analyzer funciona con un algoritmo de autoaprendizaje que crea y actualiza automáticamente su perfil con cada toque. Cuanto más utilice el dispositivo, más precisos serán los resultados. Esto hace que sea más difícil engañar al escáner con huellas dactilares falsas. Dado que el sensor escanea constantemente su dedo y actualiza la base de datos, detecta inmediatamente los intentos de obtener acceso no autorizado.

Este es uno de los dispositivos más eficaces para contrarrestar los ataques de piratas informáticos. Su tasa de aceptación falsa es inferior al 0,002%, lo que significa que realmente debes intentar piratear el dispositivo. Al mismo tiempo, esto no complica mucho el trabajo: su coeficiente FRR (tasa de falso rechazo - denegación de acceso a una persona registrada en el sistema) es sólo del 3%.

IDEM BioScan compacto

Si está buscando un escáner con capacidad de personalización, le encantará el IDEM BioScan Compact. Para ampliar sus capacidades básicas y obtener funciones adicionales, simplemente descargue un software especial del sitio web oficial del fabricante.

Después de esto, podrá cifrar archivos y carpetas individuales en su computadora, así como almacenar datos de inicio de sesión y contraseña para acceder a sitios web en un programa especial. De esta forma podrás iniciar sesión en cualquier portal de Internet simplemente tocando el sensor con el dedo.

Incluso si no se tienen en cuenta las funciones adicionales, BioScan Compact se considera un modelo digno. El dispositivo es capaz de almacenar hasta 10 huellas dactilares diferentes, cuenta con pequeñas dimensiones y seguridad incorporada para reconocer datos biométricos falsos.

Blucoil SecuGen Hamster Pro 20

Blucoil SecuGen Hamster Pro 20 es el escáner de huellas dactilares ideal para necesidades profesionales. Debido a que el modelo ofrece configuraciones de seguridad mejoradas, su precio es casi el doble que el de otros dispositivos de nuestra lista.

Además, es uno de los pocos escáneres con soporte oficial para Linux. Así, independientemente del sistema operativo que utilice, el sensor es adecuado para cualquier tarea.

SecuGen Hamster Pro 20 es un dispositivo a prueba de golpes que está protegido contra arañazos, agua y polvo. El escáner puede rastrear los rastros dejados por escaneos anteriores y rechazar resultados poco claros.

Además, Blucoil SecuGen Hamster Pro 20 es un dispositivo que ahorra energía, por lo que se apaga automáticamente si nadie lo utiliza durante mucho tiempo.

Seguridad adicional

En los últimos años, se ha lanzado una gran cantidad de dispositivos móviles y de escritorio con escáneres de huellas dactilares integrados, y su número crece cada año. Si su computadora no tiene un sensor incorporado para reconocer datos biométricos, no se preocupe. Existe una gran variedad de escáneres USB para PC y portátiles, compatibles con casi todos los modelos populares.

Para crear una conexión con el sensor de huellas dactilares se utilizaron instrucciones de Josh Hawley (descarga directa de instrucciones).

Para depurar el funcionamiento del escáner de huellas dactilares con visualización de letras, es necesaria la sincronización.

El sensor de huellas dactilares tiene su propia memoria para almacenar imágenes escaneadas. Entonces, después de que el sensor comience a funcionar, descárguelo agregándolo a la base de datos de huellas digitales en la dirección 0. Abra la consola de administración en su computadora y siga las instrucciones emergentes.

Códigos – Ejemplo de parpadeo:

/* Ejemplo de biblioteca para controlar el escáner de huellas dactilares (FPS) GT-511C3 */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configuración del hardware: FPS conectado a: //pin digital 10(arduino rx, fps tx) // pin digital 11 (arduino tx - resistencia de 560 ohmios fps tx - resistencia de 1000 ohmios - tierra) // esto reduce la línea de transmisión de 5v a aproximadamente 3.2v para que no freímos nuestros fps FPS_GT511C3 fps(10, 11); void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // para que puedas ver los mensajes en la pantalla de depuración serial fps.Open(); ) void loop())( // LED parpadeante de FPS Prueba fps .SetLED(true); // enciende el LED dentro del retraso de fps(1000); fps.SetLED(false); // apaga el LED dentro del retraso de fps(1000); )

Códigos – Ejemplo de inscripción:

/* FPS_Enroll.ino - Ejemplo de biblioteca para controlar el escáner de huellas dactilares (FPS) GT-511C3 */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configuración de hardware - FPS conectado a: //pin digital 10 (arduino rx, fps tx) //pin digital 11(arduino tx - resistencia de 560 ohmios fps tx - resistencia de 1000 ohmios - tierra) //esto reduce la línea de transmisión de 5v a aproximadamente 3,2 v para que no freímos nuestros fps FPS_GT511C3 fps(10, once); void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Inscribir prueba // buscar abierto inscribir id int enrollid = 0; fps.EnrollStart(enrollid); // inscribir Serial.print("Presione el dedo para registrar #"); Serial.println(enrollid); while(fps.IsPressFinger() == false) retraso( 100); bool bret = fps.CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Quitar dedo"); fps.Enroll1(); while(fps.IsPressFinger() = = true ) delay(100); Serial.println("Presiona el mismo dedo otra vez"); while(fps.IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Quitar el dedo"); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); Serial.println("Presione el mismo dedo una vez más"); while( fps. IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Quitar dedo"); iret = fps.Enroll3(); if (iret == 0) ( Serial.println("Inscripción exitosa"); ) else ( Serial.print("Error al registrarse con código de error:"); Serial.println(iret); ) ) else Serial.println("Error al capturar el tercer dedo"); ) else Serial.println("Error al capturar el segundo dedo"); ) else Serial.println("Error al capturar el primer dedo"); ) bucle vacío())( retraso(100000); )

Archivo de sincronización:

Archivo de registro de boceto:

Etapa 7: Programación del procesador ATtiny85

El microchip ATtiny85 es económico y totalmente compatible con la placa Arduino. ¡Es probablemente la mejor pieza eléctrica jamás creada!

También se necesita un programador Arduino para actualizar el chip ATmega328, que controla el funcionamiento de la pantalla LCD.

En el dispositivo ensamblado, el procesador ATtiny ejecutará comandos muy simples: verificará si hay señal de ATmega y abrirá la puerta del garaje cuando se confirme la señal.

Para programar el procesador, se debe conectar mediante una placa de pruebas al programador junto con un condensador de 10 uF, como se muestra en la siguiente imagen.

Y luego descargar código final y sigue las recomendaciones instrucciones de alta y baja tecnología.

Después, la salida 13 de la placa Arduino, conectada al LED, debe cambiarse al estado ALTO para monitorear el funcionamiento mediante la indicación luminosa.

código final para pequeño :

//fpsAttiny por Nodcah //Recibe una breve señal del módulo principal para cerrar una configuración de vacío de relé())( pinMode(2,OUTPUT); //indicador guiado a través de una resistencia de 10K pinMode(4,OUTPUT); //pin del trasistor que abre el garaje pinMode(0,INPUT); //retardo de entrada(500); //da tiempo para que las cosas se inicien digitalWrite(2, HIGH); //indicador LED ) void loop())( if(digitalRead(0 )) ( //patrón simple para activar el retardo del transistor(125); if(digitalRead(0)==false)( delay(55); //los tiempos están desactivados porque el temporizador del ATtiny no es perfecto if( digitalRead( 0))( retraso(55); if(digitalRead(0)==false)( retraso(55); if(digitalRead(0))( retraso(55); if(digitalRead(0)==false) ( digitalWrite (4, HIGH); //transistor "presiona" el botón delay(1000); digitalWrite(4,LOW); digitalWrite(2,LOW); delay(1000); digitalWrite(2, HIGH); ) ) ) ) ) )

Cerradura biométrica: código final, corte de la cubierta, preparación del garaje Reloj GPS en Arduino Cerradura biométrica: diagrama y montaje de la pantalla LCD



 


Leer:



¿Por qué una computadora portátil necesita un SSD pequeño? ¿Vale la pena instalar Windows en él?

¿Por qué una computadora portátil necesita un SSD pequeño? ¿Vale la pena instalar Windows en él?

¿Qué importancia tiene una unidad SSD para juegos, a qué afecta y cuál es la utilidad de esta tecnología? Esto es lo que se discutirá en nuestro artículo. De Estado sólido...

Reparar una unidad flash usando programas Cómo reparar un puerto USB en una computadora portátil

Reparar una unidad flash usando programas Cómo reparar un puerto USB en una computadora portátil

¿Cómo arreglar un puerto USB? Respuesta del técnico: Cuando se utiliza una computadora, los puertos USB a menudo se estropean. En primer lugar, fracasan...

La estructura del disco está dañada, la lectura es imposible, ¿qué debo hacer?

La estructura del disco está dañada, la lectura es imposible, ¿qué debo hacer?

Las computadoras personales de los usuarios a menudo almacenan información importante: documentos, fotografías, videos, pero hacer una copia de seguridad de los datos suele ser...

¿En qué consiste la computadora?

¿En qué consiste la computadora?

Publicado: 14/01/2017 Saludos amigos, hoy consideraremos en detalle el diseño de la unidad del sistema informático. Averigüemos qué...

imagen-feed RSS