CONTENUTO ►
RFID Arduino (Radio Frequency IDentification) è un sistema di identificazione senza contatto di un transponder (tag) che utilizza un canale di comunicazione a radiofrequenza. Il sistema è ampiamente utilizzato in molti settori: per il controllo degli accessi, la tracciabilità delle merci nelle catene di fornitura, la creazione di un sistema di accumulo di bonus, ecc. Consideriamo il collegamento del lettore di tag RFID MFRC522 al microcontrollore Arduino Uno.
Per questa attività sono necessari:
Modulo / lettore RFID RC522 datasheet, pinout
Come funziona il modulo RFID RC522? Il sistema RFID per microcontrollore Arduino è costituito da due componenti: un transponder (tag) sotto forma di scheda di plastica o portachiavi e un lettore di schede (tag reader). Il transponder è identificato da un identificatore unico che ogni tag RFID possiede. Il modulo / lettore RC522 emette onde elettromagnetiche e i tag inviano in risposta il loro numero di identificazione univoco, i dati di memoria, ecc.
Caratteristiche del modulo RFID RC522 Arduino:
- Tensione di alimentazione: 3,3 V
- Consumo di corrente: 13-26 µA
- Frequenza operativa: 13,56 MHz
- Campo di lettura: 0 – 60 mm
- Interfaccia: SPI
- Dimensioni: 40 x 60 mm
I tag RFID sono attivi e passivi (senza fonte di alimentazione incorporata) e funzionano a diverse frequenze: LF (125 – 134 kHz), HF (13,56 MHz), UHF (860 – 960 MHz). I moduli che leggono e scrivono le informazioni sui tag sono chiamati lettori (reader). Il modulo Arduino RFID RC522 è basato sul chip MFRC522, che consente di operare con tag HF (13,56 MHz).
Collegamento un modulo RFID RC522 ad Arduino
MFRC522 | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 3,3V | 3,3V | 3,3V |
MOSI | 11 | 11 | 51 |
MISO | 12 | 12 | 50 |
SCK | 13 | 13 | 52 |
SDA | 10 | 10 | 10 |
RST | 9 | 9 | 9 |
Il modulo è collegato ad Arduino tramite l’interfaccia SPI; lo schema di collegamento è mostrato nella figura precedente. Ricordiamo che il bus SPI sulle schede Arduino Uno e Mega si trova su porte diverse. Per lavorare con il modulo RC522, si utilizza la famosa libreria MFRC522.h. Dopo aver collegato il lettore di schede al microcontrollore, caricare il seguente codice per ottenere il tipo e l’UID del tag (identificatore univoco della chiave).
Programma Arduino per ottenere l’UID (identificatore unico)
#include "SPI.h" #include "MFRC522.h" #define RST_PIN 9 // RES pin #define SS_PIN 10 // SDA (SS) pin MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); delay(4); mfrc522.PCD_DumpVersionToSerial(); Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks...")); } void loop() { // reset del ciclo quando nessuna scheda è inserita nel lettore if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } if ( ! mfrc522.PICC_ReadCardSerial()) { return; } // visualizza l'UID sulla porta seriale di Arduino IDE mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }
Spiegazione del codice per ottenere l’UID (identificatore unico):
- la porta seriale visualizza l’UID (identificatore univoco) dell’etichetta quando si presenta la carta o il portachiavi etichettato al lettore di carte;
- per far funzionare lo sketch è necessario installare anche SPI.h.
Controllo degli accessi basato su badge con RFID RC522
Consideriamo un esempio che può essere utilizzato per creare un sistema completo di accesso o di accensione di un relè a stato solido. Il programma esegue la scansione di un identificativo univoco del tag; se l’UID della tessera corrisponde al valore impostato nel programma (cardID), l’accesso sarà consentito. Se viene avvicinato al lettore un tag sconosciuto, l’accesso viene negato e si accende un LED rosso o verde.
Programma Arduino per degli accessi basato su badge con RFID
#include "SPI.h" #include "MFRC522.h" #define RST_PIN 9 // RES pin #define SS_PIN 10 // SDA (SS) pin byte readCard[4]; String cardID = "20C3935E"; // sostituire con l'ID del tag String tagID = ""; MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { while (getID()) { if (tagID == cardID) { Serial.println("Access Granted!"); digitalWrite(5, LOW); digitalWrite(6, HIGH); } else { Serial.println("Access Denied!"); } Serial.print("ID: "); Serial.println(tagID); delay(2000); digitalWrite(6, LOW); } } boolean getID() { if (! mfrc522.PICC_IsNewCardPresent()) { return false; } if (! mfrc522.PICC_ReadCardSerial()) { return false; } tagID = ""; for (uint8_t i = 0; i < 4; i++) { tagID.concat(String(mfrc522.uid.uidByte[i], HEX)); } tagID.toUpperCase(); mfrc522.PICC_HaltA(); return true; }
Spiegazione del codice per degli accessi basato su badge con Arduino:
- invece di un LED verde, è possibile collegare un relè elettromagnetico ad Arduino e utilizzarlo per controllare, ad esempio, un campanello;
- il valore del cardID nello sketch deve essere impostato sul proprio valore, ottenuto dal tag nel primo programma.
Conclusione. Il modulo Arduino RC522 è progettato per generare un campo elettromagnetico che viene utilizzato per comunicare con i tag RFID. Il lettore può comunicare con il microcontrollore Arduino con una velocità massima di trasferimento dati fino a 10 Mbit al secondo attraverso l’interfaccia periferica seriale SPI o il protocollo di comunicazione I2C (porte SDA e SCL), a cui possono essere collegati contemporaneamente fino a 128 dispositivi.
Lascia un commento