Un sistema de control de accesos permite controlar quien puede entrar, por ejemplo, a una habitación o abrir un armario. Si buscamos en Internet encontramos cientos de sistemas de control de accesos ya montados, listos para conectar y funcionar, pero realmente en Rincón Ingenieril lo que nos gusta es saber como funciona y saber como podemos montar y programar nuestro propio sistema, para ello por supuesto vamos a usar una de las plataformas más conocidas y la que más hemos tratado, Arduino. Así que analicemos y aprendamos como usar un sistema RFID con Arduino



Para trabajar en este caso vamos a usar un módulo RFID que se comunica con Arduino mediante su UART, es decir, que usa el puerto serie. Esto es maravilloso, créeme, es maravilloso porque no puede ser más fácil trabajar con el módulo, así que manos a la obra.

Modulo RFID con Arduino
Modulo RFID con Arduino

Cumpliendo el objetivo, control de accesos usando RFID con Arduino

Tenemos varias tarjetas RFID con las cuales se identifican tres personas distintas, cada tarjeta RFID contiene un identificar único, es decir un código único. Es por esto que al leer el código con el lector de RFID podemos identificar a una persona.

En este ejemplo trataremos de permitir el acceso solo a una tarjeta, para ello el sistema leerá todas las tarjetas RFID que se acerquen a la antena y cuando la tarjeta coincida con la que tiene permiso, Arduino mantendrá encendido el LED 13 durante 3 segundos. En lugar de un LED podríamos conectar un relé y un abrepuertas y de esta manera al usar la tarjeta correcta, la puerta permanecería desbloqueada durante 3 segundos y después se bloquearía automáticamente.

Además si conectamos este sistema con una base de datos como mysql podríamos incluso comparar el valor de la tarjeta leído con el valor almacenado en la base de datos. En este ejemplo se compara con el valor almacenado en la memoria del propio Arduino. El uso de una base de datos puede ser un ejemplo más realista, ya que normalmente tendremos muchas personas que si pueden llegar a identificar en un control de accesos RFID con Arduino.

En el siguiente vídeo vemos el sistema RFID funcionando.


 

Código RFID para Arduino

El código está basado en configurar el módulo enviándole varios bytes durante el setup y esperar a que lleguen datos a través del puerto serie en el loop. Cuando tengamos datos, los almacenamos en las variables d1 a d5, eso sí, en este caso debemos descartar los primeros 4 bytes. Es por esto último que no almacenamos los tres primeros Serial.write() que leemos.

Tras tener el identificador de la tarjeta leída en las variables Dx, lo comparamos con el identificador almacenado en las variables tx.



/*
* Puedes distribuirlo y modificar el código.
*
* Creado: Enrique Gómez, Rincón Ingenieril
* Versión: 1.1
* Fecha: 02/07/2015
*/
int lectura = 0;
byte t1 = 0x45, t2 = 0x00, t3 = 0x6A, t4 = 0x77, t5 = 0x13;
byte d1 = 0x00, d2 = 0x00, d3 = 0x00, d4 = 0x00, d5 = 0x00;

void setup(){
pinMode(13, OUTPUT);
Serial.begin(19200);
delay(400);
// Configurar el módulo RFDI
Serial.write(0xFF);
Serial.write(0x01);
Serial.write(0x09);
Serial.write(0x87);
Serial.write(0x01);
Serial.write(0x03);
Serial.write(0x02);
Serial.write((byte)0x00);
Serial.write(0x10);
Serial.write(0x20);
Serial.write(0x30);
Serial.write(0x40);
Serial.write(0x37);
delay(400);
}

void loop(){

//Coprobar si recibe datos
do{
lectura = Serial.read();
delay(1000);
} while(lectura != 0xff);

//Leer datos de la tarjeta
Serial.read();
Serial.read();
Serial.read();
d1 = Serial.read();
d2 = Serial.read();
d3 = Serial.read();
d4 = Serial.read();
d5 = Serial.read();
Serial.read();

//Coparar la tarjeta leida con la tarjeta autorizada
if(d1 == t1 && d2 == t2 && d3 == t3 && d4 == t4 && d5 == t5){
//Activar salida
digitalWrite(13,HIGH);
delay(3000);
digitalWrite(13,LOW);
}

}

Enrique Gómez

Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en enrique.rinconingenieril.es
Cerrar menú