Odată cu popularitatea crescândă a orașelor inteligente, există întotdeauna o cerere de soluții inteligente pentru fiecare domeniu. IoT a permis posibilitatea orașelor inteligente cu ajutorul funcției de control prin internet. O persoană poate controla dispozitivele instalate în casa sau la biroul său de oriunde din lume, doar folosind un smartphone sau orice alte dispozitive conectate la internet. Există mai multe domenii într-un oraș inteligent, iar Smart Parking este unul dintre domeniile populare din Smart City.
Industria parcării inteligente a văzut o serie de inovații, cum ar fi sistemul de gestionare a parcării inteligente, controlul porții inteligente, camerele inteligente care pot detecta tipurile de vehicule, ANPR (recunoașterea automată a plăcilor de înmatriculare), sistemul de plată inteligent, sistemul de intrare inteligent și multe altele. Astăzi va fi urmată o abordare similară și va fi construită o soluție inteligentă de parcare care va utiliza un senzor cu ultrasunete pentru a detecta prezența vehiculului și a declanșa deschiderea sau închiderea automată a porții. ESP8266 NodeMCU va fi utilizat aici ca controler principal pentru a controla toate perifericele atașate la acesta.
ESP8266 este cel mai popular controler pentru a construi aplicații bazate pe IoT, deoarece are suport încorporat pentru Wi-Fi pentru conectarea la internet. Am folosit-o anterior pentru a construi multe proiecte IoT precum:
- Sistem de securitate bazat pe IOT
- Cutie de joncțiune inteligentă pentru automatizare la domiciliu
- Sistem de monitorizare a poluării aerului bazat pe IOT
- Trimiteți date către ThingSpeak
Verificați aici tot proiectul bazat pe ESP8266.
În acest sistem inteligent de parcare IoT, vom trimite date către serverul web pentru a căuta disponibilitatea spațiului pentru parcarea vehiculelor. Aici folosim firebase ca bază de date Iot pentru a obține datele privind disponibilitatea parcării. Pentru aceasta, trebuie să găsim adresa gazdă Firebase și cheia secretă pentru autorizare. Dacă știți deja utilizarea firebase cu NodeMCU, atunci puteți merge mai departe, ar trebui mai întâi să învățați să utilizați Google Firebase Console cu ESP8266 NodeMCU pentru a obține adresa gazdei și cheia secretă.
Componente necesare
- ESP8266 NodeMCU
- Senzor cu ultrasunete
- Servomotor DC
- Senzori IR
- Afișaj LCD 16x2 i2c
- Jumpers
Diagrama circuitului
Diagrama circuitului pentru acest sistem de parcare a vehiculelor bazat pe IoT este prezentată mai jos. Acesta implică doi senzori IR, două servo-motoare, un senzor cu ultrasunete și un LCD de 16x2.
Aici ESP8266 va controla procesul complet și va trimite, de asemenea, informațiile privind disponibilitatea parcării către Google Firebase, astfel încât să poată fi monitorizat de oriunde din lume pe internet. La poarta de intrare și ieșire sunt utilizați doi senzori IR pentru a detecta prezența mașinii și a deschide sau închide automat poarta. Senzorul IR este utilizat pentru a detecta orice obiect prin trimiterea și primirea razelor IR. Aflați mai multe despre senzorul IR aici.
Două servouri vor acționa ca poartă de intrare și ieșire și se rotesc pentru a deschide sau închide poarta. În cele din urmă, un senzor cu ultrasunete este utilizat pentru a detecta dacă slotul de parcare este disponibil sau ocupat și pentru a trimite datele la ESP8266 în consecință. Verificați videoclipul oferit la sfârșitul acestui tutorial pentru a înțelege funcționarea completă a proiectului.
Acesta este modul în care va arăta acest prototip complet de parcare inteligentă:
Programarea ESP8266 NodeMCU pentru soluția Smart Parking
Codul complet cu un videoclip de lucru este dat la sfârșitul acestui tutorial, aici explicăm programul complet pentru a înțelege funcționarea proiectului.
Pentru programarea NodeMCU, conectați NodeMCU la computer cu un cablu Micro USB și deschideți Arduino IDE. Bibliotecile sunt necesare pentru afișajul I2C și servomotor. Ecranul LCD va afișa disponibilitatea spațiilor de parcare, iar motoarele servo vor fi utilizate pentru a deschide și închide porțile de intrare și ieșire. Wire.h biblioteca va fi folosit pentru a interfața LCD în protocolul I2C. Pinii pentru I2C din ESP8266 NodeMCU sunt D1 (SCL) și D2 (SDA). Baza de date utilizată aici va fi Firebase, deci aici includem și biblioteca (FirebaseArduino.h) pentru aceeași.
#include
Apoi includeți acreditările Firebase obținute de la Google Firebase. Acestea vor include numele gazdei care conține numele proiectului dvs. și o cheie secretă. Pentru a găsi aceste valori, urmați tutorialul anterior de pe Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Includeți acreditările Wi-Fi, cum ar fi WiFi SSID și parola.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Inițializați ecranul LCD I2C cu adresa dispozitivului (aici este 0x27) și tipul ecranului LCD. Includeți și servomotorii pentru poarta de intrare și ieșire.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo miservo; Servo myservo1;
Porniți comunicația I2C pentru ecranul LCD I2C.
Wire.begin (D2, D1);
Conectați motorul de intrare și de ieșire la pinii D5, D6 ai NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Selectați Pinul de declanșare al senzorului ultrasonic ca ieșire și Echo Pin ca intrare. Senzorul cu ultrasunete va fi utilizat pentru a detecta disponibilitatea locului de parcare. Dacă Mașina a ocupat spațiul, atunci va străluci altfel nu va străluci.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
Cei doi pini D0 și D4 ai NodeMCU sunt utilizați pentru a face citirea senzorului IR. Senzorul IR va acționa ca senzor de poartă de intrare și ieșire. Acest lucru va detecta prezența mașinii.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Conectați-vă la WiFi și așteptați un timp până se conectează.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print („Conectarea la”); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); întârziere (500); }
Începeți conexiunea cu Firebase cu gazdă și cheie secretă ca acreditări.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Inceput LCD 16x2 I2C și poziția cursorului set la 0 th rând 0 th coloană.
lcd.begin (); lcd.setCursor (0, 0);
Luați distanța de la senzorul cu ultrasunete. Aceasta va fi utilizată pentru a detecta prezența vehiculului în locul respectiv. Mai întâi trimiteți impulsul de 2 microsecunde și apoi citiți impulsul primit. Apoi convertiți-l în „cm”. Aflați mai multe despre măsurarea distanței folosind senzorul cu ultrasunete aici.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); durata = pulseIn (ECHO, HIGH); distanță = (durata / 2) / 29,1;
Citiți digital pinul senzorului IR ca senzor de intrare și verificați dacă este ridicat. Dacă este mare, numărați numărul de intrări și imprimați-l pe afișajul LCD de 16x2 și, de asemenea, pe monitorul serial.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Mașină introdusă ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print („Mașină introdusă”);
De asemenea, deplasați unghiul servomotorului pentru a deschide poarta de intrare. Schimbați unghiul în funcție de cazul dvs. de utilizare.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); întârziere (5); } întârziere (2000); for (pos = 45; pos <= 140; pos + = 1) { // în pași de 1 grad myservos.write (pos); întârziere (5); }
Și trimiteți citirea la firebase utilizând funcția pushString a bibliotecii Firebase.
Firebase.pushString ("/ Stare parcare /", fireAvailable);
Faceți pași similari cu cei de mai sus pentru senzorul IR de ieșire și servomotorul de ieșire.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countDa--; Serial.print ("Mașină ieșită ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print („Mașină ieșită”); pentru (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); întârziere (5); } întârziere (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // în pași de 1 grad myservo.write (pos1); întârziere (5); } Firebase.pushString („/ Stare parcare /”, fireAvailable); lcd.clear (); }
Verificați dacă mașina a ajuns la locul de parcare și dacă a sosit, apoi a luminat luminos, dând semnalul că locul este plin.
if (distanță <6) { Serial.println ("Ocupat"); digitalWrite (led, HIGH); }
Altfel arată că spotul este disponibil.
if (distanță> 6) { Serial.println ("Disponibil"); digitalWrite (led, LOW); }
Calculați spațiul gol total din parcare și salvați-l în șir pentru a trimite datele către firebase.
Goli = allSpace - countDa; Disponibil = Șir ("Disponibil =") + Șir (Gol) + Șir ("/") + Șir (allSpace); fireAvailable = String ("Available =") + String (Empty) + String ("/") + String (allSpace); De asemenea, imprimați datele pe ecranul LCD i2C. lcd.setCursor (0, 0); lcd.print (Disponibil);
Acesta este modul în care disponibilitatea parcării poate fi urmărită online pe Firebase, așa cum se arată în instantaneul de mai jos:
Aceasta finalizează sistemul complet de parcare inteligentă utilizând modulul ESP8266 NodeMCU și diferite periferice. Puteți utiliza și alți senzori în schimbul senzorului ultrasonic și IR. Există o vastă aplicație a sistemului Smart Parking și pot fi adăugate diferite produse pentru ao face mai inteligent. Comentează mai jos dacă ai vreo îndoială sau accesează forumul nostru pentru mai multă asistență.