Parcheggio automatico con Arduino: differenze tra le versioni
Nessun oggetto della modifica |
→Componenti richiesti: Presentazione del progetto |
||
Riga 12: | Riga 12: | ||
<!-- Non scrivere sopra questa linea --> |
<!-- Non scrivere sopra questa linea --> |
||
Questa risorsa descrive come realizzare un ''' |
Questa risorsa descrive come realizzare un '''parcheggio Intelligente''', il quale gestisce automaticamente l'organizzazione dei posti liberi e occupati. |
||
== Presentazione del progetto == |
== Presentazione del progetto == |
||
Il progetto è un prototipo di parcheggio intelligente. Presenta: |
|||
Il progetto volge alla realizzazione di un prototipo di parcheggio intelligente. Esso presenta all'esterno un display LCD sul quale viene presentato il numero di posti auto liberi e un visualizzatore luminoso composto da 8 LED RGB, che mostra i posti disponibili e quelli occupati. Al suo interno invece i posteggi sono forniti di sensori a infrarossi che rilevano la presenza dell'auto e la comunicano con il visualizzatore esterno. Per l'ingresso e l'uscita dal parcheggio, vengono utilizzati dei sensori RFID reader, che permettono l'apertura della sbarra (tramite un servomotore), solo con l'apposita chiave elettronica. |
|||
* 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 8 LED RGB, che mostrano quali posti sono disponibili e occupati; |
|||
* nell'ingresso e uscita, vengono utilizzati dei [[w:Identificazione a radiofrequenza|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; |
|||
* internamente, i posteggi sono forniti di sensori a infrarossi, i quali rilevano la presenza dell'auto e la comunicano al visualizzatore esterno. |
|||
== Componenti richiesti == |
== Componenti richiesti == |
||
Riga 22: | Riga 28: | ||
!Tipo |
!Tipo |
||
!Quantità |
!Quantità |
||
!Utilizzo |
|||
|- |
|- |
||
|Arduino |
|Arduino |
||
|Mega |
|Mega |
||
|1 |
|1 |
||
|Controllore |
|||
|- |
|- |
||
|Sensori a infrarossi |
|Sensori a infrarossi |
||
|TCRT5000 |
|TCRT5000 |
||
|8 |
|8 |
||
|Rilevatore posti liberi/occupati |
|||
|- |
|- |
||
|LED |
|LED |
||
|RGB |
|RGB |
||
|8 |
|8 |
||
|Posti liberi/occupati |
|||
|- |
|- |
||
|Display |
|Display |
||
|LCD 16X2 |
|LCD 16X2 |
||
|1 |
|1 |
||
|Informazioni generali per l'utente |
|||
|- |
|- |
||
|Servomotore |
|Servomotore |
||
|Tower Pro SG90 |
|Tower Pro SG90 |
||
|2 |
|2 |
||
|Sbarre ingresso e uscita |
|||
|- |
|- |
||
|Lettore RFID |
|Lettore RFID |
||
|RC522 |
|RC522 |
||
|2 |
|2 |
||
|Controllo ingresso e uscita |
|||
|- |
|- |
||
|RFID tag |
|RFID tag |
||
|ISO14443-A |
|ISO14443-A |
||
|1 |
|1 |
||
|Chiave di accesso |
|||
|} |
|} |
||
=== Ingresso e uscita === |
=== Ingresso e uscita === |
||
[[File:RFID-RC522.jpg|miniatura|221x221px|Lettore RFID]] |
[[File:RFID-RC522.jpg|miniatura|221x221px|Lettore RFID]] |
||
L'accesso e l'uscita dal parcheggio è possibile tramite una '''chiave magnetica''' e un '''lettore |
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 [[w:Trasponder|trasponder]] passivo a radiofrequenza. Funziona come vera e propria chiave elettronica. |
La chiave (detta anche tag) contiene un codice univoco associato al veicolo che è autorizzato a entrare e uscire. Il tag è un [[w:Trasponder|trasponder]] passivo a radiofrequenza. Funziona come vera e propria chiave elettronica. |
||
Riga 65: | Riga 79: | ||
[[File:RFID_circuit.svg|centro|senza_cornice|550x550px|Schema elettrico del circuito di apertura con RFID]] |
[[File:RFID_circuit.svg|centro|senza_cornice|550x550px|Schema elettrico del circuito di apertura con RFID]] |
||
== Codice == |
|||
Di seguito il codice che pilota un servomotore quando si accosta una chiave elettronica al lettore RFID.<syntaxhighlight lang="arduino" line="1"> |
Di seguito il codice che pilota un servomotore quando si accosta una chiave elettronica al lettore RFID.<syntaxhighlight lang="arduino" line="1"> |
||
#include <Servo.h> |
#include <Servo.h> |
||
Riga 153: | Riga 168: | ||
Per il visualizzatore è stata realizzata una apposita [[Utente:Hackerino3/Parcheggio(progettazione 3D)|maschera (stampata con stampante 3D)]] nella quale sono inseriti gli 8 LED RGB, che – in base al colore rosso o verde – indicano se il posto auto è occupato oppure no. |
Per il visualizzatore è stata realizzata una apposita [[Utente:Hackerino3/Parcheggio(progettazione 3D)|maschera (stampata con stampante 3D)]] nella quale sono inseriti gli 8 LED RGB, che – in base al colore rosso o verde – indicano se il posto auto è occupato oppure no. |
||
== Espansioni suggerite == |
|||
Aggiunta di: |
Aggiunta di: |
||
Versione delle 10:52, 8 mar 2022
Questa risorsa è stata scritta dagli studenti dell'Istituto ITIS "Enrico Mattei" di Urbino, della classe 4A/EN, Omiccioli Matteo, Marzi Filippo, Sasha Fasolo Massoli, Daniel Gostoli, Nicolas Mangani e Andrea Piergiovanni nell'a.s. 2021/2022, all'interno del corso di Sistemi automatici per le superiori 2.
Per favore, prima di apportare modifiche, attendi sino alla fine dell'anno scolastico (termina il 30 giugno 2022) oppure contatta il docente di riferimento Giacomo Alessandroni nel caso venissero rilevati contenuti non in linea con le linee guida della comunità. Se leggi questo avviso ad anno scolastico concluso puoi rimuoverlo. |
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 8 LED RGB, che mostrano quali posti sono disponibili e occupati;
- 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;
- internamente, i posteggi sono forniti di sensori a infrarossi, i quali rilevano la presenza dell'auto e la comunicano al visualizzatore esterno.
Componenti richiesti
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.
#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
#define chiave "14 36 E6 E9"
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo sbarra;
int posizioneSbarra = 180;
int pinSbarra = 7;
int velSbarra = 20; // Velocità con cui si movimenta la sbarra
void setup() {
Serial.begin(9600);
Serial.println("Accosta la chiave RFID");
sbarra.attach(pinSbarra);
sbarra.write(posizioneSbarra);
SPI.begin();
mfrc522.PCD_Init();
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
}
void loop() {
// Non e' presente nessuna carta
if (!mfrc522.PICC_IsNewCardPresent()){
return;
}
// Non sta leggendo nessuna carta
if (!mfrc522.PICC_ReadCardSerial()){
return;
}
// Lettura chiave elettronica
String uid = leggiRFID();
Serial.println(uid);
// Se la chiave è corretta alza la sbarra
if(uid.substring(1) == chiave) {
Serial.println("V");
mov();
}
// Esegue un test ogni 100 ms
delay(100);
}
// Subroutine di lettura carta
String leggiRFID() {
String content = "";
byte letter;
// Scrive nella porta seriale il codice della chiave
Serial.print("UID: ");
for (byte i = 0; i < mfrc522.uid.size; i++){
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase();
return content;
}
// Movimentazione sbarra
void mov() {
// Alza la sbarra
delay(3000);
for (posizioneSbarra = 180; posizioneSbarra >= 90; posizioneSbarra--) {
sbarra.write(posizioneSbarra);
delay(velSbarra);
}
// Abbassa la sbarra
delay(5000);
for (posizioneSbarra = 90; posizioneSbarra <= 180; posizioneSbarra++) {
sbarra.write(posizioneSbarra);
delay(velSbarra);
}
}
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 (, relativi ai terminali rossi e verdi) oltre a uno comune per la massa.
Per il visualizzatore è stata realizzata una apposita maschera (stampata con stampante 3D) nella quale sono inseriti gli 8 LED RGB, che – in base al colore rosso o verde – indicano se il posto auto è occupato oppure no.
Espansioni suggerite
Aggiunta di: