Modulo Seguridad usando Sensor de Huella Dactilar
Módulo de Seguridad usando Sensor de Huella
En este nuevo proyecto vamos un circuito que nos permita controlar el acceso o activación de un dispositivo electrónico usando un sensor de huella dactilar. Este módulo se desarrolló con el fin de ser aplicado en diferentes areas, en esta ocasión vamos a controlar el encendido de una computadora, algo sencillo pero un proyecto muy interesante que nos sirve para iniciar la prueba de nuestro modulo.
El circuito estará compuesto por 3 salidas, una de ellas de un relé con el cual podremos controlar cargas AC o DC de potencia y dos salidas de transistor MOSFET para control de cargas DC o realizar conmutaciones como es el caso de esta aplicación. El módulo contara 3 entradas de pulsadores con el cual podremos controlar la interfaz, para realizar registro de huellas o eliminar. Para visualizar lo estados del circuito utilizaremos una pantalla oled de 0.96 pulgadas y un diodo LED indicador.
/* Este codigo ha sido creado por RAOM Eléctronica Mas información en: WWW.YOUTUBE.COM/RAOMELECTRONICA */ //#include <Wire.h> //#include <LCD.h> //#include <LiquidCrystal_I2C.h> #include <Adafruit_Fingerprint.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); //LiquidCrystal_I2C lcd (0x27,2,1,0,4,5,6,7); //Direccion, E, RW, RS, D4, D5, D6, D7 Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial); uint8_t id; int num1=0; //Conteo pulsación 1 int p1=7; //Digitos contraseña int p2=10; int p3=3; int c1=0; //Memoria contraseña int c2=0; int c3=0; int numID = 1; // Numero ID verificacicion ciclo for int IN0Previo=1; //Valor previo pulsador void setup() { u8g2.begin(); // On Display u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font //u8g2.drawStr(0,32,"Hello World 30123456!"); //u8g2.drawStr(0,42,"Hello World 40123456!"); //u8g2.drawStr(0,52,"Hello World 50123456!"); //u8g2.drawStr(0,62,"Hello World 60!123456"); //u8g2.sendBuffer(); //pinMode (D0,INPUT); //pinMode (D1,INPUT); pinMode (D10,INPUT); pinMode (D9,INPUT); pinMode (D8,INPUT); pinMode (D0,OUTPUT); digitalWrite(D0,HIGH); pinMode (D1,OUTPUT); digitalWrite(D1,HIGH); pinMode (D2,OUTPUT); digitalWrite(D2,LOW); pinMode (D3,OUTPUT); digitalWrite(D3,LOW); // lcd.setBacklightPin(3,POSITIVE); // lcd.setBacklight(HIGH); // lcd.begin(16,2); // lcd.clear(); //Serial.begin(57600); finger.begin(57600); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"BIENVENIDO"); u8g2.sendBuffer(); //lcd.setCursor(0,0); //lcd.print("RAOM Electronica"); //lcd.setCursor(0,1); //lcd.print("Bievenido"); delay(2000); //lcd.clear(); u8g2.clearBuffer(); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"Fingerprint Encontrado"); u8g2.sendBuffer(); //lcd.setCursor(0,0); //lcd.print("Foundfingerprint"); delay(2000); } else { u8g2.clearBuffer(); Serial.println("Did not find fingerprint sensor :("); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"No fingerprint"); u8g2.sendBuffer(); //lcd.setCursor(0,0); //lcd.print("No fingerprint"); delay(2000); while (1) { delay(1); } } u8g2.clearBuffer(); //lcd.clear(); } uint8_t readnumber(void) { uint8_t num = 0; while (num == 0) { while (! Serial.available()); num = Serial.parseInt(); } return num; } void loop() { u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"Esperando..."); u8g2.sendBuffer(); //lcd.setCursor(0,0); //lcd.print("Esperando:"); ////////////////////////////////////////////////////////////////AGREGAR ID///////////////////////////////////////////////////////////////////// if(digitalRead(D10)==0) { u8g2.clearBuffer(); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"AGREGAR ID"); //u8g2.drawStr(0,62,"NUMERO ID"); u8g2.sendBuffer(); //lcd.setCursor(0,0); //lcd.print("Agregar ID:"); //lcd.setCursor(0,1); //lcd.print("Numero ID:"); delay(500); while(c1!=p1 or c2!=p2 or c3!=p3 or digitalRead(D10)==1 ){ if (digitalRead(D9)!=1) {c1=c1+1;} if (digitalRead(D10)!=1) {c2=c2+1;} if (digitalRead(D8)!=1) {c3=c3+1;} u8g2.clearBuffer(); u8g2.drawStr(0,32,"*CONTRASENA*"); u8g2.drawStr(0,42,"C1="); u8g2.setCursor(50,42); u8g2.print(c1); u8g2.drawStr(0,52,"C1="); u8g2.setCursor(50,52); u8g2.print(c2); u8g2.drawStr(0,62,"C3="); u8g2.setCursor(50,62); u8g2.print(c3); u8g2.sendBuffer(); } while(digitalRead(D9)==1) { if (digitalRead(D8)!=1) {num1=num1+1;} delay(10); //IN0Previo=digitalRead(D8); u8g2.clearBuffer(); u8g2.drawStr(0,32,"AGREGAR ID"); u8g2.drawStr(0,62,"NUMERO ID"); u8g2.setCursor(90,62); u8g2.print(num1); u8g2.sendBuffer(); //lcd.setCursor(11,1); //lcd.print(num1); } //lcd.setCursor(11,1); //lcd.print("Numero ID:"); c1=0;// reinicio contraseña c2=0;// reinicio contraseña c3=0;// reinicio contraseña id = num1;//readnumber(); num1=0; /////////////////////// reset de id if (id == 0) {// ID #0 not allowed, try again! return; } //Serial.print("Enrolling ID #"); //Serial.println(id); while (! getFingerprintEnroll() ); } //////////////////////////////////////////////////////////////LEER ID/////////////////////////////////////////////// else { getFingerprintIDez(); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////// //lcd.setCursor(0,0); //lcd.print(" "); // Para borrar los datos que se actualizan y evitar el parpadeo de la pantalla. //lcd.setCursor(12,1); //lcd.print(" "); //lcd.clear(); //delay(200); ///////////////////////////////////////////////////////getFingerprintEnroll////////////////////////////////////////////////////// uint8_t getFingerprintEnroll() { int p = -1; //Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id); digitalWrite(D3, HIGH); //////////////colocar dedo u8g2.clearBuffer(); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"COLOCAR HUELLA"); u8g2.sendBuffer(); //lcd.setCursor(0,1); //lcd.print("Colocar Huella "); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.println("."); break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); break; default: Serial.println("Unknown error"); break; } } // OK success! p = finger.image2Tz(1); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); 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("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } Serial.println("Remove finger"); digitalWrite(D3, LOW); ////////////////// retirar dedo u8g2.clearBuffer(); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"RETIRAR HUELLA"); u8g2.sendBuffer(); //lcd.setCursor(0,1); //lcd.print("Retirar Huella "); delay(2000); p = 0; while (p != FINGERPRINT_NOFINGER) { p = finger.getImage(); } Serial.print("ID "); Serial.println(id); p = -1; Serial.println("Place same finger again"); digitalWrite(D3, HIGH); //////////////colocar dedo u8g2.clearBuffer(); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"COLOCAR HUELLA"); u8g2.sendBuffer(); //lcd.setCursor(0,1); //lcd.print("Colocar Huella "); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.print("."); break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); break; default: Serial.println("Unknown error"); break; } } // OK success! p = finger.image2Tz(2); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); digitalWrite(D3, LOW); ////////////////// retirar dedo u8g2.clearBuffer(); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"RETIRAR HUELLA");; u8g2.sendBuffer(); //lcd.setCursor(0,1); //lcd.print("Retirar Huella "); 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("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } // OK converted! Serial.print("Creating model for #"); Serial.println(id); p = finger.createModel(); if (p == FINGERPRINT_OK) { Serial.println("Prints matched!"); } 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; } Serial.print("ID "); Serial.println(id); p = finger.storeModel(id); if (p == FINGERPRINT_OK) { Serial.println("Stored!"); u8g2.clearBuffer(); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"ID AGREGADO"); u8g2.sendBuffer(); //lcd.setCursor(0,1); //lcd.print("ID Agregado! "); digitalWrite(D3, HIGH); ///////CONFIRMACION DE ID AGREGADO/////// delay(50); digitalWrite(D3, LOW); delay(50); digitalWrite(D3, HIGH); delay(50); digitalWrite(D3, LOW); delay(2000); //lcd.clear(); u8g2.clearBuffer(); } 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 { Serial.println("Unknown error"); return p; } return true; } //////////////////////////////////////////////////////////////getFingerprintID/////////////////////////////////////////////// uint8_t getFingerprintID() { uint8_t p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.println("No finger detected"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); return p; default: Serial.println("Unknown error"); return p; } // OK success! p = finger.image2Tz(); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); 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("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } // OK converted! p = finger.fingerFastSearch(); if (p == FINGERPRINT_OK) { Serial.println("Found a print match!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_NOTFOUND) { Serial.println("Did not find a match"); return p; } else { Serial.println("Unknown error"); return p; } // found a match! Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// int getFingerprintIDez() { uint8_t p = finger.getImage(); if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p != FINGERPRINT_OK) return -1; p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; /////////// Encender moto //////////////////////// for (numID; numID < 100; numID++) { if(finger.fingerID == numID) { digitalWrite(D3, HIGH); digitalWrite(D2, HIGH); digitalWrite(D0, LOW); digitalWrite(D1, LOW); } } numID=0; u8g2.clearBuffer(); u8g2.drawStr(0,32,"RAOM Electronica"); u8g2.drawStr(0,52,"ACCESO OK"); u8g2.sendBuffer(); //lcd.setCursor(0,1); //lcd.print("ACCESO OK! "); delay(1000); //lcd.clear(); u8g2.clearBuffer(); digitalWrite(D3, LOW); digitalWrite(D2, LOW); digitalWrite(D0, HIGH); digitalWrite(D1, HIGH); return finger.fingerID; }

Modulo Seguridad usando Sensor de Huella Dactilar
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.

Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW
ESP32-S3 4.3inch Capacitive Touch Display Development Board, 800×480, 5-point Touch, 32-bit LX7 Dual-core Processor
BUY NOW
Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW- Comments(0)
- Likes(1)

-
Vedia30 Mar 06,2023
- 1 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10

-
2design
-
3usability
-
4creativity
-
5content
More by RAOM Electrónica
-
MODULO RFID Este modulo tiene como principal función brindar seguridad mediante el modulo RFID, este proyecto se...
-
Sensor óptico - Secador de manos Sensor optico infrarro aplicado a un secador de manosEn este proyecto realizaremos un sesor óptico ...
-
Alarma Laser de Barrera En el vídeo de hoy realizaremos este genial proyecto de una alarma, la cual cuenta con 4 diodos láse...
-
Modulo huella digital para moto Como encender una moto con huella digital?Modulo PCB para encender moto por huellaEl circuito esta d...
-
Interruptor Infrarrojo ON-OFF 220 V AC En el video de hoy les ense?aré a realizar un INTERRUPTOR OPTICO INFRARROJO , anteriormente habíamos...
-
Interruptor óptico - Apagado Automático - Proyecto de electrónica - I CAN SOLDER Interruptor óptico con apagado Automático utilizando Sensores InfrarrojoHace mucho estaba interesad...
-
Modulo Seguridad usando Sensor de Huella Dactilar Módulo de Seguridad usando Sensor de HuellaEn este nuevo proyecto vamos un circuito que nos permita ...
-
Barra de luz LED RGB GAMER En este proyecto realizaremos un circuito de control para unas barra de luz LED RGB con micrófono ut...
-
Tiras LED Audio Rítmicas RGB En este proyecto realizaremos el montaje de luces conocidas como Audio Rítmicas. El circuito utiliza...
-
RAYO CON LUCES PROGRAMABLES WS2812B LUCES PROGRAMABLES WS2812B CON ARDUINO NANOEn este proyecto realizamos un dise?o enfocado en los apa...
-
MODULO RFID Este modulo tiene como principal función brindar seguridad mediante el modulo RFID, este proyecto se...
-
Sensor óptico - Secador de manos Sensor optico infrarro aplicado a un secador de manosEn este proyecto realizaremos un sesor óptico ...
-
Alarma Laser de Barrera En el vídeo de hoy realizaremos este genial proyecto de una alarma, la cual cuenta con 4 diodos láse...
-
Modulo huella digital para moto Como encender una moto con huella digital?Modulo PCB para encender moto por huellaEl circuito esta d...
-
Interruptor Infrarrojo ON-OFF 220 V AC En el video de hoy les ense?aré a realizar un INTERRUPTOR OPTICO INFRARROJO , anteriormente habíamos...
-
Interruptor óptico - Apagado Automático - Proyecto de electrónica - I CAN SOLDER Interruptor óptico con apagado Automático utilizando Sensores InfrarrojoHace mucho estaba interesad...
-
Modulo Seguridad usando Sensor de Huella Dactilar Módulo de Seguridad usando Sensor de HuellaEn este nuevo proyecto vamos un circuito que nos permita ...
-
Barra de luz LED RGB GAMER En este proyecto realizaremos un circuito de control para unas barra de luz LED RGB con micrófono ut...
-
Tiras LED Audio Rítmicas RGB En este proyecto realizaremos el montaje de luces conocidas como Audio Rítmicas. El circuito utiliza...
-
RAYO CON LUCES PROGRAMABLES WS2812B LUCES PROGRAMABLES WS2812B CON ARDUINO NANOEn este proyecto realizamos un dise?o enfocado en los apa...
-
MODULO RFID Este modulo tiene como principal función brindar seguridad mediante el modulo RFID, este proyecto se...
-
Sensor óptico - Secador de manos Sensor optico infrarro aplicado a un secador de manosEn este proyecto realizaremos un sesor óptico ...
-
-
Modifying a Hotplate to a Reflow Solder Station
520 0 4 -
MPL3115A2 Barometric Pressure, Altitude, and Temperature Sensor
301 0 1 -
-
Nintendo 64DD Replacement Shell
294 0 1 -
V2 Commodore AMIGA USB-C Power Sink Delivery High Efficiency Supply Triple Output 5V ±12V OLED display ATARI compatible shark 100W
759 4 2 -
How to measure weight with Load Cell and HX711
551 0 3 -