Tarjetas RFID y programas ejemplo


Introducción

Vamos a ver un método para identificar productos al acercarlos a un lector, fichar a la entrada o salida de un recinto, establecer jerarquías de acceso... Y lo vamos a hacer de forma muy sencilla con Arduino y los lectores RFID, que como se indica en Wikipedia:

RFID o identificación por radiofrecuencia, es un sistema de almacenamiento y recuperación de datos remoto. El propósito fundamental de la tecnología RFID es transmitir la identidad de un objeto (similar a un número de serie único) mediante ondas de radio.



Podemos encontrar esta tecnología con diferentes formatos. En la imagen superior vemos el lector que habrá que conectar a Arduino, junto con una tarjeta y un llavero RFID. También existen pegatinas y otros elementos compatibles de pequeño tamaño, como se ve en la imagen de la derecha.

Resulta especialmente interesante combinar esta tecnología con otras funciones de Arduino, como el reloj en tiempo real o la conexión wifi. De esta forma, se puede registrar la hora y la persona que ha entrado o salido de una estancia, realizar un seguimiento web del stock de un almacén y muchas otras funciones.

Toda la información y las explicaciones realizadas en este artículo se encuentra complementadas en dos videotutoriales. Dos formatos para ayudarte a sacar el máximo potencial de ArduinoBlocks. Tu elijes, ¡no tienes excusa!


Funcionamiento

Primero haremos un programa con el que leer el código incluido en una tarjeta, llavero, etc. A continuación, realizaremos un segundo programa con el que comprobar si el código de ese dispositivo es el mismo que el código autorizado.

Cableado en Arduino

El sistema RFID utiliza el protocolo de comunicación SPI, por tanto, se puede elegir la conexión en ciertos pines digitales, pero hay otros que son de uso obligatorio. La conexión mas habitual y que viene por defecto en el bloque de inicialización de ArduinoBlocks, es la siguiente:


La conexión Sda se denomina CS en Arduinoblocks, y puede ir conectada a otros pines, al igual que el pin Reset. Sin embargo, el resto deben ir conectados según el esquema anterior, ya que solo esos pines tienen la función de comunicación SPI en Arduino Uno.

Programación en ArduinoBlocks

En la sección RFID que encontramos en la parte izquierda del editor de ArduinoBlocks tenemos los bloques específicos de esta tecnología. Con solo tres bloques se realizan todas las funciones:

Este primer bloque inicializa la tarjeta e indica a qué pines la hemos conectado. irá por tanto en el apartado de Inicializar

Este segundo bloque es el que se encarga de decirnos si se ha detectado una tarjeta, llavero, etc. Veremos que suele ir asociado a un condicional Si.


Y finalmente, mediante este bloque leemos el código de cada dispositivo. Este código lo podemos enviar directamente al PC, por Wifi, o a cualquier pantalla, o almacenarlo en una variable de texto para compararlo con una base de datos. 

Programa para conocer los códigos de tarjetas y llaveros

El programa para visualizar el código de una tarjeta o llavero en el puerto serie del ordenador, acorde con el anterior esquema de conexión, es el siguiente:


Vemos que hay un bloque de inicialización en el que se concretan los pines a los que se ha conectado el detector. Posteriormente, mediante un condicional Si, se indica que si se detecta una tarjeta, el número identificativo de ésta se imprima en el puerto serie para visualizarla en el PC.

Para nuestro ejemplo, al pasar una tarjeta por el lector, el código leído es 6ea98bbb:


Ese es el código que usaremos en el programa final para gestionar los permisos.

Puedes importar el programa en: http://www.arduinoblocks.com/web/project/128868

Programas de control de accesos con tarjeta RFID

Programa 1: Control básico de un usuario
En primer lugar inicializamos el lector RFID. A continuación, indicamos que si se detecta una tarjeta, se lea su código. Finalmente, si el código leído es igual al que hemos establecido (en este ejemplo 6ea98bbb) entonces se activa el pin 6 durante 2 segundos (que podría abrir una puerta) y se envía al PC el texto: Bienvenido a Didactronica. 
 Puedes importar el programa en: http://www.arduinoblocks.com/web/project/128925

Programa 2: Control personalizado de diferentes usuarios


En esta segunda parte explicamos conceptos un poco mas avanzados, detallando y probando en el vídeo la información descrita a lo largo del resto del artículo.




Ahora vamos a ver como gestionar diferentes permisos e identificar a usuarios. Para el ejemplo, el usuario Pedro va a tener una tarjeta con código 6ea98bbb y Juanjo con código cd139079. Igual que antes, si el código es correcto, se activará una salida durante unos segundos y se enviará un mensaje al PC.

Es importante señalar que, si queremos gestionar mas de un dispositivo RFID (por ejemplo varias tarjetas), no vale la estrategia de comparación directa usada en el programa anterior. Cuando el bloque "Leer ID y expulsar tarjeta" lee una tarjeta, guarda su código y hace que el programa salga del bucle en el que se encuentra, impidiendo así que se puedan realizar varias comparaciones directas consecutivas. Por tanto, lo que hay que hacer si queremos comparar la lectura con varios códigos diferentes, es guardar esa lectura en una variable de texto, y luego, comparar esa variable de texto con los diferentes códigos que tengamos.


Puedes importar el programa en: http://www.arduinoblocks.com/web/project/128869


Programa 3: Control de múltiples usuarios y mensaje de Acceso denegado
El programa anterior es muy intuitivo, pero resulta muy largo si se quiere dar acceso a muchos usuarios. Para simplificarlo vamos a usar una nueva estrategia. Para ello necesitamos nuevos bloques que encontramos en el apartado Lista de ArduinoBlocks.
  • EL bloque Crear lista de texto, permite hacer una una lista de elementos:

  • El bloque Longitud de, permite determinar el número de elementos que forman una lista:
Además, vamos a utilizar un bucle Contar con (for), que se encuentra en el apartado Control


  1. En el bloque Inicializar vamos a crear una lista (Codigos autorizados) que incluya todos los códigos autorizados. Aquí podemos añadir cuantos queramos mediante el mencionado bloque Crear lista. 
  2. Vamos a crear una función (Comprobar codigo) para ver si el código leído se encuentra entre los códigos autorizados.
  3. Si el código está entre los autorizados, se enviará un mensaje de bienvenida. Si por el contrario el código no está entre los autorizados, se enviará un mensaje de Codigo no autorizado.


Puedes importar el programa en: http://www.arduinoblocks.com/web/project/129635

Programa 4: Gestión de múltiples usuarios con diferentes niveles de permisos
Podemos almacenar los códigos autorizados en diferentes listas y de esta forma establecer jerarquías de accesos, clasificaciones de materiales, ofertas, etc. 

Puedes ver e importar el programa en: http://www.arduinoblocks.com/web/project/131034

Comentarios

Entradas populares de este blog

Publicar y almacenar datos en Internet con ThingSpeak

Gráficos y animaciones en pantallas OLED i2c

Dashboard MQTT con Adafruit IO y ArduinoBlocks