Tabla de contenido:

Arduino High Tech Safe: 6 pasos
Arduino High Tech Safe: 6 pasos

Video: Arduino High Tech Safe: 6 pasos

Video: Arduino High Tech Safe: 6 pasos
Video: robot race. line follower robot with arduino program 2024, Noviembre
Anonim
Caja fuerte de alta tecnología Arduino
Caja fuerte de alta tecnología Arduino

Esta es mi caja fuerte arduino de alta tecnología. Debe escanear su dedo, escanear su tarjeta, luego ingresar una contraseña de 4 dígitos para desbloquear el cajón. Este proyecto no se recomienda para principiantes porque es muy avanzado. El código es largo, pero lo compartiré en este proyecto. El costo es de alrededor de $ 75 si construyes la misma caja fuerte que yo. Este proyecto también podría tardar entre 1 y 3 días en completarse. ¡Entonces empecemos!

Suministros

Para construir la misma caja fuerte que la mía, necesitará:

Arduino (se recomienda Uno porque no tengo pasos para arduino mega o nano. Pero aún puedes usarlos)

tablero de circuitos

servo

cables de puente

palanca de mando

20 * 4 (puede usar 16 * 4, pero tendrá que cambiar el código)

escáner de huellas dactilares

escáner de tarjetas rfid mfrc522

un cubo de legos

Paso 1: construcción de una caja

Construyendo una caja
Construyendo una caja

Primero necesitará una caja para colocar sus dispositivos electrónicos. ¡Puede usar legos, una caja impresa en 3D o incluso cartón! (Aunque esto puede ser más difícil) No olvide hacer agujeros para un cajón y sus dispositivos electrónicos. Si está utilizando el escáner de tarjetas rfid, no necesita hacer un agujero si sus paredes son delgadas. Las tarjetas aún funcionan, pero debes cerrar los llaveros para que el señor de la tarjeta rfid pueda leerlos. También deja espacio para tu arduino y cables en el interior. NOTA: Cuando construya el cajón, deje un agujero en él para que su servo pueda girar y trabar el cajón.

Paso 2: ¡Cableado

Cableado
Cableado

Este paso puede ser complicado porque necesita conectar los cables en el lugar exacto o la electrónica no funcionará. No tengo un diagrama de cableado, pero les diré que van cada uno. El cableado es solo para arduino uno. Tendrá que buscar dónde colocar los cables si está utilizando un arduino mega o nano. Si no está usando todos los electronis que tengo, puede omitir ese cableado.

Escáner de huellas dactilares: cable verde: cable blanco D2: cable negro D3: cable rojo GND: 5 V

Joystick: 5V = 3.3V GND = GND X = A2 Y = A3 Interruptor = D4

escáner de tarjetas rfid: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

pantalla lcd: 5V = 5V GND = GND sda = A4 sck = A5

Servo: cable rojo: 5 V Cable marrón: GND cable amarillo: D6

NOTA: NO CONECTE EL ESCÁNER DE TARJETAS RFID A 5V. SI LO HACE, SE ROMPE !!!

Quizás se pregunte por qué dije que conecte la alimentación del joystick a 3.3V cuando dice 5V en el costado. Eso es porque el servo, la pantalla y el escáner de huellas digitales necesitan 5V. Si agrega el joystick a eso, es posible que la electrónica no funcione porque todo necesita 5V. El joystick seguirá funcionando con 3,3 V. Es solo que el valor máximo no será 1023, será ~ 670.

Paso 3: descarga de bibliotecas

En este proyecto, necesitará 6 bibliotecas para usar toda la electrónica. 1 para el servo, 1 para el sensor de huellas dactilares, 2 para el escáner de tarjetas rfid y 2 para la pantalla. El joystick no necesita biblioteca. Ahora bien, ¿qué es una biblioteca? Básicamente, es un archivo que contiene una gran cantidad de código que puede usar en su proyecto con comandos simples. Para obtener estas bibliotecas, debe ir a un lugar llamado GitHub. Si sabe cómo descargar y descomprimir bibliotecas, simplemente vaya a los enlaces a continuación para las descargas. Si no sabe cómo, puede ir a mi instructable que habla sobre cómo descargar una biblioteca en el paso 3:

o busque un video de youtube sobre cómo descargar una biblioteca arduino desde GitHub

ENLACES A MENTIROSOS:

Servo

sensor de huellas dactilares:

spi

sensor de tarjeta rfid

biblioteca de pantallas 1

biblioteca de pantallas 2

Paso 4: Configuración del sensor de huellas dactilares y el sensor de la tarjeta RFID

Este paso habla sobre cómo configurar el sensor de huellas dactilares y el sensor de la tarjeta rfid. A menos que ya haya utilizado su sensor de huellas digitales, deberá mostrarle cómo se ve su huella digital para que pueda guardarla en su memoria. Incluso si lo ha usado antes, probablemente debería seguir este paso. Le diré cómo hacerlo brevemente, pero si no tiene sentido, vaya al mismo enlace instructable en el último paso. Lo repasa muy bien. Básico solo abre arduino ide. Vaya a archivo> ejemplos> sensor de huellas dactilares adafruit> registrar. Sube el código a arduino, abre el monitor serial y sigue los pasos que te indica. Cuando te diga que le des un número. Escriba 1 #.

Ahora, para la tarjeta rfid, este paso es bastante fácil. Abra arduino ide. Vaya a archivo> ejemplos> mfrc522> leer datos personales. Sube a arduino y abre el monitor serial. Escanee la tarjeta o llavero que desea usar que vino con su sensor. Entonces te dará alguna información. Busque el ID de la tarjeta, serán 4 juegos de 2 dígitos. Algo como esto: AB 45 2Y 45 pero su código será diferente. Escriba esto en una hoja de papel. Lo necesitará de nuevo más tarde. Eso es todo por este paso.

Paso 5: ¡EL CÓDIGO

Este será el paso más difícil para la mayoría de ustedes, pero es bastante simple. Primero copie y pegue el código en el arduino ide desde abajo. En segundo lugar, edite las 2 secciones donde dice EDITAR CÓDIGO. 1 sección es para el escáner de tarjetas, 1 es para el joystick. Estos pasos no se pueden omitir. Una vez hecho esto, ¡cargue el código en arduino!

#include #include Fingerprint.h>

#incluir

#incluir

#incluir

#incluir

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVO);

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

configuración vacía () {

servo.attach (6);

servo.write (170);

lcd. comienzo (20, 4);

Serial.begin (9600);

mientras (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

retraso (4);

mfrc522. PCD_DumpVersionToSerial ();

retraso (100);

Serial.println ("\ n / nPrueba de detección de dedos de Adafruit");

finger.begin (57600);

retraso (5);

if (finger.verifyPassword ()) {

Serial.println ("Todos los sistemas funcionando");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Por favor, escanee el dedo");

} demás {

Serial.println ("ERROR: ¡No se encontró el sensor de huellas dactilares!");

lcd.setCursor (0, 0);

lcd.print ("ERROR: Huella digital");

lcd.setCursor (1, 1);

lcd.print ("¡sensor no encontrado!");

while (1) {retraso (1); }

}

finger.getTemplateCount ();

Serial.print ("El sensor contiene"); Serial.print (finger.templateCount); Serial.println ("plantillas"); Serial.println ("Esperando un dedo válido …"); }

void (* resetFunc) (void) = 0;

bucle vacío () {

getFingerprintIDez ();

retraso (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

cambiar (p) {

caso FINGERPRINT_OK:

Serial.println ("Imagen tomada");

rotura;

caso FINGERPRINT_NOFINGER:

Serial.println ("No se detectó ningún dedo");

return p;

caso FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Error de comunicación");

return p;

caso FINGERPRINT_IMAGEFAIL:

Serial.println ("Error de imagen");

return p;

defecto:

Serial.println ("Error desconocido");

return p;

}

p = dedo.imagen2Tz ();

cambiar (p) {

caso FINGERPRINT_OK:

Serial.println ("Imagen convertida");

rotura;

caso FINGERPRINT_IMAGEMESS:

Serial.println ("Imagen demasiado desordenada");

return p;

caso FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Error de comunicación");

return p;

caso FINGERPRINT_FEATUREFAIL:

Serial.println ("No se pudieron encontrar las funciones de huellas digitales");

return p;

case FINGERPRINT_INVALIDIMAGE:

Serial.println ("No se pudieron encontrar las funciones de huellas digitales");

return p;

defecto:

Serial.println ("Error desconocido");

return p;

}

p = finger.fingerFastSearch ();

si (p == HUELLA DIGITAL_OK) {

Serial.println ("¡Se encontró una coincidencia de impresión!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Error de comunicación");

return p;

} más si (p == HUELLA DIGITAL_NOTFOUND) {

Serial.println ("No se encontró ninguna coincidencia");

return p;

} demás {

Serial.println ("Error desconocido");

return p;

}

Serial.print ("Número de ID encontrado"); Serial.print (finger.fingerID);

Serial.print ("con confianza de"); Serial.println (dedo.confianza);

return finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = HUELLA DIGITAL_OK) return -1;

p = dedo.imagen2Tz ();

if (p! = HUELLA DIGITAL_OK) return -1;

p = finger.fingerFastSearch ();

if (p! = HUELLA DIGITAL_OK) return -1;

Serial.print ("Número de ID encontrado"); Serial.print (finger.fingerID);

Serial.print ("con confianza de"); Serial.println (dedo.confianza);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Finger aceptado");

lcd.setCursor (2, 0);

lcd.print ("ahora escanee la tarjeta …");

lcd.setCursor (0, 3);

lcd.print ("===================>");

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== EDITAR CÓDIGO ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Toma esa hoja de papel con la identificación, había 4 conjuntos de 2 dígitos

mfrc522.uid.uidByte [2] == 0x90 && // Busque por el código, vea dónde dice 0x92, 0xAB, 0x90, 0x1c? Ingrese cada

mfrc522.uid.uidByte [3] == 0x1C) {// de la sección de 2 dígitos después del 0x. Por ejemplo, la sección de la identificación dice

lcd.clear (); // 3E, luego ingrese 3E después de 0x para hacer 0x3E. Haz esto para cada sección

lcd.setCursor (3, 0);

lcd.print ("Finalmente, ingrese");

lcd.setCursor (1, 1);

lcd.print ("contraseña del joystick");

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); si (analogRead (A2) <= 100) {

d1 = L;

}

si (analogRead (A2)> = 670) {

d1 = R;

}

si (analogRead (A3) <= 100) {

d1 = U;

}

si (analogRead (A3)> = 670) {

d1 = D;

}

retraso (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

si (analogRead (A2) <= 100) {

d2 = L;

}

si (analogRead (A2)> = 670) {

d2 = R;

}

si (analogRead (A3) <= 100) {

d2 = U;

}

si (analogRead (A3)> = 670) {

d2 = D;

}

retraso (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

si (analogRead (A2) <= 100) {

d3 = L;

}

si (analogRead (A2)> = 670) {

d3 = R;

}

si (analogRead (A3) <= 100) {

d3 = U;

}

si (analogRead (A3)> = 670) {

d3 = D;

}

retraso (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

si (analogRead (A2) <= 100) {

d4 = L;

}

si (analogRead (A2)> = 670) {

d4 = R;

}

si (analogRead (A3) <= 100) {

d4 = U;

}

si (analogRead (A3)> = 670) {

d4 = D;

}

retraso (500);

if (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDITAR CÓDIGO ====== ================

lcd.clear (); // Esta sección es donde puedes editar la contraseña con el joystick

lcd.setCursor (2, 0); // la contraseña se establece a la izquierda, arriba a la izquierda, a la derecha. Si quieres cambiar

lcd.print ("¡Acceso concedido!"); // esto, ponga una L para izquierda, R para derecha, U para arriba o D para abajo en cualquiera de los

lcd.setCursor (2, 1); // 4 secciones con una letra después de los signos ==.

lcd.print ("Cajón desbloqueado");

lcd.setCursor (2, 2);

lcd.print ("Cuando termines, muévete");

lcd.setCursor (1, 3);

lcd.print ("joystick para volver a bloquear");

servo.write (90);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Cajón bloqueado");

retraso (3000);

resetFunc ();

}demás{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESO DENEGADO !!!");

lcd.setCursor (0, 2);

lcd.print ("Reiniciando el sistema …");

retraso (3000);

resetFunc ();

}

}demás{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESO DENEGADO !!!");

lcd.setCursor (0, 2);

lcd.print ("Reiniciando el sistema …");

retraso (3000);

resetFunc ();

}

}demás{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESO DENEGADO !!!");

lcd.setCursor (0, 2);

lcd.print ("Reiniciando el sistema …");

retraso (3000);

resetFunc ();

}

return finger.fingerID; }

Paso 6: Terminar

Una cosa que olvidé decirte, bueno, dos cosas es que construí esto antes de tomar fotos, así que no pude mostrarte cómo construí la caja. La otra es que se recomienda atornillar la parte del servo en la parte que gira. Si no lo hace, alguien podría tirar del cajón mientras está cerrado y sacar la pieza. Pero antes de atornillarlo, busque el lugar correcto donde colocarlo porque el servo gira hasta cierto punto. O simplemente puede cambiarlo en el código. Si algunos de los componentes electrónicos están actuando de manera extraña, es posible que desee encontrar una forma diferente de obtener 5 V para algunos de ellos. Noté que cuando mi escáner de huellas dactilares parpadeaba, la pantalla parpadeaba ligeramente y el servo hacía ruido. Cuando el servo se movía, la pantalla se oscurecía. ¡Espero que hayas disfrutado del proyecto! Si tiene alguna pregunta, déjela en los comentarios. No utilizo mucho los instructivos, ¡pero los responderé tan pronto como pueda!

Recomendado: