Artículos recientes

Promociones especiales

Novedades

Tutorial módulo Lector RFID RC522

Tutorial módulo Lector RFID RC522

Los lectores RFID(Radio Frequency IDentification) en la actualidad están teniendo bastante acogida en los sistemas de identificación, su uso abarca desde sistemas de seguridad, acceso de personal, identificación y logística de productos, como llaves de puertas eléctricas, entre otras aplicaciones.

Su principio de funcionamiento consiste en pasar un TAG, cerca de un lector RFID, el TAG tiene la capacidad de enviar información al lector. Dicha información puede ser desde un simple código o todo un paquete  de información guardo en la memoria del Tag.

Los TAGs viene en diferentes modelos, los más comunes son en tarjetas y en llaveros, pero también vienen como etiquetas adhesivas e incluso ya viene incrustados en algunos productos. Los Tags tienen internamente una antena 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. Pero existen Tags activos, que incorporan baterías, estos tiene alcance de varios metros de distancia.

    

Módulo RFID RC522

Es el que usaremos en este tutorial, este módulo funciona como Lector y Grabador de Tags RFID.

 Módulo RFID RC522

Este módulo utiliza 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 microcontrolador con interfaz SPI, como un Arduino.

Bien, empecemos a armar nuestro proyecto:

  

1. Conexión del entre el módulo RFID y Arduino
  

Módulo RC522

Arduino Uno, Nano

Arduino Mega

SDA (SS)

10

53

SCK

13

52

MOSI

11

51

MISO

12

50

IRQ

No conectado

No conectado

GND

GND

GND

RST

9

9

3.3V

3.3V

3.3V


  

Conexion RFID RC522 y arduino

    



    
Como se observa en la conexión, el módulo trabaja con un voltaje de 3.3V, por lo que la parte lógica también debería trabajar con el mismo nivel de voltaje, para prueba y testeo se puedo conectar directamente a los pines del Arduino (nivel TTL 5V), pero se recomienda usar conversores de niveles de voltaje.

  

2. Programación del Módulo RC522: Lectura del código de identificación


Para poder trabajar el Modulo en Arduino es necesario descargar su librería correspondiente, la que usaremos será una de las más comunes, la desarrollada por Miguel Balboa.

         Librería RFID

Una vez descargada, importamos la librería a nuestro IDE de Arduino, con esto estamos listos para programar.

  

A continuación se muestra un sketch para leer el código de identificación de nuestros Tags

#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 comunicación  serial
	SPI.begin();        //Iniciamos el Bus SPI
	mfrc522.PCD_Init(); // Iniciamos  el MFRC522
	Serial.println("Lectura del UID");
}

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("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);   
                  } 
                  Serial.println();
                  // Terminamos la lectura de la tarjeta  actual
                  mfrc522.PICC_HaltA();         
            }      
	}	
}

   

Como se observa es fácil de entender, pero expliquemos las funciones referentes al módulo RC522
  
 Instanciar el RC522

#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); 

Es necesario utilizar la librería MFRC522.h, solo es necesario especificar los pines Reset y SDA(SS) del módulo, los demás pines trabajan con los pines SPI del Arduino.

   

Iniciar el RC522

SPI.begin();        //Iniciamos el Bus SPI
mfrc522.PCD_Init(); // Iniciamos  el MFRC522

Esta función inicia y configura al RC522 para su posterior lectura, solo es necesario llamarlo una vez por lo que generalmente se lo llama en void setup()

   

Ver si hay una tarjeta presente

mfrc522.PICC_IsNewCardPresent()

Esta función nos devuelve verdadero o falso dependiendo si hay una tarjeta presente cerca al módulo RC522.

  

Seleccionar una tarjeta para la lectura

     mfrc522.PICC_ReadCardSerial()

Se llama a esta función cuando queremos comunicarnos con una tarjeta, nos devuelve un valor verdadero si logra seleccionar una tarjeta para la lectura, de lo contrario nos retorna un valor falso.
  

Obtener el tamaño del código de identificación

mfrc522.uid.size

Nos retorna el tamaño en Bytes del código de identificación de la tarjeta seleccionada.

  
Leer el código de identificación

mfrc522.uid.uidByte

Para acceder al código de identificación es recomendable indexar  la variable por ejemplo mfrc522.uid.uidByte[0] para el byte en la posición inicial.
  
Finalizar la lectura.

mfrc522.PICC_HaltA();         


Con esta función le indicamos que hemos terminado la lectura de la tarjeta presente y IsNewCardPresent() devolverá falso para esta tarjeta mientras no se retire. Si después de retirar la tarjeta, si se ingresa nuevamente la misma tarjeta se le considera como una nueva tarjeta.

  

  

En el sketch, el código de identificación lo enviamos por el puerto serial, para visualizar el código es necesario abrir el Monitor Serial del IDE de Arduino.

   

Monitor Serial RFID

    

  
3. Una Aplicación Simple: Control de acceso usando RFID

  

Bien, visto el ejemplo anterior, ahora apliquémoslo para un control de acceso, que puedes aplicarse en una puerta eléctrica, caja fuerte, sistema de encendido, desactivar alarmas, etc.

Para este ejemplo estamos usando 4 Tags de los cuales solo dos deben tener acceso al sistema. Para implementar esto partimos del sketch anterior y solo le agregamos unas líneas más al final del programa para comparar los códigos y determinar si tienen o no acceso.

  
A continuación se muestra el Sketch.

 

#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:");
}

byte ActualUID[4]; //almacenará el código del Tag leído
byte Usuario1[4]= {0x4D, 0x5C, 0x6A, 0x45} ; //código del usuario 1
byte Usuario2[4]= {0xC1, 0x2F, 0xD6, 0x0E} ; //código del usuario 2
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);
}

   

Y el resultado lo podemos observar al pasar los Tags y visualizarlo en el monitor serial.

  

Monitor serial RFID aplicacion

   

  
En lugar de enviarlo serialmente la confirmación se puede programar para activar una salida digital, que puede estar conectado a una chapa eléctrica, una alarma, etc. dependerá de la aplicación en particular que están trabajando.

Es bueno aclarar que si bien cumple el objetivo, no es una forma 100% segura, cualquiera que sepa del tema podría clonar las tarjetas. Para una mayor seguridad es necesario trabajar con los bloques de la memoria interna del TAG, pudiéndose configurar una clave para la lectura, además se podría trabajar con un código mayor a los 4 bytes del UID, incluso se podrían trabajar con varios datos. (La lectura y escritura de bloques de memoria se verá en un próximo tutorial)

  

Pueden adquirir los materiales usados en este tutorial en nuestra tienda

         Módulo RFID RC522

         RFID NFC Tag 13.56 MHz

         Arduino Uno R3

         Cable Dupont, hembra a macho 20cm x 20Und

Tags: RFID

85 Comments

    • Avatar
      JOHANNY PEREZ
      jul 19, 2016

      buenos días, cómo haría para aumentar la distancia de lectura de la tarjeta al lector unos 10 a 15 metros....???? Gracias...! ! ! ! ! ! !

      • Avatar
        Naylamp
        jul 20, 2016

        Johanny, con el módulo RFID RC522 solo puedes trabajar con distancias cortas. Si necesitas mayor distancia tendrías que trabajar con módulos de mayor potencia y con Tags activos.

        • Avatar
          Franco
          ago 22, 2016

          Qué módulos de mayor potencia me recomendarías para trabajar con distancias más largas con arduino?

          • Avatar
            Santiago
            dic 14, 2016

            Puedes usar los modulos RFID que traen comunicación UART, son un poco más costosos pero funcionan muy bien, simplemente se deben conectar a un puerto serie del arduino. He tenido inconvenientes con los lectores por SPI, primero que todo por distancia, pero también tengo un problema y es que después de cierto tiempo dejan de detectar tarjetas, lo único que he podido hacer para "arreglarlo" es reseteando la placa desde el programa, pero no me parece que sea lo mejor.

            • Avatar
              Miguel
              feb 28, 2017

              Buenas.Estoy mirando UART. Entonces seria conectarlo a traves del puerto serie y con la misma libreria nos funciona?. Habria que cambiar en el codigo el pin de lectura y escritura supongo pero por lo demas seria lo mismo?. Puedes recomendarme algun rfid uart?. Gracias

    • Avatar
      Marcelo
      ago 16, 2016

      Hola, gracias por tu tutorial. Tengo un problema, no soy muy capo en el tema... como puedo dejar el ID leído desde el tag en una variable y no en un array, ej: Id leído D3A1C6D2, valor_tag=211161198214 .Agradecido y disculpa si mi consulta es muy torpe.

      • Avatar
        Naylamp
        ago 22, 2016

        Hola Marcelo, claro que se puede, pero en realidad es más fácil de trabajarlo como array, si quieres guárdalo en un solo número tiene que en ser en un long, que ocupa 4 bytes, prueba con: unsigned long valor_tag=((long)array[3]<<12)|((long)array[2]<<8)|((long)array[1]<<4)|((long)array[2]); Y usa: Serial.println(valor_tag,HEX); para visualizarlo por el monitor serial.

    • Avatar
      Deco
      ago 31, 2016

      Hola, muy buen tutorial, quisiera consultarle de como se podria hace para mantener un led encendido durante el tiempo en que el tag este cercano al lector RFID (en caso de no estar el tag, simplemente no enciende el led).

      • Avatar
        Naylamp
        sep 2, 2016

        Hola para que puedas seguir detectando el TAG no debes usar mfrc522.PICC_HaltA(); esta función detiene la comunicación con el TAG. Si no usas mfrc522.PICC_HaltA() el programa va a entrar al if(mfrc522.PICC_IsNewCardPresent()) mientras el TAG esté presente.

    • Avatar
      12
      sep 3, 2016

      buenas muy buen tuto. Que tendria que escribir para encender y apagar un led cada vez que pase la tarjeta?

      • Avatar
        Naylamp
        sep 14, 2016

        Hola, va a depender de lo que exactamente quieres hacer, si solo quieres hacer parpadear el led cuando se detecta el TAG, solo envía el pulso dentro del segundo if. En cambio si lo que quieres es que el Led se mantenga prendido mientras esté el TAG presente se complica un poco, en este caso hay que comentar mfrc522.PICC_HaltA(), de esta forma siempre va a estar entrando a la condición hasta que se retire el TAG, lo que podría complicar tu programa en caso estés realizando una aplicación de registro o conteo.

    • Avatar
      i2
      sep 16, 2016

      Buenas tardes por mas que lo intento no puedo resolverlo. escribí unas lineas intentandolo con estados pero no soy capaz, se que es mas facil que todo esto pero me lio . sabes si voy por buen camino?? espero no molestarte al poner mi sketch.un saludo
      [code]
      #include
      #include
      #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
      int led_azul = 7;
      int led_verde = 6;
      int led_rojo = 5;
      int LED = 11 ;
      bool estado = true ;
      bool estado_anterior = true ;
      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:");
      pinMode(led_azul, OUTPUT);
      pinMode(led_verde, OUTPUT);
      pinMode(led_rojo, OUTPUT);
      pinMode("Acceso concedido", INPUT_PULLUP);
      pinMode(LED, OUTPUT);
      }
      byte ActualUID[4]; //almacenará el código del Tag leído
      byte Usuario1[4] = {0x96, 0x54, 0xeb, 0x75} ; //código del usuario 1
      byte Usuario2[4] = {0xC1, 0x2F, 0xD6, 0x0E} ; //código del usuario 2
      void loop()
      {
      digitalWrite(led_azul, LOW);
      digitalWrite(led_verde, LOW);
      digitalWrite(led_rojo, LOW);
      // 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(" verificando .... ");
      Serial.println();
      digitalWrite(led_azul, HIGH);
      delay(1000);
      digitalWrite(led_azul,LOW);
      delay(100);
      }
      Serial.print(" ");
      //comparamos los UID para determinar si es uno de nuestros usuarios
      if (compareArray(ActualUID, Usuario1))
      {
      Serial.println("Acceso concedido");
      digitalWrite(led_verde, HIGH);
      delay(1000);
      digitalWrite(led_verde, LOW);
      delay(1000);
      {
      estado = Serial.println("Acceso concedido");
      if (estado != estado_anterior) //hay cambio : Han pulsado o soltado
      {
      if (estado == LOW) //Al pasar tag
      digitalWrite(LED, !digitalRead(LED));
      estado_anterior = estado ; // Para recordar el ultimo valor
      }
      }
      mfrc522.PICC_HaltA();
      }
      else if (compareArray(ActualUID, Usuario2))
      Serial.println("Acceso concedido");
      else
      {
      Serial.println("Acceso denegado");
      digitalWrite(led_rojo, HIGH);
      delay(1000);
      digitalWrite(led_rojo, LOW);
      delay(1000);
      // Terminamos la lectura de la 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);
      }
      [/code]

      • Avatar
        Naylamp
        sep 21, 2016

        Hola, Tienes errores de sintaxis, a continuación te mencionamos los errores que podemos encontrar: 1. pinMode("Acceso concedido", INPUT_PULLUP); 2. estado = Serial.println("Acceso concedido"); 3. Existen dos llaves que están demás. 4. Pones muchas pausas y/o de mucha duración, esto podría reflejarse en que necesitas tener el TAG mucho tiempo cerca al lector, si esto no es un problema puedes seguir trabajando así. Debes ir implementando tu algoritmo por partes, para ver hasta qué punto está funcionando correctamente e ir solucionado los problemas conforme los vas encontrando. Saludos.

    • Avatar
      Rene Misael
      sep 24, 2016

      Excelente. Mil Gracias por tu explicación.

    • Avatar
      Graciela María
      nov 2, 2016

      Si tuviera varios módulos conectados, recibiendo señales, ¿existe alguna forma de saber cuál detecto la tarjeta?

      • Avatar
        Naylamp
        nov 5, 2016

        Hola Graciela, si todos los módulos están conectados al mismo arduino, significa que tienes q declarar objetos(variables) diferentes para cada módulo, y eso ya es una forma de diferenciarlos. Si esta con un controlador separado puedes poner un indicador led Cerca al lector para saber que modulo está conectado a la tarjeta.

    • Avatar
      Jro
      nov 9, 2016

      Hola!! si quiero conectar dos modulos a un arduino comparte MISO,MOSI y SCK y creo dos objetos, cada uno con su respectivo pin reset y SDA, pero me comentaron que no es posible tener a los dos leyendo al mismo tiempo, si pudiera orientarme para desarrollar un metodo que me permita activar y desactivar cada modulo para poder realizar la lectura?

      • Avatar
        Naylamp
        nov 16, 2016

        Hola Jro, estos módulos trabajan con SPI y puedes conectar varios dispositivos al mismo bus. La librería se encarga automáticamente de comunicarse con el dispositivo indicado a través del pin SS (Select Slave). Está bien la forma que planteas y si pueden trabajar los dos al mismo tiempo, pero ten en cuenta que la señal RF puede interferir si ambos módulos están muy cerca.

    • Avatar
      david
      nov 14, 2016

      Hola muchas gracias por compartir , no entiendo porque me aparece este error al final que no me deja compilar con mfrc522.PICC_HaltA(); el error que me sale dice: !class MFRC522! has no member named !PICC_HaltA!ya desinstale librerias volvi a instalar arduino pero sigo con lo mismo ojala alguien pudiera asesorarme ya que soy algo nuevo en esto

      • Avatar
        Naylamp
        nov 16, 2016

        Hola David, es un error de libraría, puede ser que no estés usando la librería correcta o una versión antigua. Toda librería viene con ejemplos, intenta compilar esos y si en esos también te salen errores podría ser error de tu compilador.

    • Avatar
      Alex Wirtz Wlodyka
      dic 2, 2016

      tienes el codigo de programacion del Sensor De Corriente ± 30a Efecto Hall Acs712 Arduino Pic Avr

    • Avatar
      Alberto Valenzuela
      ene 18, 2017

      Buenas tardes. Estpy haciendo un programa de control de acceso con el RFID. Las tarjetas o los ID de las tarjetas los tengo en une micro SD. El punto es que cuando se presente una tarjeta, busque el ID en la base de datos y encienda un led verde si le da acceso y uno rojo si lo porhibe. Para la comparación tengo problemas, porque el archivo en la SD son Strings. Hay una forma de comparar el Tag leído con un string? No se si pueda convertir de String a byte o al revés.

      • Avatar
        Naylamp
        feb 1, 2017

        Hola Alberto, tienes dos opciones convertir el ID leído a Sting para poder comparar con el Sting de la SD o convertir los datos de la SD a números. Para el primer caso seria:
        String ID_string=String(ID[0], HEX)+String(ID[1], HEX)+String(ID[2], HEX)+String(ID[4], HEX);

    • Avatar
      Lucas19906
      feb 6, 2017

      Buenas tardes: les queria comentar si hay algun codigo en el cual se pueda escribir el ID sobre las tarjetas y/o llaveros RFID. Saludos Cordiales

      • Avatar
        Naylamp
        feb 13, 2017

        Hola Lucas, si es posible, la librería viene con un ejemplo para realizar el cambio del ID, puedes abrirlo desde el IDE arduino en Archivo>Ejemplos>MFRC522>ChangeUID

    • Avatar
      Jose
      feb 10, 2017

      Tutorial excelente, muy bien explicado.¿ Sabes si a esta tarjeta se le puede conectar una bobina con alambre de cobre para tener el punto de acceso en dos sitios diferentes? ¿ o si existe alguna forma de poner varias antenas con un multiplexor para que lea en diferentes lugares? Muchas gracias.

      • Avatar
        Naylamp
        feb 13, 2017

        Hola José, es un poco difícil de realizar lo que planteas, lo mejor es usar un módulo RFID en cada punto que deseas sensar.

    • Avatar
      Damian
      feb 12, 2017

      Hola. Quiero armar un sistema de chip para medir la llegada de corredores pedestres. Tenia la idea de usar un rfid de alta potencia (3 mts) y chips pasivos. Pero esta el problema de que tendria q saber cual pasa antes o despues. Tambien se me ocurrio hacer una base con lectores de poca distancia y poner los chips en las zapatillas. Se podra analizar quien llega antes o despues? O el delay ya lectura en forma de hongo va a tener mucho error?

      • Avatar
        Naylamp
        feb 13, 2017

        Hola Damián, buena aplicación la que planteas, efectivamente vas a tener problemas cuando pacen varios cerca del sensor, no solo en el orden sino incluso podrías perder la lectura de algunos de ellos, es decir si pasan varios a la vez y con velocidad. Podrías agregar a tus resultados un componente de error o tolerancia, para que en caso sea necesario otro proceso diferente al RFID se encargue de definir el resultado.

    • Avatar
      luis
      feb 20, 2017

      hola con este tipo de lector puedo detectar si hay un chip rfid en mi cuerpo por conteste rapido se lo agradeceria

    • Avatar
      luis
      feb 20, 2017

      holaa este tipo de lector permite detectar un chip rfid en el cuerpo por favor conteste rapido se lo agradeceria

    • Avatar
      Claudio
      feb 20, 2017

      Como lo podria hacer para agregar mas tarjetas de acceso ??gracias de antemano

      • Avatar
        Naylamp
        mar 11, 2017

        Hola Claudio, si te refieres al ejemplo 3 Agrega más variables de la forma:
        byte Usuario2[4]= {0xC1, 0x2F, 0xD6, 0x0E} ; //código del usuario 2
        Si son varias las tarjetas a las que quieres dar acceso, podrías también usar mejor una matriz en lugar de varios arrays, y podrías usar un for para comparar la tarjeta leída con las de la matriz.

    • Avatar
      Alber
      abr 3, 2017

      muy buen tutorial, pregunta : como leo e identifico un paquete de tarjetas a la vez , o sea que acerque un grupo de estos tag y me despliegue su identificacion

    • Avatar
      Javier Andrés Solarte
      abr 16, 2017

      Buen día estoy tratando de leer un Tag le coloco la programación de esta al comienzo de este articulo pero me aparece este error siempre me pueden por favor decir que estoy haciendo mal.Muchas gracias" C:UsersuserDocumentsArduinoLECTOR_TAGLECTOR_TAG.ino:2:21: fatal error: MFRC522.h: No such file or directory#include ^compilation terminated.exit status 1 Error compilación en tarjeta Arduino/Genuino Uno.

      • Avatar
        Naylamp
        abr 30, 2017

        Hola Javier, posiblemente no hayas instalado correctamente la librería, bórrala, y usa el gestor de librerías para importar la librería.

    • Avatar
      jean
      may 4, 2017

      buenas tardes amigo unas pregunta si yo quiero agregar que al pasar las tag, al ser positivo, me emita un señal y me active un sonido, ya que tengo un modulo TTV020-SD para activarlo,

      • Avatar
        Naylamp
        may 14, 2017

        Hola Jean, agrega la función o instruciones correspondiente dentro del if(compareArray(ActualUID,Usuario1)), ejemplo:
        if(compareArray(ActualUID,Usuario1))
        {
        Serial.println("Acceso concedido...");
        FuncionReproducirSonido();
        }

    • Avatar
      Adrian
      may 5, 2017

      muy buen post, estoy tratando de usar el metodo case donde case A sirva para para leer y el case B sirva para poder escribir la informacion, no tendras el codigo de casualidad?

    • Avatar
      Jesus Miguel
      may 13, 2017

      buenas. Como haría para agregar dos led uno rojo y uno verde que el rojo se encienda cuando sea una tarjeta denegada y el verde se encienda cuando sea tarjeta permitida.. espero su respuesta

      • Avatar
        Naylamp
        may 14, 2017

        Hola Miguel, puedes encender o apagar los leds dentro de los if(compareArray(ActualUID,Usuario1)).

    • Avatar
      Luis Ramon
      may 16, 2017

      Hola a todos. Necesito ayuda. El codigo compila pero creo que hay un error con mi lector. Soldé cables y no hay continuidad entre las entradas, excepto del voltaje al RST. Esto es normal? Lo chequé con un multimetro. Otra opcion puede ser que esté conectando mal, uso arduino Mega y puse #define RST_PIN 9 y #define SS_PIN 53. El resto de pines se configura como en la tabla automáticamente? O debo hacer algo mas? Gracias

      • Avatar
        Naylamp
        may 28, 2017

        Hola Luis, no debe haber continuidad entre el pin RST y voltaje, no tiñen que haber continuidad entre ninguno de sus pines. Los pines SCK, MOSI y MISO deben conectarse a los pines 52,51 y 50 respectivamente, los pines RST y SS pueden ser cualquiera pues estos se definen en el programa con RST_PIN y SS_PIN

    • Avatar
      WILSON RIVERA
      may 18, 2017

      Saludos cordiales desde ecuador, soy el Lcdo. Wilson Rivera docente del colegio de informatica, el motivo de la presente es solicitarles informacion sobre cursos de arduino o talleres q den de manera online, a mas de solicitarles informacion por que hemos creado un grupo de whatsapp con miembros inmersos en la programacion en arduino y app inventor de tal manera q podamos intercambiar experiencias, material y de mas. Espero podamos contar con su valiosa colaboracion por lo que agradezco de antemano su tiempo.Att, Lic. Wilson Rivera Docente

    • Avatar
      Angel Velazquez
      may 22, 2017

      Saludos una pregunta?....Lo que pasa es que tengo un RFID RC522 cuando lo empeze a usar si me leeia los tags pero de repente me dejo de leerlas y hasta ahora no me ha podido leer nada, creen que este dañana ?? necesito saber que tiene si aulguien sabe algo ayudenme porfavor

    • Avatar
      Jim Ortega M
      may 30, 2017

      Buenos días, quiero realizar un proyecto en el que tendría que conectar 9 módulos RFID-RC522 a una tarjeta arduino y poder identificar por que modulo entro la señal y el tag que la activo, si usted tiene el código fuente o un bosquejo que me pueda dar una idea le agradezco que me lo facilite, de antemano muchas gracias, estoy comenzando en este mundo de la electrónica el cual me parece muy especial.

    • Avatar
      Cristian
      jun 4, 2017

      Gente, alguien pudo grabar los TAG de las tarjetas y despues recuperarlos en una base de datos?

    • Avatar
      Alex
      jun 6, 2017

      Buenas amigo, disculpa de casualidad tienes a tu conocimiento el funcionamiento interno del RC522? Necesito saber que ocurre en las librerías de arduino ya que tengo que utilizar este dispositivo pero en otro microcontrolador. Por lo que tengo que generar todo el código para utilizar la antena. Me podrías facilitar algún algoritmo o diagrama de flujo que explique la inicialización estándar y comunicación del mismo?

    • Avatar
      Adolfo
      jun 9, 2017

      Hola muy buen tutorial. Tengo un problema y mis profes no me han podido ayudar. Tengo un RFID No1 con su tarjeta y llavero y está funcionando, creo que si por ejemplo yo quiero usar la tarjeta y llavero del RFID No2 ¿funcione?

      • Avatar
        Naylamp
        jun 18, 2017

        Hola Adolfo, si puedes usar el llavero o tarjeta que vienen con to otro RFID siempre y cuando sean del mismo modelo RFID.

    • Avatar
      Stanley Smith
      jun 9, 2017

      Thank you for the tutorial. I watched the same implementation in the Arduino RFID Tutorial, however, I tried to get this running with a different RF ID card without success. Do you know if there are many different types of cards and if the "newer" standards are more difficult to read or require different hardware?Cheers, Stan

      • Avatar
        Naylamp
        jun 18, 2017

        Hello Stan, To communicate the RFID reader and their respective TAG, take into account the following:
        1. That the RFID reader has the same frequency as the TAG. The RC522 works at 13.56 MHz
        2. That the RFID reader supports the communication protocol of the TAG. The RC522 works with the ISO14443A standard

    • Avatar
      HAYDIN
      jun 27, 2017

      gracias por el tutorial, sobre todo la parte de la funcion para comparar arrays me gustó la forma de hacerlo.

    • Avatar
      Aaron Stone
      jul 12, 2017

      Buena, disculpa, podría un sólo tag conectarse a la vez con diversos módulos? sería usar un tag activo y tres módulos para poder conocer la ubicación de un objeto en una zona de 6m cuadrados mediante trilateración es esto posible?

      • Avatar
        Naylamp
        jul 17, 2017

        Hola para Aaron, le problema no sería en que se conecten los tres a la vez, pues puedes conectarse uno luego liberar el Tag para que otra modulo pueda conectarse, y hacer varias iteraciones de esto. El problema es en sensar la potencia de la señal, la librería no tiene soporte para medir la potencia.

    • Avatar
      luis
      jul 25, 2017

      disculpe quisiera que me regalara buenas paginas para conectar el código con una una base de datos.. lo que sucede es que e intentando encontrar una y no e podido.. para ver si me ase el gran favor ..

      • Avatar
        Naylamp
        jul 30, 2017

        Hola Luis, nosotros tenemos una tutorial para enviar datos a un servidor, no se envían los datos directamente a la base de datos, sino a una página web quien por php enviará los datos a la BD: Arduino y ESP8266 como cliente web

    • Avatar
      Elizabeth
      sep 10, 2017

      hola se puede que un lector lea uno solo tag de un conjunto de 32 tag o existe lo que se llama colision y debe hacerse un algoritmo espero aclares mis dudas gracias saludos

    • Avatar
      Elizabeth
      sep 10, 2017

      Hola un solo lector puede identificar un solo tag de un conjunto de 32 tag o existe colision como puede solucionarlo o no se puede. gracias espero puedas asesorar

      • Avatar
        Naylamp
        sep 23, 2017

        Hola Elizabeth, EL modulo va a intentar comunicarse con el primer tag que encuentre y no siempre es el más cercano, después de leer dependiendo de tu algoritmo puede pasar a leer otro o continuar conectado con el mismo, Si ya son 32 tags lo más probable es que haya interferencia.

    • Avatar
      Cris
      oct 1, 2017

      Hola! he realizado este ejemplo muy interesante y funciona perfectamente cuando esta conectado al usb de la computadora pero si lo desconecto y lo alimento con 5V dc, ya no me lee la tarjeta, alguna idea? Saludos.

      • Avatar
        videos
        oct 12, 2017

        ESTO ES POR LA INTENSIDAD ES DECIR EL AMPERAJE DE LA FUENTE DE 5V NO ES LA SUFICIENTE A COMPARACION DE LA INTRENSIDAD DE LA PC

    • Avatar
      Bryan
      oct 5, 2017

      Necesito saber si tienen algún tutorial en el que el acceso se dé mediante una base de datos: mi idea es esta: -Que el módulo detecte la tarjeta -Que el UID sea enviado a través de una conexión a java -Que de java se envíe confirme el UID, si no existe no le dé acceso y aparezca el mensaje en un formulario hecho en Java y si sí, que en el formulario aparezcan los datos del usuario y le dé acceso

    • Avatar
      videos
      oct 12, 2017

      TUTORIAL PARA INSTALAR LA LIBRERIA INCLUDIO EL LINK + DESCARGA https://www.youtube.com/edit?o=U&video_id=0cDKMi31HFQ

    • Avatar
      Pablo
      oct 14, 2017

      Estimados les pido puedan orientarme ya que estoy trabado en un proyecto y no encuentro solucion. Estoy trabajando con un Arduino UNO con lector rfid este arduino actua como Master, tengo conectado a este un arduino DUE con Shield ethernet el cual utilizo mas que nada para el uso de la SD card, La comunicacion y funcionamiento del proyecto lo tengo ok pero lo que no puedo implementar es que los datos de la tarjeta rfid que lee el Maestro me la envie al Esclavo para asi despues poder guardar un registro en la SD Card, La comunicacion entre ambos es I2C. Podrian orientarme o pasarme algun link donde pueda encontrar algo? Muchas gracias Pablo

    • Avatar
      Lluis
      nov 14, 2017

      Prumero felicitar por el blog. Nuestro problem: Hemos conectado 6 placas rc522 a un arduino one para el control de posicion correcta de 6 tags. Aveces funciona y otras no. Normalmente reconoce los 6 tag pero aveces solo 5 de ellos. Puede ser un problema de consumo, interferencias, tiempos de lectura o inicializacion de placas? La manguera de hilos que une el arduino con las placas es de un par de metros. Alimentamos con 5v porque con 12v creemos que aun era peor. Son ideas. Gracias.

    • Avatar
      Jordi
      nov 28, 2017

      Hola ! Una pregunta sencilla: Los llaveros TAG de pueden mojar en el agua? Se podrían usar de pulsera y meterse en la piscina o en el mar sin que se dañasen? Gracias

    • Avatar
      ANTONIO
      dic 4, 2017

      Buen dia hasta cuantos tags o tarjetas puedo usar con el arduino y solo quero para controles de acceso de una oficina u edificio?

    • Avatar
      Daniel
      ene 4, 2018

      Hola, amigo. Una pregunta: ¿como puedo hacer que cuando pase la tarjeta RFID su código se escriba en windows en cualquier formulario o editor de texto como si estuviera usando un teclado?

    • Avatar
      Gabriel
      ene 5, 2018

      Saludos. Una pregunta, ¿Se puede utilizar más de un módulo RFID RC522 en un solo Arduino Mega?. Desde ya agradezco su pronta ayuda.

    • Avatar
      Carlos Garcia
      ene 29, 2018

      Tengo un modulo RFID RC522 en un Arduino para manejar un un lector de tarjeta y un trinquete de una registradora. Se está calentando y se aísla. Que puede estar pasando.

    • Avatar
      said
      feb 13, 2018

      saludos. utilice el código todo funciono muy bien. Soy nuevo en arduino, me gustaría que el control de acceso se haga cada solo 1 vez por hora. Gracias por su ayuda..

    • Avatar
      Dario
      feb 24, 2018

      Hola buenas, muy buen tutorial. Hay alguna forma de comprobar si la tarjeta o el llavero están defectuosos? He realizado varios tipos de programacion y probado con diferentes libreria y no me da problemas en relacion a la programación pero no me detecta ni el llavero ni la tarjeta. Un saludo y gracias de antemano.

    • Avatar
      Amaia
      mar 5, 2018

      Me has salvado la vida!! <3 Me esta volviendo loca buscando una explicación como esta. Muchas gracias por compartir el código, me ha sido de MUCHISIMA utilidad! Explicado de manera muy, muy detallada y mas claro imposible! ;)

    • Avatar
      juan
      mar 9, 2018

      hola buenas tardes, soy nuevo y les pido un apoyo, estoy elaborando un proyecto de seguimiento para alumnos en un colegio, necesito dos lectores de alcance de lectura de 80 metros, que tipo de tags,o equipos rfid me recomiendan, de antemano gracias.

    • Avatar
      Mauro Asselborn
      mar 13, 2018

      Alguien me puede dar una web o algun archivo donde haya referencias de la libreria, explicando cada función, no solo las utilizadas en estos ejemplos sino los que contienen todas las librerias.

    • Avatar
      Rodolfo Espino
      mar 17, 2018

      Hola que tal, Al abrir la consola en efecto despliega la leyenda "Lectura del UID" sin embargo al aproximar las tarjetas no son detectadas por el RFID. ¿Alguien puede decirme como detectar si el propio Hardware funciona?

    • Avatar
      luis
      abr 3, 2018

      hola que tal como puedo enlazar una base de datos con excel y poder agregar mas de 100 tags (es proyecto escolar) y actualizar el acceso en tiempo real

    • Avatar
      Juan
      abr 8, 2018

      Buenas tardes, he agregado el codigo en el array para encender un led pero me tira error. Podrian ayudarme? y si quisiera conectar un Rele?Serial.print(" "); //comparamos los UID para determinar si es uno de nuestros usuarios if(compareArray(ActualUID,Usuario1)) Serial.println("Acceso concedido..."); digitalWrite (2,HIGH);

    • Avatar
      Christian
      abr 8, 2018

      Hola estuve navegando por una solucion a mi problema, sucede que tengo el arduino original, tengo el modulo rfid rc522 realizo las conexiones tal y como indicas pero cuando acerco las tarjetas de llave y plano no lee absolutamente nada, acaso esta quemado mi modulo o como puedo saber si esta en optimas condicones mi modulo rfid, gracias por tu ayuda

    • Avatar
      Christian M
      abr 8, 2018

      Hola, quisiera que me ayudes en un problema con mi modulo rfid, tengo arduino uno original, modulo rfid, conecte los cables de acuerdo a tu modelo, copie y pegue tu codigo pero lo increible es que no me lee las tarjetas rfid, ni modelo llavero ni el tipo tarjeta de credito, quisiera saber si hay alguna forma para saber si mi modulo rfid esta dañado?, gracias por tu ayuda

    • Avatar
      Ricardo A
      may 30, 2018

      Hola, estimados, como puedo realizar la configuración de RFID mas la configuración HTML, porque hasta el minuto me funciona una de las dos, pero no las dos juntas, será un problema del void loop?.De antemano muchas gracias.Atento a comentarios.Saludos cordiales.-

Leave a Reply

* Name:
* E-mail: (Not Published)
   Website: (Site url withhttp://)
* Comment: