Card reader
RFID MIFARE RC522

Ultimo aggiornamento 23 giugno 2019


 

Indice

Descrizione

Questo Card Reader RFID a 13.56 Mhz, basato sul chip MFRC522 della NXP Semiconductors che è stato progettato per la lettura/scrittura di tag per l'identificazione a radio frequenza.
Il modulo può essere utilizzato per svariate applicazioni sia professionali che amatoriali nell'ambito di controllo accessi, identificazione automatica, robotica, navigazione, sistemi di pagamento e antifurto immobilizzatori per auto.

Dove trovare il dispositivo

Il dispositivo può essere trovato sul sito HOMOTIX, ricordo che quanti inseriranno in codice "ADRIROBOT_19", potranno usufruire di uno speciale sconto.
Oltre a l kit potranno essere acquistati le singole schede Formato Tessera, oppure gli RFID formato portachiavi

Modulo RFID RC-522 e TAG
codice HMTRC522

Tag RFID Mifare Formato Tessera
codice HMTTAGT

Tag RFID Mifare Formato Portachiavi
codice HMTTAGP

Contenuto del Kit

Come illustrato nell'immagine riportata in basso, la confezione contiene:

Tutti i componenti sopra riportati sono presenti nel Kit Arduino Avanzato con Arduino Uno R3 Compatibile, venduto dal sito HOMOTIX, il kit è adatto a utenti esperti e principianti, con i componenti forniti è possibile realizzare una ampia varietà di progetti.

homotix

PCBONLINE

Caratteristiche

Alimentazione:

 3.3V

Corrente di funzionamento: 13-26mA
Corrente in Stand-by: 10-13mA
Corrente in Sleep: <80uA
Corrente di picco: <30mA
Frequenza operativa: 13.56MHz
Card supportate:  S50, S70 Ultralight, Pro, DESFire
Temperatura operativa:  -20/80° C
Temperatura di stoccaggio:  -40/85° C
Umidità relativa: 5%-95%
Interfaccia SPI
Velocità di trasferimento dati: max 10Mbit/s
Dimensioni: 40 x 60 mm
Peso:

20,5g

 

L'integrato MFRC522

Il modulo reader RFID-RC522 utilizza l'integrato MFRC522, lo schema a blocchi semplificato è visibile nella foto sottostante

L'MFRC522 è un integrato lettore/scrittore altamente integrato per la comunicazione senza contatto a 13,56 MHz. Il lettore MFRC522 supporta ISO / IEC 14443 A / MIFARE e NTAG.
Il trasmettitore interno dell'MFRC522 è in grado di pilotare un'antenna reader/writer progettata per comunicare con schede ISO / IEC 14443 A / MIFARE e transponder senza ulteriore circuiteria attiva.
Il modulo ricevitore fornisce un'implementazione robusta ed efficiente per segnali di demodulazione e decodifica di schede compatibili ISO / IEC 14443 A / MIFARE e transponder.
Il modulo digitale gestisce l'inquadratura ISO / IEC 14443 A completa e funzionalità di rilevamento degli errori (parità e CRC).
L'MFRC522 supporta i prodotti MF1xxS20, MF1xxS70 e MF1xxS50. L'MFRC522 supporta la comunicazione senza contatto e utilizza MIFARE velocità di trasferimento più elevate fino a 848 kBd in entrambe le direzioni.

Frontend MIFARE e NTAG prestazioni standard Sono fornite le seguenti interfacce host:

MFRC522 Standard performance MIFARE and NTAG frontend

Piedinatura Datasheet Foto dell'integrato

Come Funziona un sistema RFID

Un sistema RFID, in particolare, si compone di transponder, detto anche tag, il cui chip contiene i dati, di antenna, per comunicare con il tag e gestita dal controller, e di reader (o controller), che attraverso il segnale radio legge l’identificativo del tag e può scriverne la memoria, trasmettendo poi il segnale all’host (PC).

Un sistema RFID può operare in bassa frequenza (LF), alta (HF) o altissima frequenza (UHF e VHF):

In particolare, i tag / transponder RFID sono sostanzialmente delle memorie dotate di un apparato radio ricetrasmittente, spesso inserito nel medesimo chip di silicio: eccitato da un apparato esterno (fisso o portatile) con il quale stabilisce un dialogo via radio, il tag restituisce poi il suo codice identificativo e/o le altre eventuali informazioni contenute.
I tag RFID possono assumere svariate forme a secondo del tipo di applicazione considerata: ad esempio i tag utilizzati per l’identificazione degli animali sono di piccolissime dimensioni, in quanto devono essere inseriti sotto la pelle (ci sono progetti pilota anche su esseri umani in ambito sanitario), mentre per applicazioni di controllo accessi assumono le sembianze di una carta di credito o del più classico badge.

Le antenne RFID, gestite dal controller, generano un campo magnetico che “risveglia” il tag, avviando così la comunicazione via radio; le antenne, talvolta incorporate nel controller, possono essere a polarizzazione lineare oppure circolare, in base alle condizioni di lettura, all’orientamento dei tag ed all’ambiente in cui opera l’RFID.

Il controller RFID, detto anche lettore o reader, è la componente di un sistema RFID dedicata alla lettura/identificazione e scrittura dei tag RFID e della comunicazione dei loro codici ai sistemi di alto livello (Middleware o ERP) tramite le antenne, l’altro elemento del sistema che irradia il segnale RF.
La potenza del controller, unitamente al tipo di antenna ad esso collegata, ne determina una delle performance più importanti, ossia la distanza di lettura (del tag), che può essere qualificata in 4 tipologie:

Caricamento libreria Arduino

Per includere la libreria per la gestione del modulo occorre seguire quanto mostrato nelle figure mostrate sotto

Utilizzare la funzione "Gestione librerie" presente nell'IDE

Inserire nel campo ricerca "rfid" dovrebbe essere mostrata la "MFRC222"

Selezionare "More info" in questo modo apparirà il tasto "Installa" e premerlo

Conclusa l'installazione apparirà la scritta "INSTALLED"

Schema del circuito di prova

Per testare il modulo si utilizzano i seguenti componenti

Kit Card reader
RFID MIFARE RC522
Scheda Arduino Nano Arduino UNO
Convertitore Expander seriale Bus I2C
con PCF8574 con Display LCD 
Cavetti di vari colori

Pin Arduino/Nano Modulo RFID Modulo display
A4 (SDA)   SDA
A5 (SCL)   SCL
D9 RST  
D10 SS  
D11 MOSI  
D12 MISO  
D13 SCK  
+3,3V VCC  
+5V   VCC
GND GND GND

Programma di prova

Il programma di prova, si limita a mostrate il codice univoco presente all'interno del TAG. il valore viene mostrato sia in esadecimale che in decimale nella finestra del monitor seriale, e se è collegato il display, su di esso viene mostrato il codice i esadecimale. NOTA: Prima di caricare il programma, assicurarsi di aver attivato la libreria.

Programma 
Schema circuito di prova

/*
  lettura_codice_rfid.ino
  Lo sketch legge il codice del tag tramite il modulo MFRC522 connesso
  tramite interfaccia SPI, e mostra il codice su display LCD collegato.
  tramite modulo I2C.

  Sono utilizzati i seguenti pin
  Pin +3.3V         -> Alimentazione modulo MFRC522
  Pin +5V           -> Alimentazione modulo I2C per Display
  Pin GND           -> GND
  Pin Analogico A4   -> SDA modulo I2C LCD
  Pin Analogico A5   -> SCL modulo I2C LCD
  Pin Digitale D9    -> RST modulo MFRC522
  Pin Digitale D10   -> SS modulo MFRC522
  Pin Digitale D11   -> MOSI modulo MFRC522
  Pin Digitale D12   -> MISO modulo MFRC522
  Pin Digitale D13   -> SCK modulo MFRC522

  Creato il 26/12/2017 da Adriano Gandolfo
  Sito web http://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

// impostazione lettore RFID
#include <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);

// Impostazione display LCD tramite I2C
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);


// Setup variables:
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  rfid.init();

  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Lettura cod.RFID");
  lcd.setCursor(0, 1);
  lcd.print("www.adrirobot.it");
}

void loop()
{

  if (rfid.isCard()) {
    if (rfid.readCardSerial()) {
      if (rfid.serNum[0] != serNum0
          && rfid.serNum[1] != serNum1
          && rfid.serNum[2] != serNum2
          && rfid.serNum[3] != serNum3
          && rfid.serNum[4] != serNum4
         ) {
        /* With a new cardnumber, show it. */
        /* Se trova un nuovo numero di tag lo mostra */
        Serial.println(" ");
        Serial.println("Trovata card");
        serNum0 = rfid.serNum[0];
        serNum1 = rfid.serNum[1];
        serNum2 = rfid.serNum[2];
        serNum3 = rfid.serNum[3];
        serNum4 = rfid.serNum[4];


        Serial.println("Numero RFID:");
        Serial.print("Dec: ");
        Serial.print(rfid.serNum[0], DEC);
        Serial.print(", ");
        Serial.print(rfid.serNum[1], DEC);
        Serial.print(", ");
        Serial.print(rfid.serNum[2], DEC);
        Serial.print(", ");
        Serial.print(rfid.serNum[3], DEC);
        Serial.print(", ");
        Serial.print(rfid.serNum[4], DEC);
        Serial.println(" ");

        Serial.print("Hex: ");
        Serial.print(rfid.serNum[0], HEX);
        Serial.print(", ");
        Serial.print(rfid.serNum[1], HEX);
        Serial.print(", ");
        Serial.print(rfid.serNum[2], HEX);
        Serial.print(", ");
        Serial.print(rfid.serNum[3], HEX);
        Serial.print(", ");
        Serial.print(rfid.serNum[4], HEX);
        Serial.println(" ");

        /* Write the HEX code to the display */
        /* Scrive il codice HED sul display */
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Num Card (hex):");
        lcd.setCursor(0, 1);
        lcd.print(rfid.serNum[0], HEX);
        lcd.print(',');
        lcd.print(rfid.serNum[1], HEX);
        lcd.print(',');
        lcd.print(rfid.serNum[2], HEX);
        lcd.print(',');
        lcd.print(rfid.serNum[3], HEX);
        lcd.print(',');
        lcd.print(rfid.serNum[4], HEX);
      } else {
        /* If we have the same ID, just write a dot. */
        /* se trova lo stesso ID, scrive solamente punti. */
        Serial.print(".");
      }
    }
  }

  rfid.halt();
}

 

Elenco revisioni
23/06/2019 Aggiornato pagina
26/12/2017 Emissione preliminare