# Parcheggio automatico con Arduino

Questa risorsa descrive come realizzare un parcheggio Intelligente, il quale gestisce automaticamente l'organizzazione dei posti liberi e occupati.

## Presentazione del progetto

Il progetto è un prototipo di parcheggio intelligente. Presenta:
* all'esterno, un display LCD sul quale viene presentato il numero di posti auto liberi oltre a informazioni di interesse generale;
* sempre esternamente, un visualizzatore luminoso composto da 1 LED RGB, che indica se il parcheggio ha ancora posti liberi o è tutto occupato;
* internamente, i posteggi sono forniti di sensori a infrarossi, i quali rilevano la presenza dell'auto e la comunicano al visualizzatore esterno.
* nell'ingresso e uscita, vengono utilizzati dei lettori RFID, per l'accesso e l'uscita dei veicoli con apposita chiave elettronica;
* nell'ingresso e uscita, tramite servomotori, se la chiave viene accettata dal lettore, le sbarre si alzano;-

## Componenti richiesti

Componenti utilizzati :
| Descrizione | Tipo | Quantità | Utilizzo |
| Arduino | Mega | 1 | Controllore |
| Sensori a infrarossi | TCRT5000 | 8 | Rilevatore posti liberi/occupati |
| LED | RGB | 8 | Posti liberi/occupati |
| Display | LCD 16X2 | 1 | Informazioni generali per l'utente |
| Servomotore | Tower Pro SG90 | 2 | Sbarre ingresso e uscita |
| Lettore RFID | RC522 | 2 | Controllo ingresso e uscita |
| RFID tag | ISO14443-A | 1 | Chiave di accesso |

### Ingresso e uscita

L'accesso e l'uscita dal parcheggio è possibile tramite una chiave magnetica e un lettore RFID.
La chiave (detta anche tag) contiene un codice univoco associato al veicolo che è autorizzato a entrare e uscire. Il tag è un trasponder passivo a radiofrequenza. Funziona come vera e propria chiave elettronica.
La lettura delle chiavi viene eseguita dal lettore RFID: un ricetrasmettitore che legge i dati contenuti nella chiave magnetica e li confronta con l'elenco dei codici autorizzati. L’antenna permette la comunicazione tra il tag e lettore.
In questo caso, avvicinando la chiave magnetica al lettore RFID, se questa contiene un codice autorizzato, si manda un comando al servomotore che alza la sbarra e permette il passaggio dell'autoveicolo, abbassandosi automaticamente dopo il passaggio del veicolo. Questo vale sia per l'ingresso, sia per l'uscita.

## Codice

Di seguito il codice che pilota un servomotore quando si accosta una chiave elettronica al lettore RFID.

### Visualizzatore luminoso di posti liberi

Il progetto prevede l'utilizzo di 8 LED RGB, per comunicare quali – degli otto parcheggi – sono liberi o occupati. Il numero di cavi necessario è pari ai controlli ($8\times 2=16$, relativi ai terminali rossi e verdi) oltre a uno comune per la massa. I LED vengono gestiti da un sistema di sensori a infrarossi, posti davanti a ciascun parcheggio, che rilevano la presenza o l'assenza di un veicolo.
Per il visualizzatore è stata realizzata una apposita maschera (stampata con stampante 3D) posta nella facciata del parcheggio, nella quale sono inseriti gli 8 LED RGB, che – in base al colore rosso o verde – indicano se il posto auto è occupato oppure no.

## Codice

Di seguito il codice che gestisce il pannello a LED collegato con i sensori a infrarossi.
Dopo aver stabilito i pin e aver definito gli output e gli input, i sensori a infrarossi cominciano la lettura, tramite la funzione analogRead, e osservano la presenza del veicolo all'interno del posto auto. Se l'infrarossi da come uscita un segnale inferiore a 600 (valore osservato tramite la lettura del monitor seriale), il posto è vuoto e di conseguenza il LED corrispondente a tale posto rimane verde, mentre in caso contrario, il LED diventa rosso.

### Display LCD

Il progetto prevede anche l'utilizzo di un display LCD, il quale, posto sulla facciata anteriore del parcheggio, fornisce agli utenti informazioni utili riguardo all'utilizzo di questo.

## Espansioni suggerite

Aggiunta di: