RFID de 13.56Mhz con MFRC522

Vaya tela esto de los RFID Mifare, no se si habéis cacharreado alguno con ellos pero es un lio de aupa. Lo único que consigo es leer el numero de serie del TAG pero de meter pin y acceder a la memoria como que nada de nada.

Voy a leerme el datasheet a ver si lo pillo.

MFRC522.pdf (748 KB)

#define	uchar	unsigned char
uchar sectorKeyA[16][16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
                             {0x19, 0x84, 0x07, 0x15, 0x76, 0x14},//PIN
                             {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
                            };
 uchar sectorNewKeyA[16][16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
                                {0x19, 0x84, 0x07, 0x15, 0x76, 0x14, 0xff,0x07,0x80,0x69, 0x19,0x84,0x07,0x15,0x76,0x14},
                                {0x19, 0x33, 0x07, 0x15, 0x34, 0x14, 0xff,0x07,0x80,0x69, 0x19,0x33,0x07,0x15,0x34,0x14},
                               };

No entiendo esta parte del código de ejemplo, que es donde define el pin de acceso al RFID.
Cuando a una matriz le pones [16][16] ¿que significa?

Hola flico, yo tb ando trasteando con un modulo rfid en mi caso un sl030 y unas tarjetas mifare 1k y por lo poco q se es q el tag son 4bytes y el keyA son 16 sectores o bloques de 16bytes cada uno de ahi lo de 16 16, algunas otras tarjetas tienen tb keyB q supongo q sera parecido, espero q te haya aclarado algo.
Un saludo.

@riscking, OK.

Voy a probar a conectarlo por I2C o por serial a ver si es mas facil.

Bueno pues después de probar con otros TAGs funcionan bien por lo que creo que están mal los otros. Aun así no entiendo como funcionan este tipo de tarjetas RFID, por el momento usare solamente el numero de serie para el proyecto de la casa domotica mas adelante trasteare con el codigo.

Os dejo el sketch de ejemplo por si alguien se anima a experimentar un poco.

RFIDrc522.pde (24.7 KB)

Flico yo he conseguido leer el contenido de la tarjeta mifare de 1K, el codigo como no es mio todavia lo tengo que estudiar y mirandolo por encima hay cosas que no entiendo, mi programacion no es muy pro que digamos, pero basicamente una captura sería esta, mi lector sera diferente al tuyo pero te podría pasar el codigo para hacerte una idea si quieres, eso si lo tengo que buscar ya que ando con problemas con mi pc principal.

Pero los TAGs tienen una zona de la memoria protegida por un pin, no? Haber si es que estoy confundido yo y estoy intentando algo imposible.

Vaya pues buscando informacion me has dejado fundido, segun estas paginas que he encontrado entonces lo que leo no es real?? puff esto se cumplica, aqui lo explican banstante bien el tema con una tarjeta de 4k

Lo que te digo @riscking un lio de aupa. Los enlaces son muy buenos, si supieras la de búsquedas que he hecho en google buscando este tema alucionarias.
Lo que me ha roto los esquemas es que se pueden clonar, mal asunto para lo que lo quiero, yo creo que al final esto del RFID no lo voy a usar en mi casa domotica.

Hola amigos.

Yo trabajo con controles de acceso y se me ocurrió conectar a mi Arduino Severino una lectora Wiegand 26. Resulta ser que es bastante más complejo de lo que parece, no hay código que me lea los datos, solo recibo basura o interferencia. Sería interesante crear software útil para comunicarse con el protocolo Wiegand 26, ya que es el estandar para cualquier lectora RFID.

Información que tengo:

Envía 1 bit de Señal
Envia 8 bits de Lote o código de lugar
Envia 16 bits de codigo de tarjeta
Envia 1 bit de Señal de terminación

Cada bit dura 50 microsegundos separados por 1 milisegundo.

El solucionar esto haría que pudiéramos conectar cualquier lectora RFID.

Flico

¿El ibutton de Dallas no te seria mas seguro?
http://www.maxim-ic.com/products/ibutton/

@Heke, también probé el ibutton pero me gusta mas la idea de no haber contacto físicamente.

Hola
con respecto a este codigo:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 3); //pin2 Rx, pin3 Tx

int CMD[64];
int comlen =0;
int out_flag =0;

void setup()
{
Serial.begin(9600);
mySerial.listen();
Serial.println(“Serial number will be displayed here if a card is detected by the module:\n”);
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
delay(10);
mySerial.write(0x02); //Send the command to RFID, please refer to RFID manual
}
void loop() // run over and over
{

comlen=0;
while (mySerial.available()) {
++comlen;
byte C = mySerial.read();
if (C<16) Serial.print(“0”);
Serial.print(C ,HEX); //Display the Serial Number in HEX
Serial.print("*");
out_flag =1;
}
if (out_flag >0) {
Serial.print(" NDatos:");
Serial.print(comlen, DEC);
Serial.println(“LN”);
out_flag = 0;
}

}

porfavor podrian esplicarme porque se usa la sentencia: if (C<16) Serial.print(“0”); .Los bytes del nuemro de serie siempre sn mayores de 16?
Estoy probando los tags y note que lee 4 bytes del numero de serie, pero en este video http://www.jeremyblum.com/2011/07/08/tutorial-12-for-arduino-rfid-card-reading/
veo que lee 5 bytes, hay tags de diferente tamaño de numero de serie?

Gracias Saludos