In questo articolo si imparerà ad utilizzare il modulo RFID.
RFID è l’acronimo di Radio Frequency Identification ed è un sistema di trasferimento dati su breve distanza. La caratteristica principale consiste nel poter alimentare solo uno dei due terminali.
Tramite tale feature il terminale passivo può essere utilizzato in situazioni per le quali è impossibile fornire energie, come ad esempio, nei chip utilizzati per identificare i cani oppure nei sistemi di pagamento contactless. Sono tantissimi i prodotti che utilizzano tale sistema.
Il terminale attivo è in grado di leggere e modificare i dati presenti all’interno del terminale passivo. Tramite la vasta area racchiusa da un’antenna incorporata sarà possibile captare il segnale del terminale passivo.
Esistono numerosi tipi di moduli passivi, dai più semplici, in grado di segnalare la loro presenza (di solito utilizzati nei sistemi antitaccheggio) a quelli più complessi, dotati non solo di un ID (unico per ogni modulo passivo) ma anche di memorie incorporate nelle quali possono essere inseriti dati e storia dell’oggetto in cui sono associati. Inoltre esistono anche terminali passivi alimentati.
Il modulo RC522 presenta parecchie componenti interne. Vi è l’antenna, vari led, resistenze e condensatori, oltre ad un oscillatore quarzato ed un chip. Il sistema è in grado di elaborare i segnali raccolti dall’antenna e trasformarli in impulsi digitali, leggibili dalla board arduino tramite una specifica libreria.
Per quanto concerne la connettività i pin del modulo RC522 devono essere collegati a porte fisse di Arduino (11,12,13 per la board Arduino Uno) poiché la loro posizione è predefinita all’interno della libreria da utilizzare.
In questo articolo realizzeremo un progetto tramite il quale sarà possibile verificare se il proprio terminale passivo sia letto correttamente dal modulo RC522 .
I materiali da utilizzare sono i seguenti:
- Arduino Uno R3
- Modulo RC522 e il corrispettivo terminale passivo
- Breadboard e cavi di collegamento
- 2x led
- 2x resistenze da 220 ohm
Il diagramma di collegamento è il seguente.
Prestare attenzione ai collegamenti, come detto in precedenza vi è data la necessità di collegamenti su pin fissi. Inoltre il modulo si alimenta tramite la 3.3 V e non dalla classica 5V.
Il codice è il seguente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#include <MFRC522.h> #define GREEN_LED_PIN 2 #define RED_LED_PIN 3 MFRC522 rfid(10, 9); String users[] = {"37ade145"}; int usersSize = sizeof(users)/sizeof(String); void setup(){ SPI.begin(); rfid.PCD_Init(); pinMode(GREEN_LED_PIN, OUTPUT); pinMode(RED_LED_PIN, OUTPUT); } void loop(){ if(rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()){ String uid = getUID(); if(checkUID(uid)){ blinkLed(GREEN_LED_PIN, 2000, 1); }else{ blinkLed(RED_LED_PIN, 400, 2); } } delay(10); } String getUID(){ String uid = ""; for(int i = 0; i < rfid.uid.size; i++){ uid += rfid.uid.uidByte[i] < 0x10 ? "0" : ""; uid += String(rfid.uid.uidByte[i], HEX); } rfid.PICC_HaltA(); return uid; } bool checkUID(String uid){ for(int i = 0; i < usersSize; i++){ if(users[i] == uid){ return true; } } return false; } void blinkLed(int led, int duration, int repeat){ for(int i = 0; i < repeat; i++){ digitalWrite(led, HIGH); delay(duration/2); digitalWrite(led, LOW); delay(duration/2); } } |
Una volta caricato il codice basta fare delle prove e verificare se una volta utilizzato il terminale passivo giusto il led verde si accende.
Per acquistare il modulo RFID RC522 clicca qui.
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
Seguici per non perdere le prossime novità!