# Robotica educativa/Lettore RFID

Robotica educativa

## Introduzione

* PrerequisitiRobotica educativa/Prerequisiti
* Etica della roboticaRobotica educativa/Etica della robotica

## Robotica con Arduino

* Le basi dell'informaticaRobotica educativa/Le basi dell'informatica
* Le basi dell'elettronicaRobotica educativa/Le basi dell'elettronica
* Esercizi di elettrotecnicaRobotica educativa/Esercizi di elettrotecnica
* Sicurezza elettricaRobotica educativa/Sicurezza elettrica

## Primi passi nella robotica

* Invio di un SOSRobotica educativa/Invio di un SOS
* Che tempo che faRobotica educativa/Temperatura e umidità
* TermostatoRobotica educativa/Termostato
* Misurazione della distanzaRobotica educativa/Misurazione della distanza
* Sensore di parcheggioRobotica educativa/Sensore di parcheggio
* Gestione di un servomotoreRobotica educativa/Servomotore
* TelepassRobotica educativa/Telepass
* Dal computer ad ArduinoRobotica educativa/Dal computer ad Arduino
* Musica maestro!Robotica educativa/Musica maestro
* Lettore RFIDRobotica educativa/Lettore RFID
Modifica il sommario
Quando si legge il termine RFID si intende identificazione a radiofrequenza (dall'inglese Radio-Frequency IDentification, da cui l'acronimo).

## Ingredienti

Sebbene gli utilizzi siano tantissimi, per semplificare, è possibile pensare al sistema come una chiave elettronica che apre una porta. Per creare un sistema RFID (indipendentemente dal suo utilizzo) occorrono tre elementi fondamentali:
* una (o più) etichette RFID (note anche come tag o transponder), le chiavi che possono essere riconosciute o meno;
* un dispositivo in grado di leggerne il contenuto (una sequenza di numeri), il quale può corrispondere alla serratura;
* infine, occorre un microcontrollore che gestisca il lettore e – a seconda del dato letto – esegua determinate azioni.
Un passo alla volta.
Nei kit Arduino, spesso sono presenti tre oggetti:
* due tag RFID (uno simile a una carta di credito e un secondo facile da inserire in un portachiavi), come in figura;
* il dispositivo RFID-RC522 in grado di leggere (e scrivere, ma questa è un'altra storia) i dati dei tag nelle vicinanze (al di sotto dei 10 cm).
Con queste (e altre) smart-card è possibile testare il circuito, osservando:
* quali vengono riconosciute dal microcontrollore (perché operanti alla frequenza di 13,56 MHz) e quali no;
* simulare il concetto di accesso consentito/accesso negato;
* azionare qualsiasi dispositivo, una volta inserita la chiave elettronica corretta.

## Codice base

In questo paragrafo non si azioneranno dispositivi in seguito all'accostamento di un tag al sensore. Una volta letto il dato contenuto nel tag, questo verrà inviato alla porta seriale, oppure – se non è possibile leggerlo – verrà inviato un messaggio di errore.
Nelle espansioni suggerite verranno suggeriti numerosi utilizzi di questo codice.

### Lettura del tag

La funzione leggiRFID necessita di alcune spiegazioni preliminari.
È in formato String, questo significa che restituirà una serie di caratteri di testo acquisiti dal tag della scheda. Questi dati verranno restituiti dalla variabile content, inizialmente vuota.
Essendo una funzione non complessa, ma che introduce elementi non mostrati in precedenza verrà spiegata passo, passo.
* Nella linea 39 si crea la variabile che ospiterà il contenuto del tag letto.
* Nella linea 42 si crea un ciclo che va dal primo byte all'ultimo, pari alla dimensione del codice da acquisire: mfrc522.uid.size.
* Le linee 44 e 46 concatenano (aggiungono in coda) i byte via, via, letti.
* La linea 44 è un if, realizzato nella forma condizione ? parte vera : parte falsa. Così, può essere inserita in qualsiasi funzione. Se il byte è minore di 16 (in esadecimale, lo specifica indirettamente, scrivendo 0x10) concatena il testo " 0", altrimenti soltanto uno spazio (" ").
* Nella linea 46, viene concatenato il byte letto (mfrc522.uid.uidByte[i]) dopo averlo convertito nel formato String. Pertanto si avranno sempre due cifre esadecimali per ogni ciclo, da 0x00 a 0xFF, grazie alla linea 44, precedute da uno spazio.
* Terminata la costruzione della stringa, la linea 49 restituisce il dato contenuto nel tag RFID.

## Schema di montaggio

Lo schema di montaggio è – allo stesso tempo – semplice e complesso. Semplice, perché basta seguirlo (sono sette cavi, di cui due di alimentazione) e il tutto verrà gestito da librerie. Complesso perché, se si vuole far un uso avanzato con i lettori a radiofrequenza, bisogna capire perché sono state fatte determinate scelte.
Il circuito proposto è il seguente:

## Espansioni suggerite

* La prima cosa che si può fare, la più semplice in assoluto, è accendere e spegnere un led quando si accosta un tag con codice autorizzato.
* Per chi ha più fantasia si può sostituire il led con un servomotore: in questo modo il tag può aprire la sbarra di un parcheggio in miniatura.
* Sempre secondo il medesimo principiò si può utilizzare un relè e accendere/spegnere le luci di casa.
* Sempre con un relè e un solenoide, si può aprire una serratura.
* Infine, con un lettore MP3 per Arduino si può riprodurre la propria playlist preferita.

## Note

* ↑ Attenzione. Il fatto che una smart-card non venga riconosciuta, non significa che non sia un RFID. Potrebbe sì, lavorare a frequenze o con protocolli differenti, ma potrebbe anche essere un sistema pensato per dispositivi simili ma che richiede una diversa tecnologia per operare. Un esempio è la tessera dei trasporti pubblici di Valencia che viene letta correttamente, ma non quelle londinesi o irlandesi, a titolo di esempio.
* ↑ Le smart card tipicamente hanno un codice pari a 4 byte (oltre 4 miliardi di combinazioni possibili). Infatti uid sta per identificativo univoco. Se si tenta di leggere una VISA o un bancomant la cosa funziona e si noterà che verranno letti 7 byte: pertanto le possibili combinazioni sono un po' più alte, pari a 72.057.594.037.927.936.
* ↑ Per chi non lo avesse mai incontrato, il codice esadecimale è un raggruppamento di quattro cifre binarie. Infatti, $2^{4}=16$ e, per i valori da 10 a 15, si utilizzano le lettere dalla A alla F. Pertanto un byte (un insieme di 8 bit) va da 0 a 255 (da 0x00 a 0xFF). È un metodo compatto per visualizzare cifre binarie. Infatti, con 4 byte (8 simboli) si esprimono valori da 0 a 4.294.967.295.
* ↑ Quest'ultima cosa va fatto sotto la supervisione di un utente esperto e soltanto se si è ben consapevoli di cosa si sta facendo. Occorre saper gestire un impianto in media tensione.
* ↑ Anche in questo caso, prima di gettare alle ortiche la meccanica, è bene ricordarsi che senza tensione di rete, o con batterie scariche quella porta occorrerà sfondarla.