Novedades
Más comprados
- T7000 HNBC Pegamento Adhesivo T-7000 15ml NEGRO transparente Pantalla LCD Móvil 3,14€
- T7000 HNBC Pegamento Adhesivo T-7000 50ml NEGRO transparente Pantalla LCD Móvil 5,14€
- PANTALLA DE CRISTAL PARA GAME BOY 54,40€
- 3x caja plastico almacenaje joyas electrónica herramientas collar 16.5x12x6 16,00€
- 3x caja plastico almacenaje joyas electrónica herramientas collar 14.2x8.2x3.4 10,50€
Lo que nos diferencia del resto
Atención Personalizada
Estamos aquí para ayudarle, si necesita información sobre un producto, tiene alguna duda o requiere asistencia con su pedido, no dude en contactar con nosotros.
Presupuestos a medida
Pida presupuesto sin ningún tipo de compromiso, tenemos descuentos para docentes y precios especiales por volumen.
¿Necesita distribuidor?
Queremos ser su proveedor de electrónica ¿Necesita productos que no tenemos en el catálogo? Los buscaremos y le daremos presupuesto y plazo de entrega.
En esta entrada explicaremos como montar tu propio control de acceso usando Arduino como la placa encargada del control y el módulo RFID-RC522 encargado de la comunicación y la lectura.
Despues de entender el funcionamiento del RFID se te abrirán las puertas de muchos otros proyectos en los que necesites está tecnología.
Materiales necesarios:
Arduino UNO | |
Módulo RFID | |
Cables, leds y resistencias |
Algo sobre la tecnología RFID.
El cometido principal de la tecnología RFID es dotar de identidad a objetos, productos, personas, animales… es similar a un número de serie.
La identificación por radiofrecuencia, RFID por sus siglas en ingles de Radio Frequency IDentification, es un sistema para recuperar y almacenar datos de forma remota y automática. Estos datos se almacenan en tarjetas, etiquetas, tags RFID…
Las etiquetas RFID, son unos dispositivos de pequeño tamaño fácil de adherir a cualquier objeto. Estas etiquetas o tags en ingles, tienen en su interior antenas de radiofrecuencia las cuales les permiten responder a peticiones de un emisor-receptor RFID.
Hay dos tipos de etiquetas, las pasivas y las activas. Las pasivas no necesitan alimentación, mientras que las activas si.
La ventaja fundamental de esta tecnología con respecto a otras es que no necesita contacto visual directo para transmitir los datos; como ocurre por ejemplo con la transmisión por infrarrojos.
Conexión del módulo RFID con Arduino
Es fácil. El módulo RFID está serigrafiado. Solo hay que conectar los pines de la siguiente forma.
En los comentarios del código que más abajo facilitamos también aparece como conectarlo.
RFID-RC522 |
Pines Arduino UNO |
---|---|
SDA | 10 |
SCK | 13 |
MOSI | 11 |
MISO | 12 |
IRQ | No se conecta |
GND | GND |
RST | 5 |
3,3V | 3V3 |
LED´S |
|
LedPinAbierto (Verde) | 2 |
LedPinCerrado (Rojo) | 3 |
Código de prueba.
Antes de cargar el código en Arduino, necesitamos descargar y añadir la libraría para manejar el módulo RFID.
Puedes descargarla aquí.
Una vez tengamos la librería, cargamos el código en Arduino.
#include <MFRC522.h>//Descargar e incluir la librería #include <SPI.h> /* Pins SPI UNO Mega2560 Leonardo 1 (NSS) SAD (SS) 10 53 10 2 SCK 13 52 SCK1 3 MOSI 11 51 MOSI1 4 MISO 12 50 MISO1 5 IRQ * * * 6 GND GND GND GND 7 RST 5 ? Reset 8 +3.3V (VCC) 3V3 3V3 3.3V * No necesario */ #define SAD 10 #define RST 5 MFRC522 nfc(SAD, RST); #define ledPinAbierto 2 #define ledPinCerrado 3 void setup() { pinMode(ledPinAbierto , OUTPUT); pinMode(ledPinCerrado, OUTPUT); SPI.begin(); Serial.begin(115200); Serial.println("Buscando RC522"); nfc.begin(); byte version = nfc.getFirmwareVersion(); if (! version) {//Entra si no encuentra el módulo. Serial.print("No ha encontrado RC522"); while(1); //detener } Serial.print("Ha encontrado RC522"); Serial.print("Firmware version 0x"); Serial.print(version, HEX); Serial.println("."); } #define AUTHORIZED_COUNT 1 //Para autoriazar más tarjetas ponemos el número aqui y la añadimos abajo byte Authorized[AUTHORIZED_COUNT][6] = { {0x83, 0xF4, 0x8D, 0xC6, 0x3C,} //,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, } ejemplo de como autorizar más tarjetas 0x83,..... }; void printSerial(byte *serial); boolean isSame(byte *key, byte *serial); boolean isAuthorized(byte *serial); void loop() { byte status; byte data[MAX_LEN]; byte serial[5]; boolean Abierto = false; digitalWrite(ledPinAbierto, Abierto); digitalWrite(ledPinCerrado, !Abierto); status = nfc.requestTag(MF1_REQIDL, data); if (status == MI_OK) { status = nfc.antiCollision(data); memcpy(serial, data, 5); if(isAuthorized(serial)) { Serial.println("Autorizado"); Abierto = true; } else { printSerial(serial); Serial.println("NO autorizado"); Abierto = false; } nfc.haltTag(); digitalWrite(ledPinAbierto, Abierto); digitalWrite(ledPinCerrado, !Abierto); delay(2000); }//if (status == MI_OK) delay(500); }//void loop() boolean isSame(byte *key, byte *serial) { for (int i = 0; i < 4; i++) { if (key[i] != serial[i]) { return false; } } return true; } boolean isAuthorized(byte *serial) { for(int i = 0; i<AUTHORIZED_COUNT; i++) { if(isSame(serial, Authorized[i])) return true; } return false; } void printSerial(byte *serial) { Serial.print("Serial:"); for (int i = 0; i < 5; i++) {// aumentar a 5 para leer el número de la tarjeta completo Serial.print(serial[i], HEX); Serial.print(" "); } }
Probando el montaje.
Para probar nuestro montaje abrimos el monitor serial de Arduino y lo hacemos funcionar a 115200 baudios.
El programa, lo primero que hace es buscar el módulo RFID, si no lo encuentra en el monitor serial se imprimirá un aviso informando de que no lo ha encontrado.
En el caso de que no encuentre el módulo RFID, tenemos que comprobar que todas las conexiones estan correctas y que nuestro módulo RFID esta en buen estado.
Una vez que ya lo encuentra, solo tenemos que acercar nuestra tarjeta o llavero; seguramente aparezca un mensaje en el que aparece unos números y las palabras NO AUTORIZADO.
Para autorizar una tarjeta tenemos que añadir su número de identificación a esta linea de código.
#define AUTHORIZED_COUNT 1 //Para autoriazar más tarjetas ponemos el número aqui y la añadimos abajo byte Authorized[AUTHORIZED_COUNT][6] = { {0x11, 0x1D, 0xD3, 0xE, 0xD1,} //,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, } ejemplo de como autorizar más tarjetas 0x83,..... };
Para saber cual es el número de identificación de la tarjeta, solo tenemos que cambiar un valor en un bucle del código. Esto hace que cuando la tarjeta no está autorizada nos imprima el número de identificación de la tarjeta en cuestión.
La línea de código en la que hay que hacer la modificación es la siguiente.
void printSerial(byte *serial) { Serial.print("Serial:"); for (int i = 0; i < 5; i++) {// aumentar a 5 para leer el número de la tarjeta completo Serial.print(serial[i], HEX); Serial.print(" "); }
Solo tenemos que copiar el número que nos imprime por el monitor serial y añadirlo como tarjeta autorizada.
Una vez tenemos nuestra tarjeta autorizada solo tenemos que acercarla al módulo RFID. En el monitor serial nos aparecerá como tarjeta autorizada y se nos encenderá el led verde.
Si acercamos una tarjeta no autorizada nos imprimirá NO AUTORIZADA y permanecerá encedido el led Rojo.
Esperamos que les sea de utilidad y no olviden que en nuestro blog encontrará muchos otros post de su interes.
Written by leantec.ES
Equipo de Leantec.ES
Hola como estas? no se si llegue muy tarde al post, tome parte de tu codigo para mi proyecto con un ESP32 y el MFRC522.
En mi caso implemento esta funcion que yo cree:
///////////////////////////////////////////////////////////////////////////////////////////////////
void uid_DATA (void)
{
byte serial[4];
mfrc522.PICC_UIDSOLA(&(mfrc522.uid)); //esta funcion fue creada en mfrc522.cpp y declarada en mfrc522.h
printSerial (serial); //me deberia imprimir el serial de mi tarjeta RFID (UID creo yo)
if(isAuthorized(serial))
{
Serial.println(«Autorizado»);
//Abierto = true; //en mi caso no ocupo los leds
}
else
{
printSerial(serial);
Serial.println(«NO autorizado»);
//Abierto = false;
}
}
//////////////////////////////////////////////////////////////////
El problema que yo tengo es que siempre me da AUTORIZADO para cualquier tarjeta PICC que utilice, en mi caso probe con la que me trae de prueba el MFRC522 y con una tarjeta de colectivo que funciona con la misma frecuencia. Cuando el codigo que vos hiciste me lee la tarjeta me devuelve un valor: EC 0 FC 3F F, sin embargo este valor me lo devuelve para cualquier tarjeta que yo ingrese y no se porque, entonces me da como autorizado a cualquier tarjeta que yo ingrese, no logro solucionar ese problema con el codigo que vos hiciste.
Copie el código e incluí la librería que sugieren, pero me aparece un error que no reconoce nfc.begin entonces pensé que estaba tal vez mal escrito y lo corregí por mfrc522 y siguió compilando y se detenía donde encontraba nfc por lo tanto cambie por mfrc522 pero da otro error que no reconoce getFirmwareVersion, por favor me podría ayudar, gracias.
buenas, el codigo metira un error en <#include me pueden pasar el link de la libreria, ya que me tira sketch_rfid:24:10: error: MFRC522.h: No such file or directory
exit status 1
MFRC522.h: No such file or directory
Buenas Alejandro, puedes obtener la librería RFID (incluido MFRC522.h) desde github de miguelbalboa
Hola , la libreria no me funciona
hola amigo tu información es muy completa y de gran ayuda, yo estoy dentro de un proyecto de investigación, como podría hacer para que si alguien trata de acceder con una tarjeta errónea o de otro modo me salte una alarma o algo parecido??
hola me pueden facilitar la libreria que utilizaron del rfid ya que la que esta ahi me salen errores
Me pueden mandar el link de la libreria que usaron del rfid
porque el enlace que pusieron me manda a la pagina principal
me ayudan por favor
Te enviamos el enlace por privado y hemos actualizado la referencia al mismo para mantener enlazado el repositorio con la ultima versión.
me puedes pasar la libreria por favor? me urge
Disculpen la pregunta, ya intenté por todo lado, pero no logro compilar, la duda que tngo es, para programar una PN532, que tipo de tarjeta debo seleccionar en el IDE de ARDUINO, ya que si le pongo ARDUINO UNO, me dice error al compilar para ARDUINO UNO
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
Hola a todos.
Necesito crear un código para 5 lectores RFID para abrir la misma puerta, sólo cuando los 5 lectores hayan leído los tag’s que les corresponda. Me puede ayudar alguien?
Gracias.
el codigo funciona de 10 la pregunta mia es la siguiente como puedo agregar mas tarjetas o llaveros
debes crear una funcion con arreglos para usuarios autorizados, leyendo primero el codigo hexadecimal y lo guardas para cada nuevo usuario
Muchas gracias, funciona perfecto, acabas de salvar mi pellejo
Muchas gracias!!!
Me ha funcionado a la perfección.
Buenas, antes que nada muchas gracias por su aporte.
Ahora, tengo un problema; probé el programa en un arduino uno y funciono a la perfección, pero al intentar conectarlo en un arduino mega ni siquiera detectaba el lector («No ha encontrado RC522»), no estoy seguro si estoy conectando algo mal, o si tengo que modificar algo para que funcione, ademas para las conexiones con el mega «ST» lo marca con un signo de interrogación así que tampoco se a donde va. Si me pudieran ayudar se os agradecería mucho ya que estoy haciendo un proyecto con muchos I/O y necesito utilizar el mega ya que con el uno me quedaría corto de puertos. Gracias de antemano.
Hola, Te consulto para hacer una experiencia con mis alumnos. Existe algún RFID con Arduino que pueda identificarse a 5 o 6 metros. Si lo conoces podrías decirme cuales son?? Saludos
Hola,tengo un problema ,la tarjeta leida es D7 5E AD 35 11,en donde se coloca este codigo,no entiendo,al lado de que? con comas o solo..Ayuda.
Buenas tardes, cuando cargo el programa en el monitor serial me aparece:
«Buscando RC522
Ha encontrado RC522 Firmware versionx12»
Paso el llavero o la tarjeta y no pasa nada todo queda igual, no se si tenga que ver que descargue la libreria de RFID del link que dejo en esta pagina, pero por ejemplo en el codigo, la primer parte donde estan las librerias
#include//Descargar e incluir la librería
#include
En esa parte, lo que es «SPI.h» me aparece remarcado color naranja, y lo que es «MFRC522.h» sigue del mismo color, tal cual y aparece aqui, no se si eso signifique que no esta llamando a la libreria o que pasara?
me funciono de maravilla, como podria añadirle una salida para que active un rele cuando de autorizado?
saludos
hola tengo un problema, no me reconoce las tarjetas y los llaveros no me tira el serial de 5 dígitos hexadecimal me pone Buscando RC522
Ha encontrado RC522Firmware versión 0x92 y luego no me ve nada ni la tarjeta ni el llavero ya no se con que probar necesito ayuda urgente tengo que rendir este trabajo para calificar nota final y me dieron tiempo hasta el dia 21 que cae martes.
Hola que tal, tengo exactamente el mismo problema, encontraste cual era el detalle o alguna solucion?
Gracias, funciona de maravilla
Como puedo hacer para que solo permita 3 intentos para un mismo tag o tarjeta?
OYE UNA PREGUNTA COMO ASOCIO UN NOMBRE A UNA TARJETA GRACIAS ….
Hola, si hay una tarjeta con una asignación previa en otra parte [A] y la configuro en otra [B], se va a borrar del sitio A?
el codigo no me da dice
‘class MFRC522’ has no member named ‘begin’
pero yo ya puse la libreria que nos diste y todavia nada, ya intente con dos librerias de RFID
:'(
Desacarga la librería del link que está al inicio de este post y agrégala; si es que descargaste alguna otra libreria desde la gestion de librerías, elimina la carperta que te debe haber generado en la direccion Libraries en tu PC y listo. Tuve el mismo error y con eso se solucionó.
Hola, me funciona el codigo tengo todas las librerias y en el monitor serie me reconoce el Rc522 pero solo me sale esto «Buscando RC522
Ha encontrado RC522Firmware version 0x11.»
no me sale ningun numero mas, entonces no puedo configurarla bien.
Gracias
Hola, que tal, tengo el mismo problema, encontraste solucion? te lo agradeceria mucho
Se puede puede clonar la llaves rfid? Si es así, hay alguna forma de hacerlas únicas?
Se puede clonar una llave rfid? Si es así, hay alguna manera de codificarla para que sea única?
Hola buen dia como le podria hacer para poner dos lectores al mismo tiempo?
Hola José,
Yo e conseguido meter más targetas:
#define AUTHORIZED_COUNT 2 //Para autoriazar más tarjetas ponemos el número aqui en authorized_count 1,2,3,4,etc…byte Authorized[AUTHORIZED_COUNT][6] = {
{0x88, 0x4, 0x38, 0x49, 0xFD,},{0x95, 0xEF, 0xCD, 0x65, 0xD2,}
//despues del primero coma y el codigo
no se entiende donde va el numero que tira la tarjeta y si los que esta en el ejemplo quedan o no podrias explicarnos
Lo que no se entiende es tu forma de expresarte con esas patadas al lenguage. Deberías volver a la guardería y empezar de cero.
Buenas noches, yo tampoco doy con la manera de añadir mas targetas ,he probado de varias maneras pero siempre me da error al compilar
Compañero no entiendo como poder añadir mas tarjetas.
gracias
Muchisimas gracias ,he probado muchos proyectos y ninguno me funciono ,el vuestro a funcionado a la primera ,lo dicho muchisimas gracias y siguir con nosotros.
Buenas,esta noche probaré este por que he probado un montón de proyectos y todos me dan error de libreria, a ver si por fin consigo uno que funcione.
Ya comentare
hola buen día, a mi me funciona muy bien la programación, pero tengo una pregunta. como hago para que me pueda leer mas de una tarjeta. agradezco me puedas colaborar con esto.
Hola! muchas gracias por el aporte! Pero me tira un error que dice:
‘class MFRC522’ has no member named ‘begin’
Que soluciones me recomiendan para este error?
Te ha pasado lo mismo que a mi gerardo, descarga la libreria del principio y listo
Tengo el mismo problema. Ya descargué e incluí la librería y me sigue saliendo el error. También incluí la librería en su última versión buscando a través del IDE, y aún me sale ese error. Algun indicio de qué podría ser?
Hola… muchas gracias por el aporte…
no reconoce ninguna tarjeta
FUNCIONA, , dios , no habia soldado los cables y de ahi el error
ahora solo saber donde poder mas llaveros
Tengo el mismo problema, mañana lo probare, soldando los cables, espero sea eso, si es asi, pasare a agradecertelo mucho
buenas
me detecta el RFID y
no me detecta las tarjetas
solo muestra
Buscando RC522
Ha encontrado RC522
Firmware version 0xFF.
lo curioso es que si le quito la energia 3.3V
me dice:
Buscando RC522
Ha encontrado RC522
Firmware version 0x80.
es posible esto que sin energia siga encontrando el RFID
gracias
Hola buenos días, tengo una duda sobre como enviar los codigos de la tarjerta a otro arduino atraves de Radio Frecuencia para poder implementarlo en una base de datos. Quisiera saber lo que tendria que enviar al otro arduino para que le llegue el codigo.
Lo siento si es una pregunta tonta, pero soy un estudiante de CS y estoy haciendo el proyecto de final de ciclo con arduino (control de acceso RFID en una clase enviado por RF y leido en base de datos MySQL).
Muchas gracias y un saludo.
buenos dias yo tengo un arduino leonado pero no entiendo como es la coneccion gracias y si hay que cambiar algo en el docigo
Buenos días Harold.
En principio el funcionamiento es el mismo.
Un saludo.
Servicio técnico Leantec
hola me funciono perfectamente pero sigo teniendo el mismo problema solo me lee el llavero ,me pasa lo mismo que a vicente paso el llavero y lo lee perfecto pero con la tarjeta es distinto no pasa nada ni siquiera sale que esta autorizada , en pocas palabras no pasa nada. espero me puedas ayudar.gracias
Hola Alexis.
¿Tiene acceso a alguna otra tarjeta RFID de algún otro sistema electrónico? Si pudieras probar con una tarjeta que seguro funcione podemos averiguar más fácilmente cual es el problema.
Un saludo.
Servicio técnico Leantec.
Buenas Tardes, muy agradecido, funciona a la perfección !!!
José
Hola. Gracias en primer lugar, por compartir conocimientos entre los que no sabemos, pero nos gusta experimentar.
Tengo que decirles que el montaje está realizado según el tutorial. El monitor serie me reconoce el módulo RFID, pero no lee las tarjetas que le presento; es decir, no me dice que estén o no autorizadas, y el led sigue en rojo, sin encender el led verde.
He revisado el montaje varias veces, pero no encuentro dónde podría estar el fallo que cometo… Podrían darme una pista…?
Saludos cordiales
Buenos días Vicente.
¿Las tarjetas con las que estás probando son las misma que el módulo traía? ¿Con el llavero funciona?
¿Tiene a su alcance alguna tarjeta de alguna otra máquina que pueda probar?
Si todo esta bien, y en el monitor serial aparece que ha reconocido el módulo, solo se nos ocurre que el problema este en las tarjetas que está utilizando.
Un saludo.
Servicio técnico Leantec.
Hola:
No funciona. Al compilar saltan errores porque en el programa hay referencias a rutinas que no están en la librería MFRC522.h. (he descargado la versión existente al 2015.07.11.
También hay referencia a «nfc» que no está declarado.
Hola josfabra,
Gracias por el consejo.
Acabamos de verificar que todo esté bien y parece funcionar a la perfección. Por favor, asegúrese de que el código lo tiene tal y como está en la web. Hemos copiado y pegado el código tal cual está y no nos ha dado ningún error.
Esperamos su respuesta.
Un saludo,
Servicio Técnico leantec.es
http://www.leantec.es
me pasa lo mismo me marca error en nfc
igual me marca el mismo error en nfc queria saber si ya tiene alguna solucion??
hola, no funciona me salta error en el nfc