Módulo RFID-RC522 RF con Arduino UNO SPI

El módulo lector RFID-RC522 RF utiliza 3.3V como voltaje de alimentación y se controla a través del protocolo SPI. También puede ser controlada con un puerto UART. Entonces, podemos decir que es compatible con casi cualquier micro controlador, Arduino o tarjeta de desarrollo. El RC522 utiliza un sistema avanzado de modulación y demodulación para todo tipo de dispositivos pasivos de 13.56Mhz. Incluso, puesto que se hará una lectura y escritura de la tarjeta, 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 tiene la capacidad de almacenar sobre todo hasta 16 Bytes. Finalmente el número de serie consiste de 5  valores hexadecimales, se podría utilizar esto para hacer una operación dependiendo del  número de serie.

Características del Módulo Lector RFID-RC522 RF

  • Modelo: MF522-ED.
  • Corriente de operación: 13-26mA a 3.3V.
  • Isb de stand by: 10-13mA a 3.3V.
  • Ism de sleep-mode: <80uA.
  • Im 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.

DESCRIPCIÓN Módulo Lector RFID-RC522 RF

En este tutorial haremos uso del Arduino UNO y el Módulo Lector RFID-RC522 RF para dar uso de algunas funciones de la librería RFID. Las operaciones que  finalmente haremos en este tutorial, serán:

  • Lectura de bloque de memoria de un tarjeta (rfid.read)
  • Escritura en un bloque de memoria (rfid.write)
  • Lectura de número de serie de  tarjeta   (rfid.numSerie)

MATERIALES

RFID RC522 Arduino UNO
RFID RC522 Arduino UNO

CONEXIÓN Módulo Lector RFID-RC522 RF

A continuación se muestra una tabla con los pines del Módulo Lector RFID-RC522 RF, así como la conexión que tendrá con el Arduino UNO . Ten en cuenta que en la imagen de arriba se muestra la parte trasera del RFID RC552, en la parte inferior de esta imagen esta muestra los nombres correspondientes de los pines.

rfid pin arduino
RFID conexión RC522 con Arduino UNO
RFID TAG PN522
RFID RC522

Descargas

Programa C Arduino UNO Lectura de Bloques Tags

Detalles del programa

Incluir la librería SPI, la cual se encarga del protocolo SPI. También se incluye la librería RFID que contiene todas las funciones relacionado con el RFID.

Primero se inicializará el puerto Serial a 9600 Baudios, después se inicializa RFID y finalmente SPI,

Comando de la librería RFID para poner tarjeta en hibernación

Declaración de cadena de caracteres la cual se define con  llaves, se debe de poner cada carácter entre apostrofes seguido de una coma si es necesario.

Se declara un carácter de tipo puntero y toma el valor de char het.

Declaracion un carácter tipo puntero que será utilizado para la función de lectura de un bloque

Programa C Arduino UNO Lectura de numero de Serie

RFID Serial Numero Módulo Lector RFID-RC522 RF

RFID Terminal Arduino, Numero de Serie.

RFID tarjeta tag
RFID Lectura tarjeta Tag

"<yoastmark

Actualización para Arduino Leonardo:

Ten en cuenta que para el Arduino leonardo la conexión es como se muestra a continuación.

Módulo Lector RFID-RC522 RF
Esquematico Leonardo RFID SPI

151 comentarios en «Módulo RFID-RC522 RF con Arduino UNO SPI»

    1. Buenos dias

      deseo hacer un proyecto con etiquetas RFID para identificación de herramental si deseo utilizar este modulo que tipo de etiquetas deberia comprar?

      1. Podrías decirme como se instalan las librerías?
        creo que lo estoy haciendo mal…
        bajo el zip, y lo extraigo en la carpeta libraries que está dentro de Arduino en Archivos de programa :/

  1. Buenas, de ante mano agradecerte por el gran aporte que das en el desarrollo de esta tecnología. Me gustaría saber, si este modulo RC522 permite, ademas de leer, que se le escriba alguna información o como mínimo cambiar la serie ID para su verificación.
    Gracias y si me puedes colaborar te lo agradecería.

      1. Y se necesita algún código base por decirlo de alguna manera, para acceder a la información del tag y ser cambiada, ya que he intentado de varias maneras y no he podido saber como realizar esto. Algún consejo o ayuda que me pueda servir para hacer esto… Muchas gracias de ante mana….

      1. Gracias! ya lo descargué, pero he tenido problemas al probarlo :/
        Hago las conexiones pero el programa no hace nada, pero el rc522 funciona normal porque enciende el led rojo. Leí y dicen que puede ser problemas de que los pines no estén soldados. Cual puede ser el problema? ¿Varia en la conexion de pines?

  2. Buenas tardes, tengo que utilizar el mismo lector rfid pero con arduino mega 2560, me podrías decir en qué pines del arduino va conectado, y si debo cambiar algun parámetro en mi librería o programa. Gracias

  3. Buenas!, te hago una consulta.
    Armo el código, me da ok, pero no el monitor serie no pasa nada, no me marca nada. Descargue las librerias, las mande pero nada.
    Muchas gracias!!

    1. Hola que tal, a que velocidad tienes configurada la terminal serial de arduino??, debe de coincidir el Serial.begin() conn esa velocidad, saludos.

  4. Hola, me parece muy bueno el tutorial, queda claro como se hace la lectura del código que tiene la tarjeta… Pero tienes tambien un tutorial para ambiar el código de ésta??.. O las librerias necesarias para ejecutar esto??… Gracias por tu atención

  5. Esta placa me esta dando dolor de cabeza, llevo 3 días intentando leer algo y no he podido, la placa es la misma de la imagen, lo he intentado con 3 computadoras diferentes, con el arduino leonado y el mega 2560 ( con sus correspondientes ICSP), con 4 codigos diferentes, y no consigo leer nada!, solo prende el led rojo.

    agrego que tengo dos placas RC522 y ninguna de las 2 lee nada.
    las computadoras tienen win8 y win8.1 (no se si afecte).

    no creo que las dos se hayan quemado, pero hay alguna forma de saberlo, a lo mejor cortocircuite algo y no se, se daño. pero ambas?, como se puede dañar una placa RC522, ademas de un alto voltage?

    porfavor ayuda.

  6. Hola, quisiera saber si con este lector y alguna antena se puede ampliar la distancia de lectura, ya que quisiera realizar un sistema para tomar los tiempos en una maratón.
    O si hay alguna web donde haya algún proyecto/documentación con arduino para poder realizar esto.
    Desde ya, muchas gracias.

  7. Buenas,

    Antes de nada agradecerte el tiempo que has echado preparando este tutorial.

    A mi me ha funcionado correctamente, tanto el script de leer el número de serie, como el otro. Pero sólo me funciona algunas veces, de ahí que te escriba este mensaje. ¿Sabes a qué es debido? Yo estoy utilizando un clon de Arduino UNO y un RFID RC522 como el de la imagen tuyo.

    Si se te ocurre de qué puede ser, avísame vale.

    Un saludo!

  8. hola, y ya tengo el material y me manda un error pero no se que significa me podrias ayudar? el error es este:
    RFID_Display_Keypad.ino:2:9: error: #include expects «FILENAME» or
    RFID_Display_Keypad.ino:3:10: error: #include expects «FILENAME» or
    RFID_Display_Keypad.ino:5:1: error: ‘RFID’ does not name a type
    RFID_Display_Keypad.ino: In function ‘void setup()’:
    RFID_Display_Keypad.ino:10:3: error: ‘SPI’ was not declared in this scope
    RFID_Display_Keypad.ino:10:19: error: ‘rfid’ was not declared in this scope
    RFID_Display_Keypad.ino: In function ‘void loop()’:
    RFID_Display_Keypad.ino:19:9: error: ‘rfid’ was not declared in this scope
    RFID_Display_Keypad.ino:25:5: error: ‘rfid’ was not declared in this scope

  9. No quieres que se reproduzca el tutorial ?? no entiendo por que entonces usas software libre usa otro micro otros sistemas que desarrolles tu, es parte de la politica open surce compartir todo lo que se hace con estos dispositivos

    1. Erwin, copio y pego lo que menciona el final del texto: «Si la redistribución de este material es para fines educativos, difusión tecnológica o cualquier otro fin sin lucro, HeTPro está de acuerdo en que el material sea distribuido sin la necesidad de requerir el permiso del autor.»
      Toda la información que ves es totalmente libre de ser compartida por nosotros, es un pequeño esfuerzo y contribucion nuestra para todos ustedes.
      Sin embargo, los nuevos tutoriales ya no tienen esa leyenda, debido a que ya no consideramos necesario ponerla debido a que no somos partidarios de limitar el conocimient, seguramente mas adelante las quitaremos ya que pasemos por correcciones en este tutorial.

  10. Hola administrador, estoy intentando correr su codigo en mi arduino, la cuestion esta es q tengo problema con la libreria que ustedes estan facilitando. Sera que me pueden pasar de nuevo la libreria, ya que este ha sido el mejor post que he visto. gracias este es mi correo mclarenzor_09@hotmail.com

  11. disculpa antes que nada una felicitación.

    una pregunta.

    como puedo escribirle a la tarjeta podrías ayudarme con un tutorial o alguna información.

  12. Descargo la libreria de esta pagina que puso el admin (https://github.com/pkourany/RC522_RFID) y no logro instalarla adecuadamente ya lo intente de todas formas. A alguien le pasa algo similar o le paso y ya pudo resolver el problema?

    In file included from sketch_apr02a.ino:2:
    C:\Users\Luis\Documents\Arduino\libraries\RC522_RFID/RFID.h:9:25: error: application.h: No such file or directory

  13. porfa yo tambien tengo ese problema, ya importe la libreria pero no la reconoce. porfa necesito que funcione, dime como innstalar la libreria. gracias

  14. Que puede ser? he instalado las librerías y funcionan, osea se compila, el problema es cuando lee el tag ( activo o pasivo ) muestra el siguiente caracterer » ў » con espacios por cada lectura ..
    Agradecería de los comentarios.

  15. Hola, una duda primero se carga la info de los tags a la arduino?? la vdd tengo que hacer esto y no se por donde empezar… se me esta volviendo algo complicado, me gustaría un paso por paso 🙁 muchas gracias

    1. Hola, depende que quieras hacer, los tags ya tienen grabado un numero de serie y este tutorial lo que hace es solo leerlo. Ahora, si lo que quieres es grabar información al tag debes utilizar la función rfid.write() //Función escritura (num de bloque, string). Te enviare un correo con la librería.

  16. hola comunidad. quiero que alguien me ayude a configurar el sensor xd-yk04 que es un trasnmisor rf para prender y apagar una luz…
    gracias

  17. Entiendo que esta conexión y el programa son para usar el bus SPI, hay alguna librería para usar el bus I2C y el UART?, tengo un Arduino Uno con una placa ethernet shield y la configuracion SPI del sensor RFID tambien usa el pin10.

      1. hola como estas ya instale la librería tal como indica el tutorial, pero la librería dice #include mas no #include como esta en las imágenes me sale un error en esta parte RFID rfid(10,5); no se que mas hacer por favor rogaría tu ayuda

  18. Hola Hector,
    me llamo Óscar y soy nuevo con el arduino, antes que nada quiero felicitarte por el foro y darte las gracias por tu labor divulgativa sobre arduino. He montado la placa arduino uno con la placa RFID-RC522 y he conseguido cargar bien la librería, pero a la hora de compilar el programa, me sale este mensaje, me podrías decir que estoy haciendo mal…mil gracias…un cordial saludo.

    mensaje:
    In file included from C:\Users\Oscar\Documents\Arduino\libraries\rfid_buzzer/RFID.h:9:0,
    from RFID_RC522.ino:2:
    C:\Users\Oscar\Documents\Arduino\libraries\rfid_buzzer/SPI.h:16:22: fatal error: WProgram.h: No such file or directory
    #include
    ^
    compilation terminated.
    Error de compilación

    1. Oscar, parece ser que tienes problema con la biblioteca SPI.h no estoy 100% seguro pero recuerda que las librerias van en la carleta de Arduino/Libraries// revisa que tengas este formato, quizás puede ser eso.

  19. Primero que nada me gustaría agradecer por el tutorial ya que ha sido muy claro, posteriormente me gustaría comentarte que he logrado leer el número de serie de mi llavero y de mi tarjeta RFID pero lo que no logro hacer es escribir con la instruccion rfid.write, ya que lo que ponga no lo lee correctamente si no que me devuelve una cadena basura de tipo «8V(» y se repite cada vez que lo intento leer, ya he probado cambiando el rango de batios en el puerto pero aún sigo sin conseguirlo, espero me puedas ayudar, saludos.

  20. Hola a todos. Estoy estudiando llevar a cabo un proyecto y tengo una duda.
    ?Es posible controlar varios modulos rfid rc552 con un mismo Arduino 1?

    Un saludo,
    Santiago

  21. Hola. Primero que nada agradezco el aporte. Ahora, el IDE compila el codigo perfectamente pero cuando le doy a subir, lo sube pero no me lee ninguna tarjeta. Tengo dos modulos y ninguno funciona, el led rojo si esta encendido pero no se reconoce ninguna tarjeta ni llavero. Que puede ser? Muchas gracias.

    P.D: Tengo Windows 10, no se si eso afectara en algo

  22. hola que tal alguien podria proporsionarme las librerias, probe los links que compartieron pero creo que ya los quitaron por que no cargan les agradeceria si pudieran ayudarme

  23. gracias hector ya las descargue pero me marca erroren el codigo a la hora de instalarlo a que cres que se deba??? si puedieras ayudarme u orientarme

  24. este es el error que me sale en verdad les agradecería si pudieran ayudarme 🙁

    sketch_feb03a:3: error: ‘RFID’ does not name a type

    RFID rfid(10,5);

    ^

    C:\Users\goyo_\AppData\Local\Temp\arduino_801acd0674df79bd81bd0660936a6286\sketch_feb03a.ino: In function ‘void setup()’:

    sketch_feb03a:8: error: ‘rfid’ was not declared in this scope

    rfid.init(); //Función que inicializa RFID

    ^

    C:\Users\goyo_\AppData\Local\Temp\arduino_801acd0674df79bd81bd0660936a6286\sketch_feb03a.ino: In function ‘void loop()’:

    sketch_feb03a:13: error: ‘rfid’ was not declared in this scope

    if (rfid.isCard()) { //Verifica si hay una tarjeta

    ^

    sketch_feb03a:32: error: ‘rfid’ was not declared in this scope

    rfid.halt();

    ^

    exit status 1
    ‘RFID’ does not name a type

    1. Darling, si puedes, asi como esta ya manda los datos del Arduino a la PC mediante el puerto USB/Serial ya nomas programa la interfaz para leer esos mismos datos con C# con el COM correspondiente.

  25. C:\Users\goyo_\Desktop\sketch_feb04a\sketch_feb04a.ino: In function ‘void loop()’:

    ahora me sale esta no se por que, pero se supone que la libreria la pegue en
    C: archivos de programax86\Arduino\libreries\RC522_RFID-master

    y la libreria es la queme pasaste

  26. Hola,

    estoy probando el código y me funciona la lectura del número de serie, pero la escritura y lectura de bloques de memoria de los TAGS no me funciona, de hecho en cuanto pongo las funciones de escritura o lectura me da error al compilar.

    En el código veo que se incluye la libreria RC522 pero luego se usa la librería RFID…Puede ser la librería? o se os ocurre algo?

    Gracias de antemano.

    Un saludo

  27. Hola HECTOR, estoy teniendo problemas para la lectura del código. Si puedieras echarme una mano te lo agradeceria.
    Los errores que me aparecen son los siguientes:

    sketch_feb29a:4: error: ‘RFID’ does not name a type
    sketch_feb29a.ino: In function ‘void setup()’:
    sketch_feb29a:8: error: ‘rfid’ was not declared in this scope
    sketch_feb29a.ino: In function ‘void loop()’:
    sketch_feb29a:17: error: ‘rfid’ was not declared in this scope
    sketch_feb29a:22: error: ‘rfid’ was not declared in this scope
    ‘RFID’ does not name a type

    1. Carles, ese error suele pasar por que no tienen la biblioteca RFID instalada donde se debe. Vamos a ver, ¿te aparecen los ejemplos de la biblioteca RFID en el IDE de Arduino cuando pones los ejemplos?

      1. Hola Hector, a mi parecer tengo la libreria instalada, ya que la encuentro en el Disco Local C, pero dentro de esta no hay ninguna carpeta de ejemplo…
        Si pudieras echarme una mano te estaria agradecido,

        Gracias y buen dia

          1. Gracias, ya conseguí que me leyera el código.

            Sabrias de algun tuturial para proyectarlo en una maqueta de una casa? Me refiero a hacer como un control de acceso.

            Gracias y un saludo!

          2. Por aqui tenemos uno de un teclado matricial y una LCD de ahí te puedes basar para realizar algún control por contraseña, o con el lector de huella digital.

  28. Hola que buen tutorial, pero no me ha funcionado, me reconoce el módulo RFID pero no me lee la tarjeta, dicen que es por los pines mal soldados pero no se como verificar si estan bien, como hago para saber si estan bien soldados? Gracias porfa ayudenme!!

  29. Hola buenas noches
    Manejas o conoces de algún moodulo lector de RFID muiltiple es decir que lea varios tags al mismo tiempo?

  30. Hola buenas, necesito cierta ayuda

    He copiado el programa y solucionado los errores de la libreria que no me la leia.. Pero al cambiar el tag que es lo que quiero, cambiar el serial o al menos meterle un valor a la tarjeta, no me deja, es decir abro el monitor y no sale nada simplemente salen simbolos.. Y esta correctamente asignado a 9600 baudios

  31. Hola que tal gracias por el gran tutorial aprendí mucho sobre la tecnológica RFID gracias a esta pagina, pero tengo una duda por mas que e buscado aun no consigo escribir en la tarjeta, me pregunto si sabran de alguna pagina con algun ejemplo o alguin a podido hacerlo funcionar

    saludos

  32. Hola, gracias por el tutorial pero no logro hacer que compile. La carpeta RC522_RFID-master se encuentra tanto en C:\Program Files (x86)\Arduino\libraries como en C:\Users\Eric\Documents\Arduino\libraries y recibo el siguiente error al compilar:

    Arduino: 1.6.8 (Windows 10), Board: «Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)»

    C:\Users\Eric\Desktop\Prueba_RFID\Prueba_RFID.ino:3:21: fatal error: MFRC522.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Mega or Mega 2560.

    Lo que no entiendo es por que su codigo incluye MFRC522.h si la bilbioteca se llama RFID.h (descargada de https://github.com/pkourany/RC522_RFID).

    Saludos

  33. Hola! Gracias por el tutorial, sin embargo no he logrado hacer que compile. La carpeta RC522_RFID-master se encuentra tanto en C:\Users\Eric\Documents\Arduino\libraries como en C:\Program Files (x86)\Arduino\libraries, pero me sigue mandando estos errores al compilar:

    Arduino: 1.6.8 (Windows 10), Board: «Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)»

    C:\Users\Eric\Desktop\Prueba_RFID\Prueba_RFID.ino:3:21: fatal error: MFRC522.h: No such file or directory

    #include
    ^
    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Mega or Mega 2560.

    Lo que me parece raro es que llamen a MFRC522.h cuando la biblioteca de https://github.com/pkourany/RC522_RFID es RFID.h.

    Saludos

    1. Eric, cierto, no estoy seguro que paso… igual puedes probar con cambiando el nombre a tu codigo para incluir solo «RFID.h» y ver que pasa?

  34. disculpa ya intale la libreria pero me sigue saliendo el error
    Arduino:1.6.4 (Windows 7), Placa:»Arduino Uno»

    In file included from naaa.ino:2:0:
    C:\Users\Lenovo\Documents\Arduino\libraries\RC522_RFID-master/RFID.h:9:25: fatal error: application.h: No such file or directory
    #include «application.h»
    la verdad a intente de todo per aun asi no me permite usarla no se si me podias ayudar a corregir este error

    1. perdon dentro la libreria llamas a la libreria application.h pero esa libreria no esta en el archivo zip para descarga, donde puedo conseguir esa libreria o es un error de en la libreria rfid.h

          1. Puedes verificar la variable que estas utilizando para mostrar talvez ya no sea la misma que usas o posiblemente la libreria utiliza distintos comandos puedes verlos en el codigo de ejemplo que esta como comentarios

  35. Hola ,llevo algún tiempo trabajando con este modulo pero tengo un problema que no he podido resolver con algunas tarjetas y tags tipo llavero que no lee ,se que existen distintos estándares rfid pero el mas común es el de 13 Mhz aprox ,por lo que asumo que estos son los que se consiguen en las tiendas de electrónica (por que si uno pregunta no tienen la menor idea )alguien mas a tenido este inconveniente?
    puede ser algo en el software?

    1. Hola william, que tarjeta estas utilizando?, si es el mas comun de 13Mhz, puedes verificar con el codigo que utlizamos en estos tutoriales, saludos

      1. Hola saul gracias por contestar ,pero investigando encontré que los tacs tipo llavero que traen números impresos son de 125 khz por lo cual no los va a leer nunca ,ese era el problema ,publico esto esperando le sirva de ayuda a alguien

        Gracias.

      1. Hola, yo me refiero la distancia del receptor rfid al arduino, hay una distancia máxima. Puedo poner el receptor a 15 metros del arduino unido por un cable multihilo? o me dara problemas.

  36. Hola! Que tal tendrás un diagrama de conexión para Arduino Uno, Arduino Ethernet Shield & RFID RC522 RF
    Seguí este blog y pude completar mi codigo solo que necesito tener un servidor web y para ello necesito el ethernet Shield, pero al conectarlo mi lector deja de funcionar!
    ¡Ayuda me urge!

  37. Hola. No es «librería», es «biblioteca». Solemos hacer la traducción literal, pero no está bien. En español «Librería» es el lugar donde se venden libros; «Biblioteca» es el lugar a donde uno va a consultarlos. Al principio es un poco difícil acostumbrarse a decir «biblioteca», pero no imposible. Me pasaba lo mismo, e incluso en mis blogs escribía «librería», hasta que me hicieron ver mi error. Ahora corrijo a todos, incluyendo a mis alumnos.

  38. Quiero hacer un proyecto con el modulo RFID-RC522 pero mi duda es, me sirven los tags de 125Khz? Vi unos en internet que vienen en una pulsera de silicon y van perfectas con mi proyecto.

  39. Hola primero que nada felicitaciones por su proyecto, está muy bien explicado, tengo un problema estoy utilizando arduino LEONARDO y al compilar el programa me dice que hubo el sig. error «Error compilado para la tarjeta Arduino Leonardo».

  40. Que tal! Tengo el mismo código que utilizan para lectura del numero de serie pero al comprobar me aparece un error: » ‘RFID’ does not name a type». Ya instale las librerias y no cambie nada del codigo. Alguien que me pueda ayudar?

    Aquí el error;
    {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
    Arduino: 1.6.9 (Windows 10), Board: «Arduino/Genuino Uno»

    Programar_RFID:3: error: ‘RFID’ does not name a type

    RFID rfid(10,5);

    ^

    C:\Users\…\Programar_RFID\Programar_RFID.ino: In function ‘void setup()’:

    Programar_RFID:8: error: ‘rfid’ was not declared in this scope

    rfid.init(); //Función que inicializa RFID

    ^

    C:\Users\…\Programar_RFID\Programar_RFID.ino: In function ‘void loop()’:

    Programar_RFID:11: error: ‘rfid’ was not declared in this scope

    if (rfid.isCard()) { //Verifica si hay una tarjeta

    ^

    Programar_RFID:29: error: ‘rfid’ was not declared in this scope

    rfid.halt();

    ^

    exit status 1
    ‘RFID’ does not name a type

    This report would have more information with
    «Show verbose output during compilation»
    option enabled in File -> Preferences.
    }}}}}}}}}}}}}}}}}}}}}}}

  41. Excelente pagina!

    Mi pregunta, en que parte del código introduzco la instrucción de que al pasar la tarjeta, habilite una puerta, pensándolo como un sistema de seguridad.

    mil gracias.

  42. Hola

    En primer lugar quiero daros las gracias por vuestro articulo, ya que nos ha sido de mucha ayuda.

    Mi pregunta es la siguiente: Nosotros queremos que nos detecte a unos 40cm ¿habría alguna forma de aumentar la distancia de detección?

    1. Berni, hola que tal muchas gracias. No, para este dispositivo tiene un máximo de unos 5 a 6 cms. Si buscas mas distancia busca tags activos.

  43. Hola tengo un problema para hacer un proyecto, sí por ejemplo tengo; vamos a ponerlo de este modo RFID No1.Con su tarjeta y llavero funciona, pero que pasa si yo quiero usar la tarjeta del RFID No2 con el RFID No1 ¿funcionaria o tengo que hacer una modificación?

  44. hola yo tengo un problema utilizando un codigo para leer el codigo de indentificación de lectura para el llavero me funciona pero para la terjeta no funciona puedes ser que la terjeta no funcione o este arruinada (aviso que el modulo la tarjeta y el llavero son nuevos)

  45. Tengo una duda mi codigo fuinciona , explico lo que hace :
    se conecta a una base de datos y checa en una tabla quienes tienen acceso y quienes no dependiendo de un a prueba de esd que se hacen previamente , el control lo tengo con un arduino conectado via ethernet y el codigo jala , si tienes pasada la prueba te da acceso y si no tienes pues no , el detalle es que despues de algunas horas el lector deja de leer , es el lector porque el programa en el serial sigue normal pero al momento de escanear no hace nada , igual tengo un buzzer conectado que deveria de sonar y al principio si lo hace y de igual manera cuando esta inhibido si le das un reset fvuelve a funcionar normal por unas horas alguien me podria ayudar con esto ?

    1. Hola, te recomendaria que usaras el WDT – Watch Dog Timer, a lo mejor el programa de arduino se queda esperando alguna instruccion por parte del lector y se traba. Entonces en esa parte del programa habilitas el WDT, Y lo deshabilitas despues de que pases esa seccion critica, suele ser un if, un for o un while. Entonces si todo va bien, no pasa nada, pero si se queda trabajo y no desactiva el WDT, este provocara un soft-reset en el arduino, iniciando nuevamente tu programa. Saludos

      1. suena muy bien esa opcion de echo ya hay una parte donde utlizo el WDT si es que se llega a caer la coneccion de el arduino , el detalle es que no se exactamente donde pueda estar esa instruccion del lector o donde es donde muere mi lector , voy a aanexar mi codigo para cer si me puedes ayudar la verdad me seria de mucha ayuda
        codigo :
        #include
        #include //For the selection of the key
        #include //The RFID key library
        #include
        String uidHex = » «;
        char numhex[9];
        unsigned long int decimal_answer;
        char server[] = «10.34.70.79»; //Ip server
        //char server[] = «192.168.1.73»; //IP TINY

        String streamId = «/IOT/apiTurnstile.php?B=»;
        int rele = 5;
        int buzzer = 6;
        unsigned int tinicialReset;
        unsigned int tfinalReset;
        int minutos;
        int enableReset = 0;
        EthernetClient client; //ETHERNET INSTANCE
        #define SS_PIN A2 // for RFID
        #define RST_PIN A1 // RFID
        MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

        void setup()
        {

        MCUSR = 0;
        Serial.begin(9600); //Iniciamos la comunicación serial
        Serial.println(«encendiendo»);
        pinMode(buzzer, OUTPUT);
        //Serial.println(«1»);
        digitalWrite(buzzer,LOW);
        //Serial.println(«2»);
        pinMode(rele,OUTPUT);
        //Serial.println(«3»);
        digitalWrite(rele,HIGH);
        //Serial.println(«4»);
        SPI.begin(); //Iniciamos el Bus SPI;
        //Serial.println(«5»);
        mfrc522.PCD_Init(); // Iniciamos el MFRC522
        //Serial.println(«6»);
        connect();
        tinicialReset = millis();
        minutos = 0;

        }

        void connect(){
        byte mac[] = { 0xAA, 0xAD, 0xBE, 0xEF, 0xFE, 0xDE}; // max address for ethernet shield
        Serial.println(«conectando»);
        TrySetup:
        //Ethernet.begin(mac);
        if (Ethernet.begin(mac) != 1) {
        Serial.println(«Failed to configure Ethernet using DHCP»);
        goto TrySetup;
        }
        Serial.println(Ethernet.localIP());
        }

        void checkCon(){

        TryRenew:

        switch(Ethernet.maintain()) {
        case 0:
        Serial.println(«Check Connection: 0»);
        break;
        case 1:
        Serial.println(«Check Connection: 1»);
        connect();
        goto TryRenew;
        break;
        case 2:
        Serial.println(«Check Connection: 2»);
        break;
        case 3:
        Serial.println(«Check Connection: 3»);
        connect();
        goto TryRenew;
        break;
        case 4:
        Serial.println(«Check Connection: 4»);
        break;
        default:
        break;
        }
        }

        char SendUID(){
        unsigned int tinicial = millis();
        unsigned int tfinal;
        char input;
        digitalWrite(buzzer, HIGH);
        delay(50);
        digitalWrite(buzzer, LOW);
        delay(50);
        digitalWrite(buzzer, HIGH);
        delay(50);
        digitalWrite(buzzer, LOW);
        delay(50);
        digitalWrite(buzzer, HIGH);
        delay(50);
        digitalWrite(buzzer, LOW);
        Serial.println(«Badge detectado»);
        checkCon();
        tfinal = millis();
        Serial.println(«Enviando info»);
        if(client.connect(server, 80)){
        client.println(«GET » + streamId + uidHex + «&T=» + «2» + «&O=» + «1»);
        Serial.println(server + streamId + uidHex + «&T=» + «2» + «&O=» + «1»);
        delay(150);
        }else{
        //Serial.print(«Client connect: «);
        //Serial.println(client.connect(server, 80));
        if(client.connect(server, 80) == 1){
        Serial.println(«Client SUCCESS»);
        delay(150);
        }else if(client.connect(server, 80) == -1){
        Serial.println(«Client TIME OUT»);
        delay(150);
        }else if(client.connect(server, 80) == -2){
        Serial.println(«Client INVALID SERVER»);
        delay(150);
        }else if(client.connect(server, 80) == -3){
        Serial.println(«Client TRUNCATED»);
        delay(150);
        }else if(client.connect(server, 80) == -4){
        Serial.println(«Client INVALID RESPONSE»);
        delay(150);
        }
        /*SUCCESS 1
        TIMED_OUT -1
        INVALID_SERVER -2
        TRUNCATED -3
        INVALID_RESPONSE -4
        */
        Serial.println(«Info no enviada»);
        delay (100);
        wdt_enable(WDTO_15MS);
        for(;;){
        //do nothing
        }
        Serial.print(«fake»);
        }
        lup:
        tfinal = millis();
        if(tfinal – tinicial >3000){
        input = ‘0’;
        Serial.println(«Break»);
        return input;
        }else{
        if (client.available()) {
        input = client.read();
        delay(150);
        }else{
        Serial.print(«.»);
        //Serial.println(«client not available»);
        goto lup;
        }
        if (!client.connected()) { // if the server’s disconnected, stop the client:
        client.stop();
        return input;
        }else{ goto lup; }
        }
        }

        void torniquete() {
        if ((SendUID() == ‘1’)||(uidHex==»6374b087″)){
        digitalWrite(rele,LOW);
        Serial.println();
        Serial.println(«Pasa»);
        delay(100);
        digitalWrite(rele,HIGH);
        delay(2000);
        }else{
        digitalWrite(rele,HIGH);
        Serial.println();
        Serial.println(«No pasa»);
        delay(500);
        }
        }

        void loop() {

        tfinalReset = millis();

        if((tfinalReset-tinicialReset)>=10000){
        checkCon();
        tinicialReset = millis();
        }

        // Revisamos si hay nuevas tarjetas presentes
        if ( mfrc522.PICC_IsNewCardPresent())
        {
        //Seleccionamos una tarjeta
        if ( mfrc522.PICC_ReadCardSerial())
        {
        // Enviamos serialemente su UID

        for (byte i = 0; i < mfrc522.uid.size; i++) {
        uidHex = String(mfrc522.uid.uidByte[3] < 0x10 ? "0" : "") + String(mfrc522.uid.uidByte[3], HEX) + String(mfrc522.uid.uidByte[2] < 0x10 ? "0" : "") + String(mfrc522.uid.uidByte[2], HEX) +
        String(mfrc522.uid.uidByte[1] < 0x10 ? "0" : "") + String(mfrc522.uid.uidByte[1], HEX) + String(mfrc522.uid.uidByte[0] < 0x10 ? "0" : "") + String(mfrc522.uid.uidByte[0], HEX);
        }
        Serial.println();
        // Terminamos la lectura de la tarjeta actual
        uidHex.toCharArray(numhex, 9);
        decimal_answer = strtol(numhex, NULL, 16);
        // Terminamos la lectura de la tarjeta actual
        mfrc522.PICC_HaltA();
        torniquete();
        }
        }
        uidHex="";
        }

        1. Hola, esta complicado leer todo tu código, pero tienes varios if que le faltarían paréntesis para que sean mas claros, yo pondría varios en todos los ifs, saludos. Por ejemplo: antes de esta instruccion: if(client.connect(server, 80)){ por si el cliente no se conecta. o aqui: if (client.available()) {

  46. Buenos dias
    Yo en mi empleo quiero implementar un sistema de sensores que con la tarjeta pueda abrir las puertas este material me sirve para eso
    por favor agradezco su coloración y quiero saber que mas podria necesitar para llevar acabo este proyecto

  47. Buen dia, me gustaria saber si ese mismo codigo se puede hacer pero sin libreria MFRC522, requiero esto para un trabajo final pero veo que es complicado por que hay que sacar fragmentos de la libreria, resia de mucha ayuda que por ejemplo me guiaran como declarar el StatusCode en arduino ide, por favor es algo muy urgente.

Deja una respuesta

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