[TUTORIAL] Utilizzare lettore RFID RC522 con Arduino – RFID Reader Arduino

Ultimamente la domotica è argomento di interesse per molti smanettoni 🙂 Quella di aprire una porta, accendere una luce o disattivare l’antifurto del garage, come per magia, passando una tessera o un portachiavi vicino a un lettore, è un’idea che affascina tutti! 🙂

Stronzate a parte!  🙂 Scrivo questo articolo perché voglio condividere con voi la mia semplice e basilare esperienza sull’utilizzo del lettore RFID RC522. L’RFID è una soluzione molto pratica per realizzare, ad esempio, serrature elettroniche, identificazione dell’utente, disattivazione di un allarme…

I Kit che si trovano facilmente Online sono composti da:

Una scheda lettore RFID di card basata sull’integrato prodotto dalla NXP RC522

Un portachiavi contenente un TAG RFID

Una card contenente un TAG RFIDPer acquistare il kit potete cliccare sul seguente link: Lettore RFID-RC522

Il lettore RFID-RC522 comunica con Arduino attraverso la porta SPI (l’integrato a bordo supporta anche I2C e UART ma noi non le utilizziamo).

Per collegare Arduino al modulo RFID RC522 nel nostro caso è necessario implementare i seguenti collegamenti:

RC522 MODULE             Uno/Nano
SDA                                   D10
SCK                                    D13
MOSI                                 D11
MISO                                 D12
IRQ                                    N/A
GND                                  GND
RST                                    D9
3.3V                                   3.3V

IL CODICE DA UTILIZZARE

Per quanto riguarda l’esempio di codice che vi propongo non è necessaria l’inclusione di nuove librerie, sono sufficienti quelle presenti all’interno dell’IDE di Arduino.

Nell’esempio, la seriale viene usata come output per quello che viene letto attraverso il dipositivo RFID. Il codice letto viene confrontato con un codice di riferimento definito in una costante Stringa (const String codiceGiusto = “…………..”). Se l’esito di questo confronto darà esito positivo, verrà stampato “CODICE VALIDO” sulla seriale, potrete inserire all’interno di questo if ad esempio l’azionamento di un relay che pilota ad esempio un apri-porta 🙂


Iscriviti al nostro canale YouTube per saperne di più! 🙂

Per scaricare il file del sorgente clicca qui:
 

/*
Collegamenti:
 
RC522 MODULE    Uno/Nano    
SDA             D10
SCK             D13
MOSI            D11
MISO            D12
IRQ             N/A
GND             GND
RST             D9
3.3V            3.3V
*/
 
#include <SPI.h>
#include <RFID.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 10  // 53 per Mega
#define RESET_DIO 9
#define delayRead 1000 // Time of delay 
 
/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO); 

const String codiceGiusto = "9439B1ACB";     //codice da assegnare come "VALIDO" le maiuscole/minuscole sono ignorate

void setup()
{ 
  Serial.begin(9600);
  /* Abilita SPI*/
  SPI.begin();                  //Inizializzazione dell'SPI
  RC522.init();                 //Inizializzazione dell'RFID Reader
  Serial.println("Start");
}
  
void loop()
{
  /* Temporary loop counter */
  byte i;
   
  // Se viene letta una tessera
  if (RC522.isCard())
  {
    // Viene letto il suo codice 
    RC522.readCardSerial();
    String codiceLetto ="";
    Serial.print("Codice letto: ");
     
 
    for(i = 0; i <= 4; i++)                //Lettura del codice della scheda e composizione della stringa
    {
      codiceLetto+= String(RC522.serNum[i],HEX);
      codiceLetto.toUpperCase();
    }

    Serial.print(codiceLetto);           //Viene stampato il codice letto
    
    if(codiceLetto.equals(codiceGiusto))   
    {
      Serial.println(" --> CODICE VALIDO");  //Se il codice letto è uguale a quello atteso verrà stampato "CODICE VALIDO", altrimenti verrà stampato "CODICE ERRATO"
    
    }
    else
    {
      Serial.println(" --> CODICE ERRATO");  

    }

    
    delay(delayRead);
  
  }

Avendo a disposizione due dispositivi RFID (Portachiavi e Card), provando a passare prima uno poi l’altro, si vede che il codice discrimina il codice impostato come VALIDO a quello impostato come ERRATO.

Iscriviti al nostro canale YouTube per saperne di più! 🙂