Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CONCEPTO:
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
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.
/******************************************************************************
* Proyecto: *
*******************************************************************************
******************************************************************************/
#include <MFRC522.h>
#include <SPI.h>
/*
2 SCK 13 52
3 MOSI 11 51
4 MISO 12 50
5 IRQ * *
7 RST 9 5
* Not needed
1 on ICPS header
*/
#define SAD 10
#define RST 9
int RELE = 4;
void setup(){
SPI.begin();
Serial.begin(115200);
Serial.println("BUSCANDO MFRC522´s.");
mfrc_1.begin();
if (! variable1){
while(1); //halt
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
void loop(){
LECTURA_RFID_1();
void LECTURA_RFID_1(){
byte status;
byte data[MAX_LEN];
byte serial[5];
if (status == MI_OK){
status = mfrc_1.antiCollision(data);
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);
actual_time = millis();
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;
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){
if (key[i] != serial[i]){
return false;
return true;
if(esIgual(serial, Autorizado[i]))
return true;
if(esIgual(serial, Autorizado2[i]))
return true;
return false;
}
void imprimeClave(byte *serial){
Serial.print("CLAVE: ");
Serial.print(serial[i], HEX);
Serial.print(" ");