RC522 RFID con Arduino UNO Lectura y Escritura

En primer lugar, el módulo Lector RC522 RFID RF utiliza 3.3V como voltaje de alimentación y se controla a través del protocolo SPI o UART. Además, es compatible con casi cualquier micro controlador, Arduino o tarjeta de desarrollo. El RC522 utiliza también un sistema avanzado de modulación y de-modulación para todo tipo de dispositivos pasivos de 13.56Mhz. Como se hará una lectura y escritura de la tarjeta, en consecuencia es necesario conocer las características de los bloques de memoria una tarjeta. La tarjeta que viene con el módulo RFID cuenta con 64 bloques de memoria (0-63) donde se hace lectura y/o escritura. Cada bloque de memoria por lo tanto, tiene la capacidad de almacenar hasta 16 Bytes. El número de serie consiste de 5 valores hexadecimales,  por lo que, se podría utilizar esto para hacer una operación dependiendo del número de serie.

rfid Arduino

MATERIALES

Módulo Lector RFID-RC522 RF y tarjeta.
1 Arduino Uno.
Cables jumper macho a macho.
Protoboard.

Características del Módulo Lector RC522 RFID

• Modelo: MF522-ED
• Corriente de operación: 13-26mA a 3.3V
• I de stand by: 10-13mA a 3.3V
• Corriente de sleep-mode: <80uA
• Corriente máxima: 30mA
• Frecuencia de operación: 13.56Mhz
• Distancia de lectura: 0 a 60mm
• Protocolo de comunicación: SPI
• Velocidad de datos máxima: 10Mbit/s
• Dimensiones: 40 x 60 mm
• Temperatura de operación: -20 a 80ºC
• Humedad de operación: 5%-95%
• Máxima velocidad de SPI: 10Mbit/s
• Incluye pines, llavero y tarjeta.
rc522 rfid

 
En primer lugar, se hará uso del Arduino UNO y el módulo Lector RC522 RFID para escribir sobre la tarjeta o llavero. Más adelante,y ejecutaremos un programa el cual leerá la información escrita. Ten en cuenta que tu puedes aplicar este sistema para administración de permisos o control de personal. La implementación en RFID es especialmente relevante en estas aplicaciones.

Conexión módulo lector RC522 RFID con Arduino UNO

Conexiones

rfid rc522

Biblioteca

Link de descargar de librerías :
https://github.com/miguelbalboa/rfid

Como instalar bibliotecas: https://www.arduino.cc/en/Guide/Libraries

 

Código para escribir en la tarjeta/llavero

Al abrir el monitor serial lo primero que aparecerá será el mensaje de “Ingrese Tarjeta para Escribir Dato Personal”
Una vez colocada la tarjeta aparecerá su núm. De serie único y su PICC type, ademas del mensaje «Escriba Dato, al final incluya #»
Entonces tendrá 20s para agregar el dato a escribir
Si se escribió correctamente aparecerá el mensaje
MIFARE_Write() Escritura Realizada Corectamente:
MIFARE_Write() Escritura Realizada Corectamente:

 

MONITOR CERIAL ESCRITURA 522

Una vez realizado esto el dato quedara escrito en la tarjeta/llavero.
Para poder hacer lectura de este dato usaremos el siguiente programa

En primer lugar, al ejecutar el programa aparecerá el mensaje “Ingrese Tarjeta”. Finalmente, una vez colocada la tarjeta aparecerá los “Datos actuales en el sector”. Por lo tanto, esto te permitirá ver que bloques están disponibles para escribir en ellos, además de ver si hay algo ya escrito en otro bloque
Nota: Ten en cuenta que no se puede sobrescribir en el bloque en el cual ya escribiste, así que si quiere cambiar lo escrito por algún error o por algún otro motivo puedes hacer.
Finalmente, en el primer bloque no se puede escribir, en nuestro caso el bloque 7.
Lectura de rc522

 

 

47 comentarios en «RC522 RFID con Arduino UNO Lectura y Escritura»

      1. tengo un error también y ya tengo instaladas las librerías necesarias, el error esta en esta parte MFRC522 mfrc522(SS_PIN, RST_PIN); // Crear instancia MFRC522

  1. buenas tardes perdon la molestia, tengo un problema… el codigo compila y anda perfecto en la PC de un amigo, PERO en mi computadora teniendo las mismas librerias el mismo windows el codigo compila pero cuando lo ejecuto no me lee nunca la tarjeta ni la escribe porque no la reconoce, quisiera saber si alguien ha tenido este problema, agradeceria alguna opinion porque me ha quitado varias horas de sueño… los otros programas arduino andan bien, estamos haciendo con arduino mega

  2. hola buenas.
    como puedo escribir un dato variable en la tarjeta, como un contador, que cada vez que pase la tarjeta por el lector a esta se le valla sumando o descontando a la variable, algo asi como funcionan las tajetas de transporte

    1. Hola, puedes realizar un conteo de que cuando te detecte que hubo uno mas («que paso la tarjet por el lector) acumule esa variable y te la pueda guardar en otra y te la muestre o segun sea tu necesidad

      1. Me podrías ayudar con las líneas del código para escribir la variable en la tarjeta… Como guardarla en el bloque y poder descontarle cada vez que pase por el lector por favor
        Te agradecería mucho

          1. mi complicación es como guardar la variable en un bloque de la tarjeta para que cada vez que haya una lectura de ella descontar «1», creo que es mas silmple que lo que está en el codigo, pero me cuesta un poco descifrar como guardar en el bloque

          2. Una opcion es realizar un contador ya sea con decremento y esto lo puedes colocar dentro de un ciclo o un condicional

          3. Si se hacer contadores… Mi pregunta es otra.. como guardarla en la memoria de la tarjeta.
            Si no sabes es mejor que me lo digas y me dejó de perder el tiempo.

          4. Te pedimos respeto, gracias, si requieres guardar los datos en la memoria del Arduino no contamos con el tutorial y sobre la misma tarjeta no se puede, una opcion puede ser guardar los datos en una sd

  3. Quiero leer el dato en el bloque y compararlo. Por ejemplo. Escribo en una tarjeta dato en el bloque:1

    entonces cuando lea la tarjeta y que el bloque sea igual a 1, quiero encender un led. y si es igual a 2 encender otro led.

    Muchas gracias

    1. Quiero leer el dato en el bloque y compararlo. Por ejemplo. Escribo en una tarjeta dato en el bloque:1
      entonces cuando lea la tarjeta y que el bloque sea igual a 1, quiero encender un led. y si es igual a 2 encender otro led.
      Muchas gracias

  4. Hola amigo

    Una pregunta, hay alguna manera de cambiar el codigo hexadecimal y que lea un valor de un codigo de barras? y donde puedo poner el contador para que me cuente cuantas veces lee el mismo tag y me imprima ese valor

  5. La tarjeta lectora admite la posibilidad de leer multiples tags al mismo tiempo, para registrarlos.
    Aplicación posible… realizar un inventario…

    1. Por cierto.. mi comentario es pregunta..

      ¿La tarjeta lectora admite la posibilidad de leer multiples tags al mismo tiempo, para registrarlos?
      Aplicación posible… realizar un inventario…

    1. La distancia de este tipo de lector es de aproximadamente 6cm. Debería ser compatible con todos los tags nfc que trabajen a la misma frecuencia que el lector

  6. tengo muchas dudas, soy novato, me gustaria saber, como puedo escribir un archibo especifico, por ejemplo tengo tarjetas de 1mb, y quiero escribir archivos de 500 a 600b, que vienen comprimido en rchivos .bin, me gustaria si pudiera aclarar mi duda o poner algun ejemplo, ya que solo he logrado la lectura pero aun no comprendo el proseso de escritura

  7. Hola quisiera saber si sirve el Arduino Mega ya que empiezo a trabajar con todo esto y tenia gana de presentar como proyecto final ya que estoy en 6to de una escuela técnica, en el control de entrada y salida de alumnos u/o personal. Desde ya gracias, saludos.

  8. Buenas noches
    muchas gracias, el código me compiló correctamente, pero debo cerrar el monitor serie para realizar una nueva lectura.
    ¿Hay posibilidad de que lee constantemente cada que acerco una tarjeta? Cual sería la modificación en el código que debo hacer?. Gracias por tu ayuda

  9. Disulpa como podría hacerle para que con un solo arduino pueda leer varios lectores RFID, no necesariamente al mismo tiempo, sino para una casa que con un solo arduino puedas abrir el porton, la puerta de la entrada, la puerta de atras y las habitaciones, cada puerta con su lector RFID

    1. Hola, lo mas sencillo seria crear una red inalambrica, donde cada lector tenga su propio arduino y un modulo de radiofrecuencia digital, como el NRF24L01+. Otra opción seria colocar cables de red para crear una red cableada, pero para esto necesitarías algún amplificador para que las señales no se pierdan o atenuen.

  10. hola, donde es que tengo que escribir? este dato solo se escribe en un bloque??? y los otros bloques como los manejo? como le coloco clave ? Favor su ayuda, muchas gracias

    «Una vez colocada la tarjeta aparecerá su núm. De serie único y su PICC type, ademas del mensaje “Escriba Dato, al final incluya #”
    Entonces tendrá 20s para agregar el dato a escribir
    Si se escribió correctamente aparecerá el mensaje
    MIFARE_Write() Escritura Realizada Corectamente:»

  11. Hola, no entiendo el tema de escribir, como se en que bloque escribir’?, si al tenerlo ya escrito no se puede sobreescribir o estoy mal?, si se puede escribir donde uno quiera?, el valor a gregar le pongo decimal o hexa?

  12. Tengo mi arduino UNO y mi tarjeta RFID-RC522 ya le cargue como mil programas, validé las conexiones, descargue diferentes librerías y sigue sin detector mi tarjeta incluso intenté con módulos RFID diferentes y dos tarjetas arduino diferentes y NADA! Cual puede ser mi problema??

    1. Hola que tal, en la libreria «MFRC522.h» se encuentra un ejemplo llamado » firmware_check» este te sirve para saber si tu lector esta en buenas condiciones, en caso de que falle te indicara que verifiques las conexiones. Si el lector esta bien entonces el problema seria el TAG, puedes cargar el programa de «ReadAnWrite», para que te arroje los datos de la tarjeta. Si lo compraste por separado probablemente no es de la misma frecuencia de ser así que te recomiendo adquirir otra tarjeta asegurando la frecuencia de 13.56MHz que es a la que trabajan estos módulos.
      Espero haberte ayudado y nos comentes los resultados. Saludos

  13. hola que tal Exelente codigo mi unica pregunta es como le hago para almacenar de nuevo en una variable de tipo String el dato del bloque para utilizarlo en una base de datos??

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *