El chip MFRC522. Da soporte a la lectura y escritura de los tags en diferentes condiciones y con control de errores, de una forma sencilla, aunque no puede identificar más que un tag a la vez, a diferencia de otros lectores más profesionales, y requiere que la distancia de lectura sea de una par de centímetros.
Librería RFID-master Descargala Aquí
Para conocer el código de tu llavero o tarjeta, inicia el monitor serial y pásalos por encima del sensor
/*
**********************************
* Sensor RFID-RC522 *
* http://servercanary.sytes.net *
* Código adaptado por Sergio*** *
**********************************
--------------------------------
PINES DEL MODULO
--------------------------------
Modulo -------- Arduino
--------------------------------
SDA (SS) -------- 10
SCK -------------- 13
MOSI ------------- 11
MISO ------------ 12
IRQ -----------NO SE UTILIZA
GND --------------- GND
RST ---------------- 9
3.3V --------------- 3.3V
--------------------------------
*/
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 //Pin 9 para el reset del RC522
#define SS_PIN 10 //Pin 10 para el SS (SDA) del RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); ///Creamos el objeto para el RC522
void setup() {
Serial.begin(9600); //Iniciamos La comunicacion serial
SPI.begin(); //Iniciamos el Bus SPI
mfrc522.PCD_Init(); // Iniciamos el MFRC522
Serial.println("Control de acceso: Esperando Identificación...");
}
byte ActualUID[4]; //almacenará el código del Tag leído
byte Usuario1[4]= {0xB5, 0x32, 0x17, 0x77} ; //código del usuario 1 - B5 32 17 77 hay que añadir 0x delante de cada secuencia de número
byte Usuario2[4]= {0x59, 0x9D, 0x12, 0xBB} ; //código del usuario 2 - 59 9D 12 BB
void loop() {
// Revisamos si hay nuevas tarjetas presentes
if ( mfrc522.PICC_IsNewCardPresent())
{
//Seleccionamos una tarjeta
if ( mfrc522.PICC_ReadCardSerial())
{
// Enviamos serialemente su UID
Serial.print(F("Card UID:"));
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
ActualUID[i]=mfrc522.uid.uidByte[i];
}
Serial.print(" ");
//comparamos los UID para determinar si es uno de nuestros usuarios
if(compareArray(ActualUID,Usuario1))
Serial.println("Acceso concedido...");
else if(compareArray(ActualUID,Usuario2))
Serial.println("Acceso concedido...");
else
Serial.println("Acceso denegado...");
// Terminamos la lectura de la tarjeta tarjeta actual
mfrc522.PICC_HaltA();
}
}
}
//Función para comparar dos vectores
boolean compareArray(byte array1[],byte array2[])
{
if(array1[0] != array2[0])return(false);
if(array1[1] != array2[1])return(false);
if(array1[2] != array2[2])return(false);
if(array1[3] != array2[3])return(false);
return(true);
}