Cerradura con tarjeta: 9 pasos (con fotos)

Cerradura con tarjeta: 9 pasos (con fotos)

Tabla de contenido:

Anonim

Esta instrucción fue creada en cumplimiento del requisito de proyecto de Makecourse en la University of South Florida (www.makecourse.com)

Este Instructivo va a detallar cómo hacer una cerradura de acceso con tarjeta de acceso que se puede colocar en el refrigerador o en el cajón. Simplemente coloque la tarjeta de acceso en el sensor y se abrirá la cerradura.

Suministros:

Paso 1: Materiales Necesarios

Arduino Uno

Motor Shield

Motor paso a paso

Tablero de circuitos

Batería y conector de batería

Presionar el botón

Módulo de tarjeta llave RFID

Caja para almacenamiento de hardware

Paso 2: Impresión 3D

Primero es necesario imprimir en 3D todas sus piezas. Necesita imprimir el soporte de montaje, el pasador, el eje, el engranaje y la cubierta. Utilice los esquemas anteriores para diseñar en 3D las piezas con Inventor.

Dibujos en este orden.

1. cubrir

2. Pin

3. Eje.

4. engranaje

5. Monte

6. Bracket

Paso 3: Acople el eje al engranaje

Pegue el eje al engranaje colocándolo en el orificio diseñado para ello

Paso 4: Conecte el motor a la cubierta

Fije el motor a la cubierta con dos tornillos. Luego, el eje debe deslizarse a través del orificio de la cubierta y apoyarse en el motor.

Paso 5: Coloque la cinta 5M para montar

Corte la cinta adhesiva y la cinta adhesiva para montarla donde está blanca en la foto. Deslice el pasador a través de los orificios hasta la posición de reposo. La cubierta, el engranaje, el eje y el motor deben pegarse en la parte superior.

Paso 6: Cableado a Arduino

Siga el diagrama de cableado con estas instrucciones.

RFID

SDA al pin 10

SCK al pin 13

MOSI al pin 11

MISO al pin 12

IRQ no pin

GRD a GRD

RST al pin 8

3.3V a 3.3V

Motor Shield

El motor paso a paso se conecta a A B C y D

IN1 al pin 2

IN2 al pin 3

IN3 al pin 4

IN4 al pin 5

+ a 5V

- a GND

Botón

Al pin 6

A GND

Paso 7: Bibliotecas CODE

Descarga estos y ponlos en tus bibliotecas.

Paso 8: CODIGO Primario

Copia y pega esto en tu código

/******************************************

#define pin1 2 // estos son los pines Arduino que usamos para activar las bobinas 1-4 del motor paso a paso #define pin2 3 #define pin3 4 #define pin4 5

# defina el tiempo de retardo 5 // tiempo de retardo en ms para controlar el tiempo de retardo del motor paso a paso. // Nuestras pruebas demostraron que 8 es aproximadamente el más rápido que puede producir una operación confiable sin pasos faltantes

#define buttonS 6 // botón de definición para cerrar el bloqueo

#define gearratio 64 const int stepsPerRevolution = 2048; const int mySteps = 255;

#include // Incluir de la biblioteca RC522 #include "FastLED.h" // Incluir de la biblioteca FastLED #include // Se utiliza para la comunicación a través de SPI con el Módulo

#define SDAPIN 10 // El Pin SDA del Módulo RFID está conectado al UNO 10 Pin #define RESETPIN 8 // El Pin del RST del Módulo RFID está conectado al UNO 8 Pin

// # define Buzzer 3 // Pin 3 conectado al pin + del Buzzer

byte FoundTag; // Variable utilizada para verificar si se encontró la etiqueta byte ReadTag; // Variable utilizada para almacenar el valor anticolisión para leer el byte de información de la etiqueta TagData MAX_LEN; // Variable utilizada para almacenar el byte de datos de etiqueta completa TagSerialNumber 5; // Variable utilizada para almacenar solo el número de serie de la etiqueta byte GoodTagSerialNumber 5 = {0xE4, 0xD2, 0x51, 0xEB}; // El número de serie de la etiqueta que estamos buscando.

MFRC522 nfc (SDAPIN, RESETPIN); // Inicial de la biblioteca usando los pines UNO declarados arriba

void setup () {// inicialice el pin 8 como salida: pinMode (pin1, SALIDA); pinMode (pin2, SALIDA); pinMode (pin3, SALIDA); pinMode (pin4, SALIDA);

pinMode (botones, ENTRADA); // configurando el modo pin para el botón digitalWrite (buttonS, HIGH); // definiendo el botón como ALTO //Serial.begin(9600);

SPI.begin (); Serial.begin (9600); // Para monitor serie

// Comience a encontrar un módulo RFID Serial.println ("Looking for RFID Reader"); nfc.begin (); byte version = nfc.getFirmwareVersion (); // Variable para almacenar la versión de Firmware del Módulo

// Si no puede encontrar un módulo RFID si (! Versión) {Serial.print ("No se encontró la placa RC522."); mientras (1); // Espere hasta que se encuentre un módulo RFID}

// Si lo encuentra, imprima la información sobre el módulo RFID Serial.print ("Found chip RC522"); Serial.print ("Versión de firmware: 0x"); Serial.println (versión, HEX); Serial.println (); }

bucle de vacío () {

String GoodTag = "False"; // Variable usada para confirmar buena etiqueta detectada

// Compruebe si se detectó una etiqueta // En caso afirmativo, la variable FoundTag contendrá "MI_OK" FoundTag = nfc.requestTag (MF1_REQIDL, TagData);

if (FoundTag == MI_OK) {retraso (200);

// Obtenga el valor anticolisión para leer correctamente la información de la etiqueta ReadTag = nfc.antiCollision (TagData); memcpy (TagSerialNumber, TagData, 4); // Escriba la información de la etiqueta en la variable TagSerialNumber

Serial.println ("Etiqueta detectada."); Serial.print ("Número de serie:"); para (int i = 0; i <4; i ++) {// Loop para imprimir el número de serie al monitor de serie Serial.print (TagSerialNumber i, HEX); Serial.print (","); } Serial.println (""); Serial.println ();

// Compruebe si la etiqueta detectada tiene el número de serie correcto que estamos buscando (int i = 0; i <4; i ++) {if (GoodTagSerialNumber i! = TagSerialNumber i) {break; // si no es igual, entonces rompa el "for" loop} if (i == 3) {// si lo hicimos en 4 bucles, entonces los números de serie de la etiqueta coinciden con GoodTag = "TRUE"; }} if (GoodTag == "TRUE") {Serial.println ("Success !!!!!!!"); // si la etiqueta es buena, inicia el motor Serial.println (); int numberOfSteps = mySteps; step_OFF (); // apagando todas las bobinas while (númeroOfSteps> 0) {forward (); // avanzando numberOfSteps -; // contando el número de pasos} delay (100); } FastLED.show (); para (int y = 0; y <3; y ++) {

retraso (50); // Delay 1ms

delay (50); // delay 1ms} delay (1500); } else {Serial.println ("TAG NO ACEPTADA ……:("); Serial.println ();

}

if (digitalRead (buttonS) == LOW) {// si se presiona el botón, inicia el motor step_OFF (); // apagando todas las bobinas int numberOfSteps = mySteps; while (numberOfSteps> 0) {backward (); // retrocediendo numberOfSteps -; // contando el número de pasos Serial.println ("LOW"); } retraso (100); }}

Copia y pega esto en una pestaña de funciones

// estas funciones establecen la configuración de los pasadores para cada uno de los cuatro pasos por rotación del motor (tenga en cuenta que el motor del kit está orientado hacia abajo, //es decir. Hay muchos pasos necesarios por rotación.

void Step_A () {digitalWrite (pin1, HIGH); // enciende la bobina 1 digitalWrite (pin2, LOW); digitalWrite (pin3, LOW); digitalWrite (pin4, LOW); } void Step_B () {digitalWrite (pin1, LOW); digitalWrite (pin2, HIGH); // enciende la bobina 2 digitalWrite (pin3, LOW); digitalWrite (pin4, LOW); } void Step_C () {digitalWrite (pin1, LOW); digitalWrite (pin2, LOW); digitalWrite (pin3, ALTO); // encender la bobina 3 digitalWrite (pin4, LOW); } void Step_D () {digitalWrite (pin1, LOW); digitalWrite (pin2, LOW); digitalWrite (pin3, LOW); digitalWrite (pin4, ALTO); // encender la bobina 4} void step_OFF () {digitalWrite (pin1, LOW); // apagar todas las bobinas digitalWrite (pin2, LOW); digitalWrite (pin3, LOW); digitalWrite (pin4, LOW); }

// estas funciones ejecutan las configuraciones anteriores en orden directo e inverso // la dirección de un motor paso a paso depende del orden en que se encienden las bobinas. void forward () {// one tooth forward Step_A (); retraso (tiempo de retraso); Step_B (); retraso (tiempo de retraso); Step_C (); retraso (tiempo de retraso); Step_D (); retraso (tiempo de retraso); }

void backward () {// un diente hacia atrás Step_D (); retraso (tiempo de retraso); Step_C (); retraso (tiempo de retraso); Step_B (); retraso (tiempo de retraso); Step_A (); retraso (tiempo de retraso); }

Inicie el monitor serie y ejecute el código.

Presione su tarjeta hasta el sensor y escriba la información de la etiqueta.

Reemplace la información de etiqueta aceptada con su información de etiqueta

Paso 9: Contenedor

Consigue tu contenedor y abre un agujero para el botón. Coloque todos los cables en la caja.

¡Felicidades! ¡Tu llave de acceso ya está terminada!