Professional Documents
Culture Documents
1 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
Posted by
13 Comments
jun 04,
2015
ago 06,
2016
03/10/2016 18:43
2 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
La versin ms
pequea de Arduino...
S/. 20,00 S/. 25,00
Mdulo RC522
Arduino Mega
SDA (SS)
10
SCK
13
52
MOSI
11
51
MISO
12
50
53
3 de 14
Touch de 7 pulgadas
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
Mdulo RC522
Arduino Mega
IRQ
No conectado
No conectado
GND
GND
GND
RST
3.3V
3.3V
3.3V
S/. 470,00
S/. 30,00
Cristal oscilador de
16 MHz de
frecuencia. Utilizado
en Arduino Uno,...
4 de 14
S/. 2,00
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
El mdulo Relay te
permite controlar el
encendido/apagado
de equipos de...
S/. 6,00
Sensor capacitivo te
permite detectar
objetos metlicos y
no metlicos...
S/. 40,00
#define RST_PIN 9
//Pin 9 para el reset del RC522
#define SS_PIN 10
//Pin 10 para el SS (SDA) del RC52
2
MFRC522 mfrc522(SS_PIN, RST_PIN); //Creamos el objeto p
ara el RC522
void setup() {
Serial.begin(9600); //Iniciamos la comunicacin
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.uidB
yte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidB
yte[i], HEX);
}
Serial.println();
// Terminamos la lectura de la tarjet
a actual
mfrc522.PICC_HaltA();
}
}
}
5 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
C522
MFRC522 mfrc522(SS_PIN, RST_PIN);
Iniciar el RC522
SPI.begin();
//Iniciamos el Bus SPI
mfrc522.PCD_Init(); // Iniciamos el MFRC522
03/10/2016 18:43
6 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
Finalizar la lectura.
mfrc522.PICC_HaltA();
7 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
acceso.
A continuacin se muestra el Sketch.
#include <SPI.h>
#include <MFRC522.h>
#define
#define
2
MFRC522
para el
RST_PIN 9
SS_PIN 10
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 cdigo del Tag ledo
byte Usuario1[4]= {0x4D, 0x5C, 0x6A, 0x45} ; //cdigo d
el usuario 1
byte Usuario2[4]= {0xC1, 0x2F, 0xD6, 0x0E} ; //cdigo d
el 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.uidB
yte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidB
yte[i], HEX);
ActualUID[i]=mfrc522.uid.uidB
yte[i];
}
Serial.print("
");
//comparamos los UID para determinar
si es uno de nuestros usuarios
if(compareArray(ActualUID,Usuario1))
03/10/2016 18:43
8 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
Serial.println("Acceso concedido...
");
else if(compareArray(ActualUID,Usuari
o2))
Serial.println("Acceso concedido...
");
else
Serial.println("Acceso denegado..."
);
// Terminamos la lectura de la tarjet
a tarjeta
actual
mfrc522.PICC_HaltA();
}
}
}
//Funcin 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);
}
03/10/2016 18:43
9 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
Tags:
0
Compartir
JOHANNY PEREZ
jul 19, 2016
buenos das, cmo hara para aumentar la distancia de
lectura de la tarjeta al lector unos 10 a 15 metros....????
Gracias...! ! ! ! ! ! !
Naylamp
jul 20, 2016
Johanny, con el mdulo RFID RC522 solo
03/10/2016 18:43
10 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
Franco
ago 22, 2016
Qu mdulos de mayor potencia
me recomendaras para trabajar
con distancias ms largas con
arduino?
Marcelo
ago 16, 2016
Hola, gracias por tu tutorial. Tengo un problema, no soy
muy capo en el tema... como puedo dejar el ID ledo
desde el tag en una variable y no en un array, ej: Id ledo
D3A1C6D2, valor_tag=211161198214 .Agradecido y
disculpa si mi consulta es muy torpe.
Naylamp
ago 22, 2016
Hola Marcelo, claro que se puede, pero en
realidad es ms fcil de trabajarlo como array,
si quieres gurdalo en un solo nmero 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.
Deco
ago 31, 2016
Hola, muy buen tutorial, quisiera consultarle de como se
podria hace para mantener un led encendido durante el
tiempo en que el tag este cercano al lector RFID (en caso
de no estar el tag, simplemente no enciende el led).
Naylamp
03/10/2016 18:43
11 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
sep 2, 2016
Hola para que puedas seguir detectando el
TAG no debes usar mfrc522.PICC_HaltA();
esta funcin detiene la comunicacin con el
TAG. Si no usas mfrc522.PICC_HaltA() el
programa va a entrar al
if(mfrc522.PICC_IsNewCardPresent())
mientras el TAG est presente.
12
sep 3, 2016
buenas muy buen tuto. Que tendria que escribir para
encender y apagar un led cada vez que pase la tarjeta?
Naylamp
sep 14, 2016
Hola, va a depender de lo que exactamente
quieres hacer, si solo quieres hacer parpadear
el led cuando se detecta el TAG, solo enva 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
condicin hasta que se retire el TAG, lo que
podra complicar tu programa en caso ests
realizando una aplicacin de registro o conteo.
i2
sep 16, 2016
Buenas tardes por mas que lo intento no puedo resolverlo.
escrib unas lineas intentandolo con estados pero no soy
capaz, se que es mas facil que todo esto pero me lio .
sabes si voy por buen camino?? espero no molestarte al
poner mi sketch.un saludo[code] #include #include #define
RST_PIN 9 //Pin 9 para el reset del RC522 #define
SS_PIN 10 //Pin 10 para el SS (SDA) del RC522MFRC522
mfrc522(SS_PIN, RST_PIN); ///Creamos el objeto para el
RC522int 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
03/10/2016 18:43
12 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
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 cdigo del
Tag ledo byte Usuario1[4] = {0x96, 0x54, 0xeb, 0x75} ;
//cdigo del usuario 1 byte Usuario2[4] = {0xC1, 0x2F,
0xD6, 0x0E} ; //cdigo del usuario 2void 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(); } }}}//Funcin 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
sep 21, 2016
Hola, Tienes errores de sintaxis, a
continuacin te mencionamos los errores que
podemos encontrar: 1. pinMode("Acceso
concedido", INPUT_PULLUP); 2. estado =
Serial.println("Acceso concedido"); 3. Existen
dos llaves que estn dems. 4. Pones muchas
03/10/2016 18:43
13 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
Rene Misael
sep 24, 2016
Excelente. Mil Gracias por tu explicacin.
* Name:
* E-mail:
(Not
Published)
Website:
(Site url
withhttp://)
* Comment:
Submit
Naylamp Mechatronics,
03/10/2016 18:43
14 de 14
http://www.naylampmechatronics.com/blog/22_Tutorial-Lector-RFID...
Trujillo Per
Llmanos ahora:
997646858
Email:
03/10/2016 18:43