Sei sulla pagina 1di 26

CERRADURA INTELIGENTE

ELECTRÓNICA CON RFID

CONCEPTO:

Una cerradura electrónica RFID es un sistema de seguridad utilizado para


el control de acceso mediante tarjetas de proximidad (pulsera RFID). Este
sistema mejora la gestión de llaves y usuarios en la entrada y salida de una
oficina

Este es un proyecto en que consiste activar una cerradura electrónica a


través de un lector RFID-RC522A en Arduino.
FICHA TECNICA DE PROYECTO
INSTITUTO TECNOLOGICO DE SOLEDAD ATLANTICO ITSA
GESTION DE SISTEMAS ELECTROMECANICOS

Título del proyecto: Cerradura inteligente con RFID


(Identificación por radiofrecuencia)
Sector productivo , El objetivo de este proyecto es
objetivo del proyecto: comercializar Este proyecto tiene como
objetivo principal el diseño de una
cerradura electromecánica
con control RFID (identificación por
radio frecuencia) para
Ser utilizada como reemplazo de las
actuales cerraduras de tipo residencial.
Nombres de quienes Luis Eduardo Pérez Sánchez
desarrollarán el Rossana Salcedo
proyecto:
Docente titular:
Descripción del Este es un proyecto en que consiste
proyecto: activar una cerradura electrónica a
través de un lector RFID-RC522A en
Arduino.
CONCLUSIÓN: lo indispensable de este proyecto es comercializar el
producto notable que ofrece este sistema inteligente computarizado,
contribuyendo con los gastos necesarios, y elaborar una mejor ganancia
en un menor tiempo

¿PLANTEAMIENTO DEL PROBLEMA?

Para este proyecto es muy indispensable disponer de un conjunto de


herramientas básicas de un laboratorio de electrónica: un soldador,
alambre de estaño, unos alicates de punta de aguja y cables.

Para el desarrollo de este proyecto dispondremos de los siguientes


materiales:

 Arduino UNO
 Lector RFID-RC522A con su respectiva llave y tarjeta
 Una cerradura electrónica de alimentación de 12 o 24Voltios
 Un Relé 10V-30V
 Un regulador de 5 voltios LM7805
 Dos diodos LED (Rojo y Verde)
 Un transistor NPN 2N3904
 Dos condensadores cerámicos de 100nF
 Un condensador electrolítico de 22uF
 Un diodo 1N4007
 Una resistencia de 470 Ω
 Dos resistencias de 220 Ω
 Una bornera de dos pines
 Un molex de 2 pines
 Una regleta de espadines macho
 Un Jack DC para PCB
 Placa PCB.
DESARROLLO
TARJETAS RFID

Los Tags tienen una antena interna y un microchip, encargado de realizar


todo el proceso de comunicación, la energía lo obtiene de la señal de
radiofrecuencia, que si bien la energía en la señal es pequeña, es suficiente
para hacer trabajar el microchip, esto es la razón por la que es necesario
acercarlos a una pequeña distancia generalmente menor a 10 cm.

Estos lectores realizan un sistema de modulación y demodulación de


13.56MHz, frecuencia que en la actualidad utiliza la tecnología RFID.

EL módulo se comunica por SPI, por lo que se puede implementar con


cualquier micro controlador con interfaz SPI, como un Arduino.
LECTURA DE TAGS

El lector RFID RC522A realiza la lectura de las tarjetas y llaves magnética


(tags) mediante sus códigos hexadecimales, es decir cada tag posee su
propio código hexadecimal del siguiente tamaño: 0xC3, 0xF7, 0xDB,
0x00, 0xFF, 0xFF.

Cada lector viene con un par de tags, pero en este proyecto se incorpora
una sentencia de código para la lectura de múltiples tarjetas, es decir el
usuario tiene la opción de acceder al sistema. Pero para el caso de la
lectura de tarjetas incorrectas ejecuta una sentencia de bloqueo, esta no
permite realizar ninguna acción por parte del usuario durante un cierto
tiempo definido.

La lectura de cada código lo realiza mediante comunicación SPI (Serial


interface).

PINES RC522A (SPI) ARDUINO UNO ARDUINO MEGA


(NSS) SAD (SS) 10 53
SCK 13 52
MOSI 11 51
MISO 12 50
IRQ — —
GND GND GND
RST 9 5
+3.3V (Vcc) voltaje corriente continua 3.3V 3.3V

Durante la lectura de una tarjeta, Arduino permite realizar la acción de


bloquear o acceder a un usuario al sistema. En el caso de permitir acceder
al sistema, Arduino activa una cerradura electrónica de 12 o 24 Voltios a
través de un RELE durante unos segundos y encenderá un Led verde
como indicador de tarjeta correcta. En el caso de bloqueo, dos led (verde y
rojo) parpadearán alternadamente como señal de sistema bloqueado, esta
acción ocurre cuando un usuario intento acceder por tres veces seguidas
al sistema con una tarjeta incorrecta. Antes del bloqueo del sistema,
cuando el lector lea un tag incorrecto, el Led rojo parpadeará como señal
de advertencia
ESQUEMÁTICOS
El circuito es diseñado en Proteus.
DISEÑO DE CIRCUITOS EN PCB
Diseño de la placa PCB en Ares Proteus.

Vista del diseño en 3D


PROGRAMACIÓN
La programación desarrollada en el IDE de Arduino utiliza la librería
MFRC522 para el uso de lectores RFID RC522 y la librería SPI permite
realizar la comunicación con el lector RFID.

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

* Proyecto: *

* CERRADURA ELECTRÓNICA RFID *

*******************************************************************************

Activación de cerraduras electrónicas mediante lectores RFID

******************************************************************************/
#include <MFRC522.h>

#include <SPI.h>

/*

Pins SPI UNO MEGA

1 (NSS) SAD (SS) 10 53

2 SCK 13 52

3 MOSI 11 51

4 MISO 12 50

5 IRQ * *

6 GND GND GND

7 RST 9 5

8 +3.3V (VCC) 3V3 3V3

* Not needed

1 on ICPS header

*/

#define SAD 10

#define RST 9

int RELE = 4;

int LED_NO = 5; // led rojo

int LED_OK = 6; // led verde


int count = 0;

unsigned long old_time;

unsigned long actual_time;

unsigned long lock;

MFRC522 mfrc_1(SAD, RST);

void setup(){

SPI.begin();

Serial.begin(115200);

Serial.println("BUSCANDO MFRC522´s.");

mfrc_1.begin();

byte variable1 = mfrc_1.getFirmwareVersion();

if (! variable1){

Serial.print("NO SE ENCONTRO MFRC522 ");

while(1); //halt

Serial.print("BUSCANDO CHIP MFRC522 ");

Serial.print("FIRMWARE VERSION. 0x");

Serial.print(variable1, HEX);

Serial.println(".");
delay(500);

pinMode(RELE, OUTPUT);

pinMode(LED_NO, OUTPUT);

pinMode(LED_OK, OUTPUT);

old_time = millis();

#define TARJETA 3

#define LLAVE 3

//CLAVE DE LA TAJETAS

byte Autorizado[TARJETA][6] = {{0xC3, 0xF7, 0xDB, 0x00, 0xFF, 0xFF,}, // tarjeta 1

{0x06, 0x27, 0xAD, 0x35, 0xFF, 0xFF,}, // tarjeta 1

{0xE3, 0xD8, 0xBE, 0x02, 0xFF, 0xFF,}};// tarjeta 3

// CLAVE DEL LLAVEROS

byte Autorizado2[LLAVE][6] = {{0x84, 0x2A, 0x28, 0x6F, 0xFF, 0xFF,}, // llavero 1

{0x01, 0xA8, 0x92, 0x2B, 0xFF, 0xFF,}, // llavero 2

{0x26, 0xCB, 0x2E, 0x00, 0xFF, 0xFF,}}; // llavero 3

void imprimeClave(byte *serial);

boolean esIgual(byte *key, byte *serial);


boolean chekaKey(byte *serial);

void loop(){

LECTURA_RFID_1();

void LECTURA_RFID_1(){

byte status;

byte data[MAX_LEN];

byte serial[5];

status = mfrc_1.requestTag(MF1_REQIDL, data);

if (status == MI_OK){

status = mfrc_1.antiCollision(data);

memcpy(serial, data, 5);

if(chekaKey(serial)){

Serial.print("AUTORIZADO");

imprimeClave(serial);

Serial.println("TARJETA CORRECTA");

digitalWrite(LED_OK, HIGH);

digitalWrite(LED_NO, LOW);

digitalWrite(RELE, LOW);
delay(1000);//500

count = 0;

else{

actual_time = millis();

Serial.print("NO AUTORIZADO");

imprimeClave(serial);

Serial.println("TARJETA INCORRECTA");

count++;

delay(100);

////// estado de bloqueado //////

lock = actual_time - old_time;

if (count >= 3){

while (lock < 6000){// bloqueado durante minuto

actual_time = millis();

lock = actual_time - old_time;

digitalWrite(LED_OK, HIGH);

digitalWrite(LED_NO, LOW);

delay(100);

digitalWrite(LED_NO, HIGH);

digitalWrite(LED_OK, LOW);
delay(100);

count = 0;

old_time = actual_time;

else{ // indicador de tarjeta incorrecta

for (int i = 0; i < 4; i++){

digitalWrite(LED_NO, LOW);

delay(200);

digitalWrite(LED_NO, HIGH);

delay(200);

mfrc_1.haltTag();

delay(200);

digitalWrite(LED_OK, LOW);

digitalWrite(LED_NO, HIGH);

digitalWrite(RELE, HIGH);

}
boolean esIgual(byte *key, byte *serial){

for (int i = 0; i < 4; i++){

if (key[i] != serial[i]){

return false;

return true;

boolean chekaKey(byte *serial){

for(int i = 0; i < TARJETA; i++){

if(esIgual(serial, Autorizado[i]))

return true;

for(int i = 0; i < LLAVE; i++){

if(esIgual(serial, Autorizado2[i]))

return true;

return false;

}
void imprimeClave(byte *serial){

Serial.print("CLAVE: ");

for (int i = 0; i < 4; i++){

Serial.print(serial[i], HEX);

Serial.print(" ");

PROCESO DE CONTRUCCI ÓN DEL


PROYECTO
Primero la debemos empezar con la elaboración de la placa en PCB. Esta
placa debe ser de una sola cara de cobre.
Después se debe soldar los componentes en el siguiente orden: puentes,
resistencias, condensadores, transistor, regulador, bornera, espadines,
relé, molex, Jack y leds. Es necesario soldar en el orden mencionado para
evitar inconvenientes al soldar o incomodidades.
Soldar espadines suficientemente largos para el lector RFID. Es muy
importante dejar soldado lo más lejos posible el lector RFID de la placa
PCB, si no es así, tendremos problemas de lecturas de tarjeas. Estos
problemas se deben a rebote de ondas de los tags en la superficie del PCB,
y eso ocasiona distorsión en el lector.
Finalmente empotramos la placa PCB al Arduino.
FUNCIONAMIENTO DEL P ROYECTO
Una vez culminado con todo los procesos de fabricación, conectamos una
fuente de energía de 12 Voltios al Jack de la placa PCB del RFID, y
debemos asegurarnos de que el led rojo del lector y de la placa enciendan
correctamente.

Por ultimo hacemos la lectura de los tags (llavero y tarjeta) para


comprobar su funcionamiento.

Como hemos dicho en el desarrollo, cuando pasemos un tag por el lector,


el led verde encenderá como indicador de tarjeta correcta, pero si el led
rojo parpadea, quiere decir que es una tag incorrecto.
Listo, el proyecto está listo para colocar en una puerta de tu casa como tu
habitación o laboratorio para no permitir el acceso a cualquier persona no
autorizada, y solo tú tengas el control.

Potrebbero piacerti anche