Haga clic para más productos.
No se encontraron productos.
Búsqueda de blogs
Artículos Recientes
Categorías del blog
Últimos comentarios
No hay artículos
Artículos relacionados

Tutorial módulo Lector RFID RC522

243154

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)

  

Productos relacionados
Artículos relacionados
132 Comentarios
  • Edwin Ardila

    Edwin Ardila 03/10/2021 Responder

    Saludo. Gracias.
    Cómo cambio la comunicación de SPI a UART
    Gracias
  • Gabriel

    Gabriel 02/03/2021 Responder

    hola estoy haciendo un sistema para mis puertas tengo un actuador lineal conectado a un arduino y quiero poner un lector rfid y llevar el control de apertuar y cierres. me gustaria ponerme en contacto con ustedes para comprar todo lo que necesito y me asesoren en la instalacion. gracias

    • JOSUE GAMALIEL

      JOSUE GAMALIEL 16/06/2021 Responder

      Yo te puedo hacer el diseño y sistema, contactame
  • Oscar Caicedo

    Oscar Caicedo 19/01/2021 Responder

    hola buenos dias con el lector rfid se puede realizar lectura y escritura de los chips nfc ntag213?
  • shadib navarro acosta

    shadib navarro acosta 02/12/2020 Responder

    Hola, tengo un proyecto en gestión y me preguntaba si hay alguna manera de programar dos Módulos MFRC-522 a la vez.
    • yorisdan

      yorisdan 26/09/2021 Responder

      SI, es totalmente posible mediante SPI.
      Saludos
  • Jorge p

    Jorge p 30/10/2020 Responder

    Hola tengo un tag rfid en un tarro de tinta que se consume con las horas ese chip llega a cero y pide cambio puedo resetearlo para seguir usandolo ??
  • Juan MArtínez

    Juan MArtínez 29/10/2020 Responder

    Hola que tal! espero me puedan apoyar con mi duda:
    ¿Es posible que funcione sin que tenga que soldar los pines al módulo?
  • Hector

    Hector 03/10/2020 Responder

    Hola tengo el modulo RFID-RC522 y quisiera saber si se puede clonar 4 tarjetas por ejemplo, es decir que tengan mismo numero de identificación.
  • CARLOS

    CARLOS 17/07/2020 Responder

    Hola a todos! Les quiero preguntar si alguien tiene el código para añadir un led a la placa(directamente) y que se prenda cada vez que detecta una tarjebta. Por favor si alguien sabe digame
  • Jorge

    Jorge 30/04/2020 Responder

    Hola!
    Un tutorial muy interesante!
    Si queremos grabar y leer mensajes NDEF también lo podemos hacer?
    Me refiero a que si con esta librería y ejemplos y el MIFARE RC522 en un Arduino Mega es posible realizarlo
    muchas gracias
    saludos
  • hibola

    hibola 14/03/2020 Responder

    me dice eror a que ago?
  • cristóbal

    cristóbal 05/12/2019 Responder

    Hola, se le puede reenombrar un valor a o codigo a las tarjetas o el pin que se le acerca al hacer el contacto como lo hago =?

  • Salvador Sedas

    Salvador Sedas 29/10/2019 Responder

    Buen Día,
    Me gustaría saber como puedo hacer que una tarjeta y un llavero puedan desactivar una alarma que va conectado al pin 3 del arduino, ya he tratado pero no me funciona, debo mencionar que estoy iniciando en esto, agradezco mucho su apreciable ayuda.

    Saludos.
  • Dario

    Dario 06/10/2019 Responder

    Hola, tengo una pregunta como puedo hacer que la información obtenida de la tarjeta se guarde a una base de datos, soy nuevo en esto me podría ayudar
  • Alexis

    Alexis 30/09/2019 Responder

    Hola buenas tardes, gracias por compartir conocimiento....no sé nada de estos temas y estoy leyendo para comenzar con algo....mi pregunta es....se puede con esta aplicación hacer que el sensor constantemente lea la tarjeta o llavero y si no la detecta, active por ejemplo una alarma o un relé, gracias.
  • Samuel Mora

    Samuel Mora 08/09/2019 Responder

    Y Como Hago Para Que El Led Se Apague De Forma Automática Apenas Retire El Tag RFID?
  • Ivan

    Ivan 07/08/2019 Responder

    Buenas quería saber como puedo hacer para que con una misma tarjeta, según la cantidad de veces que la apoye o cantidad de tiempo la apoye, haga dos cosas diferentes. Se podrá?
  • Jhonaimer Diaz

    Jhonaimer Diaz 28/07/2019 Responder

    buenos dias como podria agregar muchas tarjetas agradezco de antemano
  • ESTEBAN CASANOVA DE LA

    ESTEBAN CASANOVA DE LA 09/07/2019 Responder

    como puede usar un aduino con 200 tarjeta rdid
  • Orlando Gabriel

    Orlando Gabriel 08/06/2019 Responder

    hola. Alguien podria ayudarme? he montado un modulo lector rfid y funciona correctamente, pero solo me permite leer un llavero a la vez. se que al codigo le falta alguna linea pero no puedo resolverlo, soy muy nuevo en esto y estoy aprendiendo. Gracias porla ayuda.
    • carlos

      carlos 14/06/2019 Responder

      #include
      #include

      #define SS_PIN 10
      #define RST_PIN 9

      MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class

      MFRC522::MIFARE_Key key;

      // Init array that will store new NUID
      byte nuidPICC[4];

      void setup() {
      Serial.begin(9600);
      SPI.begin(); // Init SPI bus
      rfid.PCD_Init(); // Init MFRC522

      for (byte i = 0; i < 6; i++) {
      key.keyByte[i] = 0xFF;
      }

      Serial.println(F("This code scan the MIFARE Classsic NUID."));
      Serial.print(F("Using the following key:"));
      printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
      }

      void loop() {

      // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
      if ( ! rfid.PICC_IsNewCardPresent())
      return;

      // Verify if the NUID has been readed
      if ( ! rfid.PICC_ReadCardSerial())
      return;

      Serial.print(F("PICC type: "));
      MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
      Serial.println(rfid.PICC_GetTypeName(piccType));

      // Check is the PICC of Classic MIFARE type
      if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
      piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
      piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
      Serial.println(F("Your tag is not of type MIFARE Classic."));
      return;
      }

      if (rfid.uid.uidByte[0] != nuidPICC[0] ||
      rfid.uid.uidByte[1] != nuidPICC[1] ||
      rfid.uid.uidByte[2] != nuidPICC[2] ||
      rfid.uid.uidByte[3] != nuidPICC[3] ) {
      Serial.println(F("A new card has been detected."));

      // Store NUID into nuidPICC array
      for (byte i = 0; i < 4; i++) {
      nuidPICC[i] = rfid.uid.uidByte[i];
      }

      Serial.println(F("The NUID tag is:"));
      Serial.print(F("In hex: "));
      printHex(rfid.uid.uidByte, rfid.uid.size);
      Serial.println();
      Serial.print(F("In dec: "));
      printDec(rfid.uid.uidByte, rfid.uid.size);
      Serial.println();
      }
      else Serial.println(F("Equipo Recibido."));

      // Halt PICC
      rfid.PICC_HaltA();

      // Stop encryption on PCD
      rfid.PCD_StopCrypto1();
      }


      /**
      * Helper routine to dump a byte array as hex values to Serial.
      */
      void printHex(byte *buffer, byte bufferSize) {
      for (byte i = 0; i < bufferSize; i++) {
      Serial.print(buffer[i] < 0x10 ? " 0" : " ");
      Serial.print(buffer[i], HEX);
      }
      }

      /**
      * Helper routine to dump a byte array as dec values to Serial.
      */
      void printDec(byte *buffer, byte bufferSize) {
      for (byte i = 0; i < bufferSize; i++) {
      Serial.print(buffer[i] < 0x10 ? " 0" : " ");
      Serial.print(buffer[i], DEC);
      }
      }
  • Ricardo Ore

    Ricardo Ore 03/06/2019 Responder

    Excelente la explicación sobre el manejo del modulo, quisiera saber hasta cuantos módulos RFID se puede manejar con un Arduino UNO, ya sea usando expansores de pines, multiplexores o haciendo uso de los buses SPI o I2C. La consulta nace por la necesidad de controlar (autorización y seguridad) de 64 equipos móviles (celulares y tablets) de prueba ubicados dentro de un armario.
  • Diego Quiroga

    Diego Quiroga 28/05/2019 Responder

    AYUDA! configure los pines MISO Y MOSI EN D7 Y D8 Y NO ME SIRVE, ES UNA PLACA PCB Y NO PUEDO CAMBIARLOS, HAY ALGUNA MANERA DE ARREGLAR EL PROBLEMA?
  • Ciro

    Ciro 22/05/2019 Responder

    No consigo que funcione, el código compila y carga correctamente, e imprime "Lectura del UID:" sin problemas, pero cuando acerco una tarjeta no reacciona.
  • Hugo Nuñez Diaz

    Hugo Nuñez Diaz 28/04/2019 Responder

    Hola Mundo.

    El programa realiza lectura de tag y reconoce el autorizado, con lo que envio señal a modulo rele para activar cerradura electrica. El problema es pasado un tiempo ( un par de horas) este se bloquea y ya no lee ninguu tag. Sera necesario colocar convertidor 5v a 3,3v . Si la respuesta es positiva cual recomiendas considerando que el chip RC522 tiene 5 pines en uso mas gnd y 3V3.
    Gracias de antemano.
  • Diego Martínez Martija

    Diego Martínez Martija 07/04/2019 Responder

    Buenos días,

    Estoy intentando hacer una aplicación que lea el contenido de una pegatina nfc. Todos los ejemplos que veo lo que hacen es leer el código de la pegatina y el número de serie pero lo que necesito es leer el contenido. Si he grabado el mensaje "Hola don pepito" que la aplicación de escritorio me lea ese "Hola don pepito" y no el número de serie de la tarjeta. Los ejemplos que hay en internet se limitan a leer el serial de la pegatina.
    He usado programas de ejemplo de internet que se supone que graban información en la pegatina pero no funcionan por que cuando leo la pegatina con NFC tools sale que está vacía

    Hasta ahora cuando leo la pegatina lo que me devuelve son números o códigos extraños y no el texto o el contenido que es lo que me interesa.

    He usado pegatinas MIFARE ultralight, un lector RFID RC522 de funduino y arduino uno. He probado con la librería y RFID.h y tampoco funciona

    Gracias por anticipado
    • Diego Martínez Martija

      Diego Martínez Martija 07/04/2019 Responder

      He visto que he mandado la pregunta por triplicado. Perdón pero no me he dado cuenta. Si hace falta eliminar los mensajes repetidos. Lo siento
  • Diego Martínez Martija

    Diego Martínez Martija 07/04/2019 Responder

    Buenos días,

    Estoy intentando hacer una aplicación que lea el contenido de una pegatina nfc. Todos los ejemplos que veo lo que hacen es leer el código de la pegatina y el número de serie pero lo que necesito es leer el contenido. Si he grabado el mensaje "Hola don pepito" que la aplicación de escritorio me lea ese "Hola don pepito" y no el número de serie de la tarjeta. Los ejemplos que hay en internet se limitan a leer el serial de la pegatina.
    He usado programas de ejemplo de internet que se supone que graban información en la pegatina pero no funcionan por que cuando leo la pegatina con NFC tools sale que está vacía

    Hasta ahora cuando leo la pegatina lo que me devuelve son números o códigos extraños y no el texto o el contenido que es lo que me interesa.

    He usado pegatinas MIFARE ultralight, un lector RFID RC522 de funduino y arduino uno. He probado con la librería y RFID.h y tampoco funciona

    Gracias por anticipado
  • Diego Martínez Martija

    Diego Martínez Martija 07/04/2019 Responder

    Buenos días,

    Estoy intentando hacer una aplicación que lea el contenido de una pegatina nfc. Todos los ejemplos que veo lo que hacen es leer el código de la pegatina y el número de serie pero lo que necesito es leer el contenido. Si he grabado el mensaje "Hola don pepito" que la aplicación de escritorio me lea ese "Hola don pepito" y no el número de serie de la tarjeta. Los ejemplos que hay en internet se limitan a leer el serial de la pegatina.
    He usado programas de ejemplo de internet que se supone que graban información en la pegatina pero no funcionan por que cuando leo la pegatina con NFC tools sale que está vacía

    Hasta ahora cuando leo la pegatina lo que me devuelve son números o códigos extraños y no el texto o el contenido que es lo que me interesa.

    He usado pegatinas MIFARE ultralight, un lector RFID RC522 de funduino y arduino uno. He probado con la librería y RFID.h y tampoco funciona

    Gracias por anticipado
  • Cristian

    Cristian 28/03/2019 Responder

    Hola tengo una duda. Lo que pasa es que necesito utilizar arduino con RFID pero con una frecuencia que este más menos en un rango de 120 a 135 kHz. Y esto con un módulo Bluetooth . Solo necesito que me lea y poder transferir lo que lee .. se puede ???
  • osvaldo

    osvaldo 11/02/2019 Responder

    hola, tengo la duda de como configurar el modulo a su maxima potencia, me puedes explicar como por favor
  • Ricardo

    Ricardo 04/02/2019 Responder

    hola, cuando escribo mi codigo, me pone un error 'compareArray' cannot be used as a function, y antes me ponia que no estaba en el scope
  • Mario

    Mario 16/01/2019 Responder

    hola, me sirvió mucho, quisiera hacer que cuando pase pase la tarjeta un led se quede encendido hasta que vuelva a pasar la tarjeta, como lo hago? Agradezco tu respuesta
  • Matias

    Matias 19/12/2018 Responder

    Disculpen amigos de casualidad saben como le podre hacer para que el tag atraviese una puerta metálica y lo lea desde afuera sin abrir orificios ? Mas que nada por el vandalismo pueden dañar el lector RFID Golpenadolo
  • diego bornetto

    diego bornetto 13/12/2018 Responder

    disculpa que te moleste, una pregunta quiero prender una luz del pasillo con un tag y apagarla en el otro extremo se puede
  • Ricardo Anthony López

    Ricardo Anthony López 09/12/2018 Responder

    Buen dia, compre ese modulo y me vino con un llavero y una tarjeta, todo perfecto pero a la hora de colocar mi tarjeta de acceso a la universidad no la lee, tambien compre un anillo nfc y tampoco lo lee, sera por la frecuencia? se puede modificar de alguna forma eso en el modulo? o en otro caso cual otro modulo podría comprar (una opcion barata porque estoy chihuan)
    Este es el anillo que compre.
    "https://es.aliexpress.com/item/EastVita-nuevo-Smart-anillos-NFC-impermeable-multifuncional-inteligente-anillo-inteligente-usar-dedo-Digital-anillo-Accesorios/32867462837.html?spm=a2g0s.9042311.0.0.503d63c0n6TWRj"
  • Joaquin

    Joaquin 25/11/2018 Responder

    Buenas tardes, me pareció interesante, como podría hacer para desarrollar una aplicación móvil en Android Studio y comunicarla con el lector RFID, gracias.
  • juan

    juan 20/11/2018 Responder

    Hola
    mi pregunta es tengo dos tarjetas NFC shieldv1.6 quiero que una tarjeta sea el lector y otra tarjeta sea el tag se puede llegar a realizar este experimento o solo funciona con tarjetas pasivas
  • Erick

    Erick 14/11/2018 Responder

    hola, que se le agregaria a la programación para activar una salida digital (lo usaré para una cerradura electrica) y que puertos tendría que usar del arduino
  • sebastian

    sebastian 16/10/2018 Responder

    hola mi pregunta es la siguiente a la hora de ser reconocido la tarjeta rfid del arduino quiero que envie ese codigo aun computador para activar un video.
  • edil

    edil 08/10/2018 Responder

    hola disculpa si quisiera conectar con arduino mega cual tendria que modificar ? estuve probando con el uno si me funciona pero cuando lo conecto con el mega no pasa nada ayudemme porfa gracias
  • miguel

    miguel 01/10/2018 Responder

    disculpa es necesario cambiar las frecuencias si es que se deseara usar un sensor que me lea a distancias de entre 8 a 10 metros ????
    y cual me recomendarías para esas distancias???
  • expertos en cajas fuertes

    expertos en cajas fuertes 28/08/2018 Responder

    Hola muy buenas. Me gustaría saber si algún usuario tuviera un tutorial para este lector. Un saludo!!
  • mariano

    mariano 11/07/2018 Responder

    Hola, se podrian conectar dos modulos RC522 en paralelo al mismo arduino, ya que ambos trabajan con las mismas tags rfid
  • Cristopher

    Cristopher 07/07/2018 Responder

    Hola como se podria aumentar la distancia para este RFID como unos 15 cm ?
  • Ricardo A

    Ricardo A 30/05/2018 Responder

    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.-
  • Christian M

    Christian M 08/04/2018 Responder

    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
  • Christian

    Christian 08/04/2018 Responder

    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
  • Juan

    Juan 08/04/2018 Responder

    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);
  • luis

    luis 03/04/2018 Responder

    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
  • Rodolfo Espino

    Rodolfo Espino 17/03/2018 Responder

    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?
  • Mauro Asselborn

    Mauro Asselborn 13/03/2018 Responder

    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.
  • juan

    juan 09/03/2018 Responder

    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.
  • Amaia

    Amaia 05/03/2018 Responder

    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! ;)
  • Dario

    Dario 24/02/2018 Responder

    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.
  • said

    said 13/02/2018 Responder

    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..
  • Carlos Garcia

    Carlos Garcia 29/01/2018 Responder

    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.
  • Gabriel

    Gabriel 05/01/2018 Responder

    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.
  • Daniel

    Daniel 04/01/2018 Responder

    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?
  • ANTONIO

    ANTONIO 04/12/2017 Responder

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

    Jordi 28/11/2017 Responder

    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
  • Lluis

    Lluis 14/11/2017 Responder

    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.
  • Pablo

    Pablo 14/10/2017 Responder

    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
  • videos

    videos 12/10/2017 Responder

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

    Bryan 05/10/2017 Responder

    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
  • Cris

    Cris 01/10/2017 Responder

    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.
    • videos

      videos 12/10/2017 Responder

      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
  • Elizabeth

    Elizabeth 10/09/2017 Responder

    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
    • Naylamp

      Naylamp 23/09/2017 Responder

      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.
  • Elizabeth

    Elizabeth 10/09/2017 Responder

    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
  • luis

    luis 25/07/2017 Responder

    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 ..
    • Naylamp

      Naylamp 30/07/2017 Responder

      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

  • Aaron Stone

    Aaron Stone 12/07/2017 Responder

    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?
    • Naylamp

      Naylamp 17/07/2017 Responder

      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.
  • HAYDIN

    HAYDIN 27/06/2017 Responder

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

    Stanley Smith 09/06/2017 Responder

    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
    • Naylamp

      Naylamp 18/06/2017 Responder

      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
  • Adolfo

    Adolfo 09/06/2017 Responder

    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?
    • Naylamp

      Naylamp 18/06/2017 Responder

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

    Alex 06/06/2017 Responder

    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?
  • Cristian

    Cristian 04/06/2017 Responder

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

    Jim Ortega M 30/05/2017 Responder

    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.
  • Angel Velazquez

    Angel Velazquez 22/05/2017 Responder

    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
  • WILSON RIVERA

    WILSON RIVERA 18/05/2017 Responder

    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
  • Luis Ramon

    Luis Ramon 16/05/2017 Responder

    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
    • Naylamp

      Naylamp 28/05/2017 Responder

      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
  • Jesus Miguel

    Jesus Miguel 13/05/2017 Responder

    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
    • Naylamp

      Naylamp 14/05/2017 Responder

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

    Adrian 05/05/2017 Responder

    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?
  • jean

    jean 04/05/2017 Responder

    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,
    • Naylamp

      Naylamp 14/05/2017 Responder

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

      }
  • Javier Andrés Solarte

    Javier Andrés Solarte 16/04/2017 Responder

    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.
    • Naylamp

      Naylamp 30/04/2017 Responder

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

    Alber 03/04/2017 Responder

    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
  • Claudio

    Claudio 20/02/2017 Responder

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

      Naylamp 11/03/2017 Responder

      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.
      • sergio

        sergio 10/05/2018 Responder

        buenas que tal mi nombre es sergio al igual que el amigo claudio necesito ingresar varias tarjetas es decir grabar tarjetas nuevas y no entiendo bien el tema de la matriz,,, hay alguna posibilidad que me expliques bien como hacerlo le dejo mi correo sergioga_bus@hotmail.com ojala puedas ver mi mje y darme informacion muchas gracias exelente su tutorial atte sergio
  • luis

    luis 20/02/2017 Responder

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

    luis 20/02/2017 Responder

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

    Damian 12/02/2017 Responder

    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?
    • Naylamp

      Naylamp 13/02/2017 Responder

      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.
  • Jose

    Jose 10/02/2017 Responder

    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.
    • Naylamp

      Naylamp 13/02/2017 Responder

      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.
  • Lucas19906

    Lucas19906 06/02/2017 Responder

    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
    • Naylamp

      Naylamp 13/02/2017 Responder

      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
  • Alberto Valenzuela

    Alberto Valenzuela 18/01/2017 Responder

    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.
    • Naylamp

      Naylamp 01/02/2017 Responder

      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);
  • Alex Wirtz Wlodyka

    Alex Wirtz Wlodyka 02/12/2016 Responder

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

    david 14/11/2016 Responder

    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
    • Naylamp

      Naylamp 16/11/2016 Responder

      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.
  • Jro

    Jro 09/11/2016 Responder

    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?
    • Naylamp

      Naylamp 16/11/2016 Responder

      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.
  • Graciela María

    Graciela María 02/11/2016 Responder

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

      Naylamp 05/11/2016 Responder

      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.
  • Rene Misael

    Rene Misael 24/09/2016 Responder

    Excelente. Mil Gracias por tu explicación.
  • i2

    i2 16/09/2016 Responder


    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]

    • Naylamp

      Naylamp 21/09/2016 Responder

      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.
  • 12

    12 03/09/2016 Responder

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

      Naylamp 14/09/2016 Responder

      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.
  • Deco

    Deco 31/08/2016 Responder

    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).
    • Naylamp

      Naylamp 02/09/2016 Responder

      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.
  • Marcelo

    Marcelo 16/08/2016 Responder

    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.
    • Naylamp

      Naylamp 22/08/2016 Responder

      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.
      • Juan Camilo Vargas Blanco

        Juan Camilo Vargas Blanco 26/10/2019 Responder

        Buenas tardes,
        Una pregunta, estas 2 líneas de código donde se deben ajustar ?
      • Jorge

        Jorge 24/10/2018 Responder

        Disculpa, quiero optimizar la validacion de una tarjeta rfid, pero las valida contra 100 tarjetas que manejo, y las ultimas tardan hasta 7 segundos, hay alguna forma de validar mas rapido que el arreglo hexadecimal? Gracias
      • ariel toledo

        ariel toledo 27/08/2016 Responder

        hola amigo, probé el sketch en un leonardo con las conexiones que indica la librería en caso del leonardo pero no me muestra los códigos por el serial, tengo que agregar algo a la programación?? muchas gracias
  • JOHANNY PEREZ

    JOHANNY PEREZ 19/07/2016 Responder

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

      Naylamp 20/07/2016 Responder

      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.
      • Franco

        Franco 22/08/2016 Responder

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

          Santiago 14/12/2016 Responder

          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.
          • Miguel

            Miguel 28/02/2017 Responder

            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
Dejar un comentario
Deja su comentario

Menú

Ajustes

Crear una cuenta gratuita para usar listas de deseos.

Registrarse