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";