- Componenti richiesti
- Schema elettrico
- Programmazione di ESP8266 NodeMCU per la soluzione di parcheggio intelligente
Con la crescente popolarità delle città intelligenti, c'è sempre una richiesta di soluzioni intelligenti per ogni dominio. L'IoT ha abilitato la possibilità di Smart Cities con la sua funzionalità di controllo Internet. Una persona può controllare i dispositivi installati nella sua casa o in ufficio da qualsiasi parte del mondo utilizzando semplicemente uno smartphone o qualsiasi dispositivo connesso a Internet. Ci sono più domini in una città intelligente e Smart Parking è uno dei domini popolari nella città intelligente.
L'industria dello Smart Parking ha visto una serie di innovazioni come Smart Parking Management System, Smart Gate Control, Smart Cameras in grado di rilevare i tipi di veicolo, ANPR (Automatic Number Plate Recognition), Smart Payment System, Smart Entry System e molti altri. Oggi verrà seguito un approccio simile e verrà costruita una soluzione di parcheggio intelligente che utilizzerà un sensore a ultrasuoni per rilevare la presenza del veicolo e attivare l'apertura o la chiusura automatica del cancello. L'ESP8266 NodeMCU verrà utilizzato qui come controller principale per controllare tutte le periferiche ad esso collegate.
ESP8266 è il controller più popolare per creare applicazioni basate su IoT poiché ha il supporto integrato per il Wi-Fi per la connessione a Internet. In precedenza lo abbiamo utilizzato per realizzare molti progetti IoT come:
- Sistema di sicurezza basato su IOT
- Scatola di giunzione intelligente per automazione domestica
- Sistema di monitoraggio dell'inquinamento atmosferico basato su IOT
- Invia dati a ThingSpeak
Controlla qui tutto il progetto basato su ESP8266.
In questo sistema IoT Smart Parking, invieremo i dati al server web per verificare la disponibilità di spazio per il parcheggio dei veicoli. Qui stiamo usando Firebase come database Iot per ottenere i dati sulla disponibilità del parcheggio. Per questo dobbiamo trovare l'indirizzo host Firebase e la chiave segreta per l'autorizzazione. Se sai già di utilizzare Firebase con NodeMCU, puoi andare avanti altrimenti dovresti prima imparare a utilizzare Google Firebase Console con ESP8266 NodeMCU per ottenere l'indirizzo host e la chiave segreta.
Componenti richiesti
- ESP8266 NodeMCU
- Sensore ultrasonico
- Servomotore DC
- Sensori IR
- Display LCD i2c 16x2
- Ponticelli
Schema elettrico
Di seguito è riportato lo schema del circuito per questo sistema di parcheggio per veicoli basato su IoT. Coinvolge due sensori IR, due servomotori, un sensore ultrasonico e un LCD 16x2.
Qui l'ESP8266 controllerà il processo completo e invierà anche le informazioni sulla disponibilità del parcheggio a Google Firebase in modo che possa essere monitorato da qualsiasi parte del mondo su Internet. Due sensori IR vengono utilizzati all'ingresso e all'uscita del cancello per rilevare la presenza dell'auto e aprire o chiudere automaticamente il cancello. Il sensore IR viene utilizzato per rilevare qualsiasi oggetto inviando e ricevendo i raggi IR, ulteriori informazioni sul sensore IR qui.
Due servi fungeranno da cancello di entrata e di uscita e ruotano per aprire o chiudere il cancello. Infine un sensore a ultrasuoni viene utilizzato per rilevare se lo slot di parcheggio è disponibile o occupato e inviare i dati a ESP8266 di conseguenza. Guarda il video riportato alla fine di questo tutorial per comprendere il funzionamento completo del progetto.
Ecco come apparirà questo prototipo completo di sistema di parcheggio intelligente:
Programmazione di ESP8266 NodeMCU per la soluzione di parcheggio intelligente
Il codice completo con un video funzionante viene fornito alla fine di questo tutorial, qui spieghiamo il programma completo per comprendere il funzionamento del progetto.
Per programmare NodeMCU, basta collegare il NodeMCU al computer con un cavo micro USB e aprire l'IDE di Arduino. Le librerie sono necessarie per I2C Display e Servo Motor. Il display LCD visualizzerà la disponibilità dei parcheggi ei servomotori verranno utilizzati per aprire e chiudere i cancelli di entrata e di uscita. La libreria Wire.h verrà utilizzata per interfacciare LCD nel protocollo i2c. I pin per I2C in ESP8266 NodeMCU sono D1 (SCL) e D2 (SDA). Il database qui utilizzato sarà Firebase, quindi qui includiamo anche la libreria (FirebaseArduino.h) per lo stesso.
#includere
Quindi includi le credenziali Firebase ottenute da Google Firebase. Questi includeranno il nome host contenente il nome del progetto e una chiave segreta. Per trovare questi valori segui il tutorial precedente su Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Includere le credenziali Wi-Fi come SSID WiFi e password.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Inizializza l'LCD I2C con l'indirizzo del dispositivo (qui è 0x27) e il tipo di LCD. Includere anche i servomotori per l'ingresso e l'uscita dal cancello.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Avvia la comunicazione I2C per I2C LCD.
Wire.begin (D2, D1);
Collegare il servomotore di ingresso e di uscita ai pin D5, D6 del NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Selezionare il Trigger Pin del sensore a ultrasuoni come Output e Echo Pin come Input. Il sensore ad ultrasuoni verrà utilizzato per rilevare la disponibilità del parcheggio. Se l'auto ha occupato lo spazio, si illuminerà, altrimenti non si illuminerà.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
I due pin D0 e D4 del NodeMCU vengono utilizzati per eseguire la lettura del sensore IR. Il sensore IR fungerà da sensore del cancello di entrata e di uscita. Questo rileverà la presenza dell'auto.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Connettiti al WiFi e attendi un po 'di tempo finché non viene connesso.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Connessione a"); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); ritardo (500); }
Inizia la connessione con Firebase con host e chiave segreta come credenziali.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Iniziare LCD 16x2 I2C e la posizione del cursore impostato a 0 ° fila 0 esima colonna.
lcd.begin (); lcd.setCursor (0, 0);
Prendi la distanza dal sensore a ultrasuoni. Questo verrà utilizzato per rilevare la presenza del veicolo nel punto particolare. Inviare prima l'impulso di 2 microsecondi e poi leggere l'impulso ricevuto. Quindi convertilo in "cm". Scopri di più sulla misurazione della distanza utilizzando il sensore a ultrasuoni qui.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); durata = pulseIn (ECHO, HIGH); distanza = (durata / 2) / 29,1;
Leggere digitalmente il pin del sensore IR come sensore di ingresso e controllare se è alto. Se è alto, incrementare il numero di voci e stamparlo sul display LCD 16x2 e anche sul monitor seriale.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Car Entered ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Car Entered");
Spostare anche l'angolo del servomotore per aprire il cancello di ingresso. Modifica l'angolo in base al tuo caso d'uso.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); ritardo (5); } ritardo (2000); for (pos = 45; pos <= 140; pos + = 1) { // in incrementi di 1 grado myservos.write (pos); ritardo (5); }
E invia la lettura a Firebase utilizzando la funzione pushString della libreria Firebase.
Firebase.pushString ("/ Parking Status /", fireAvailable);
Eseguire i passaggi simili come sopra per Exit IR sensor e Exit servomotore.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Serial.print ("Car Exited ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Car Exited"); for (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); ritardo (5); } ritardo (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // in passi di 1 grado myservo.write (pos1); ritardo (5); } Firebase.pushString ("/ Parking Status /", fireAvailable); lcd.clear (); }
Verificare se l'auto è arrivata al parcheggio e se è arrivata poi il led si accende dando il segnale che il posto è pieno.
if (distanza <6) { Serial.println ("Occupied"); digitalWrite (led, HIGH); }
Altrimenti mostra che il posto è disponibile.
if (distanza> 6) { Serial.println ("Disponibile"); digitalWrite (led, LOW); }
Calcola lo spazio vuoto totale all'interno del parcheggio e salvalo nella stringa per inviare i dati a firebase.
Vuoto = allSpace - countYes; Available = String ("Available =") + String (Empty) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (Empty) + String ("/") + String (allSpace); Stampa anche i dati sull'LCD i2C. lcd.setCursor (0, 0); lcd.print (disponibile);
In questo modo è possibile monitorare la disponibilità di parcheggio online su Firebase come mostrato nell'istantanea di seguito:
Questo completa il sistema di parcheggio intelligente completo utilizzando il modulo NodeMCU ESP8266 e diverse periferiche. È possibile utilizzare altri sensori anche in sostituzione del sensore a ultrasuoni e IR. Esiste una vasta applicazione di Smart Parking System e diversi prodotti possono essere aggiunti per renderlo più intelligente. Commenta di seguito in caso di dubbi o contatta il nostro forum per ulteriore supporto.