Lecture d un tag rfid pn532
Lecture d'un tag RFID par PN532¶
Branchement du kit PN532¶
|A | |B|
|----- |------- |-----|
| GND | \<-> |GND|
| VCC | \<-> |5V|
| SDA | \<-> |A5|
| SCL | \<-> |A4|
Nécessite l'installation de la librairie nfc_moudle_v1.1
Code Test¶
/**
@brief example of reading mf1s50 card for NFC_MODULE
For this demo, waiting for a MF1S50 card or tag, after reading a card/tag UID,
then try to read the block 4/5/6/7 ..
V1.0 initial version
*/
/** include library */
#include "nfc.h"
/** define a nfc class */
NFC_Module nfc;
void setup(void)
{
Serial.begin(9600);
nfc.begin();
Serial.println("NFC MF1S50 Reader!");
uint32_t versiondata = nfc.get_version();
/*if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // halt
}*/
// Affiche la version de la puce!
Serial.print("Puce PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
/** Set normal mode, and disable SAM */
nfc.SAMConfiguration();
}
void loop(void)
{
u8 buf[32],sta;
/** Polling the mifar card, buf[0] is the length of the UID */
sta = nfc.InListPassiveTarget(buf);
/** check state and UID length */
if(sta && buf[0] == 4){
/** the card may be Mifare Classic card, try to read the block */
Serial.println();
Serial.print("UUID length:");
Serial.print(buf[0], DEC);
Serial.println();
Serial.print("UUID:");
nfc.puthex(buf+1, buf[0]);
Serial.println();
/** factory default KeyA: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF */
u8 key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
u8 blocknum = 4;
/** Authentication blok 4 */
sta = nfc.MifareAuthentication(0, blocknum, buf+1, buf[0], key);
if(sta){
/** save read block data */
u8 block[16];
Serial.println("Authentication success.");
// uncomment following lines for writing data to blok 4
/*
strcpy((char*)block, "Elechoues - NFC");
sta = nfc.MifareWriteBlock(blocknum, block);
if(sta){
Serial.println("Write block successfully:");
}
*/
/** read block 4 */
sta = nfc.MifareReadBlock(blocknum, block);
if(sta){
Serial.println("Read block 4 successfully:");
nfc.puthex(block, 16);
Serial.println();
}
/** read block 5 */
sta = nfc.MifareReadBlock(blocknum+1, block);
if(sta){
Serial.println("Read block 5 successfully:");
nfc.puthex(block, 16);
Serial.println();
}
/** read block 6 */
sta = nfc.MifareReadBlock(blocknum+2, block);
if(sta){
Serial.println("Read block 6 successfully:");
nfc.puthex(block, 16);
Serial.println();
}
/** read block 7 */
sta = nfc.MifareReadBlock(blocknum+3, block);
if(sta){
Serial.println("Read block 7 successfully:");
nfc.puthex(block, 16);
Serial.println();
}
delay(2000);
}
}
}
Verification de tag RFID¶
Allume une LED orange si c'est le bon tag, LED rouge si erroné
/** include library */
#include "nfc.h"
/** define a nfc class */
NFC_Module nfc;
int ledPinOK =12;
int ledPinNO =13;
String valid_UUID = "77105186124";
void setup(void)
{
pinMode(ledPinOK, OUTPUT);
pinMode(ledPinNO, OUTPUT);
Serial.begin(9600);
nfc.begin();
Serial.println("NFC MF1S50 Reader!");
uint32_t versiondata = nfc.get_version();
/*if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // halt
}*/
// Affiche la version de la puce!
Serial.print("Puce PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
/** Set normal mode, and disable SAM */
nfc.SAMConfiguration();
}
void loop(void)
{
u8 buf[32],sta;
String UUID; /* ajoutee */
/** Polling the mifar card, buf[0] is the length of the UID */
sta = nfc.InListPassiveTarget(buf);
digitalWrite(ledPinOK, LOW);
digitalWrite(ledPinNO, LOW);
/** check state and UID length */
if(sta && buf[0] == 4){
/** the card may be Mifare Classic card, try to read the block */
Serial.println();
Serial.print("UUID length:");
Serial.print(buf[0], DEC);
Serial.println();
Serial.print("UUID:");
nfc.puthex(buf+1, buf[0]);
Serial.print("Longueur :");
Serial.println(buf[0],DEC);
for (int i=1; i<=buf[0];i++){
if (buf[i]<0x10){
Serial.print("0");
}
Serial.print(buf[i]);
UUID.concat(buf[i]);
}
Serial.println();
// Verification du badge
if(UUID == valid_UUID){
Serial.print("OK");
digitalWrite(ledPinOK, HIGH);
}
else{
Serial.print("NO");
digitalWrite(ledPinNO, HIGH);
}
Serial.println();
}
}
Mes tags RFID¶
| Type | Source | UUID | Block4 |
|---|---|---|---|
| tag | kit | F5 11 C8 C5 | 45 6C 65 63 68 6F 75 65 73 20 2D 20 4E 46 43 00 |
| carte | kit | 4D 69 BA 7C | 45 6C 65 63 68 6F 75 65 73 20 2D 20 4E 46 43 00 |
| tag | Vigick M | 52 1A B6 5D | non lisible? |