Arduino e il modulo contactless rfid 522
Benvenuti su 9minuti.it, oggi vedremo come usare il modulo contactless rfid 522 con Arduino Uno per autorizzare o meno tramite card o badge rfid uno dei nostri progetti. Ovviamente è usabile anche con qualsiasi altro modello di scheda, attenzione però che potrebbero cambiare i pin da usare!
Il modo più semplice per utilizzare il modulo è scaricando la libreria QUI.
Ci tengo a precisare per una questione di trasparenza, che la libreria in questione non so da chi sia stata realizzata e l’ho trovata in giro per il web tempo fa. Nemmeno lì veniva indicata la fonte.
Quella disponibile dall’ide di Arduino è sì più completa e aggiornata, ma è piuttosto difficile distriscarsi fra le mille opzioni.

I collegamenti
Di seguito lo schema su come collegare il modulo contactless rfid 522 ad Arduino.

Chiaramente voi ancora non conoscete qual è il codice della vostra tessera.
Non fa nulla, caricate lo sketch e avvicinatela al lettore. Vi verrà stampato a video il codice e la scritta Access denied perché difficilmente il vostro codice coinciderà con quello della mia tessera.
/*
PINOUT:
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>
#define SDA_DIO 10 // 53 Arduino Mega
#define RESET_DIO 9
RFID RC522(SDA_DIO, RESET_DIO);
String readCode;
String validCode = "25d24d9a2";
byte i;
void setup()
{
Serial.begin(9600);
SPI.begin();
RC522.init();
Serial.println("Waiting for a card");
Serial.println();
}
void loop()
{
if (RC522.isCard())
{
RC522.readCardSerial();
Serial.print("Code: ");
for (i = 0; i <= 4; i++)
{
readCode += String (RC522.serNum[i], HEX);
}
Serial.println(readCode);
if (readCode.equals(validCode) == true) {
Serial.println("Valid card!");
}
else {
Serial.println("Access denied!");
}
Serial.println();
readCode = "";
delay(1000);
}
}
14 – Include della libreria SPI.h
15 – Include della libreria RFID.h
17 – Definiamo il pin 10 con Arduino Uno o il 53 con Arduino Mega
18 – Definiamo il pin 9 come pin per il reset
20 – Creiamo l’oggetto RC522 di tipo RFID usando come parametri le due define precedenti
22 – Stringa dove salveremo il codice letto
23 – Stringa dove dobbiamo salvare il nostro codice valido della carta o del badge
25 – Dichiarazione della variabile i usata come contatore del ciclo for
29 – Usiamo il metodo begin dell’oggetto Serial per far partire la comunicazione serial con baud rate di 9600
30 – Usiamo il metodo begin dell’oggeto SPI per far partire la comunicazione SPI
34 – Usiamo il metodo init() dell’oggetto RC522 che lo inizializza
39 – Se c’è una carta sul lettore
41 – Leggo il numero sulla carta
43 – Stampa via monitor seriale
45 – ciclo for che viene eseguito cinque volte
47 – I valori esadecimali letti vengono salvati nella stringa readCode
49 – Stampa del codice via monitor seriale
51 – Viene utilizzato il metodo equals che consente di verificare se la stringa inserita come parametro è uguale a quella da cui è stato chiamato
53, 56 – Stampe seriali
61 – readCode viene azzerato
62 – Delay di un secondo fra ogni esecuzione del loop
Una volta che avete scoperto qual è il vostro codice potete inserirlo tra i doppi apici.
String validCode = "25d24d9a2";