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ù! 🙂