Med økende popularitet til Smart Cities, er det alltid et behov for smarte løsninger for hvert domene. IoT har aktivert muligheten for Smart Cities med den via internettkontrollfunksjonen. En person kan kontrollere enhetene som er installert hjemme eller på kontoret hvor som helst i verden ved å bare bruke en smarttelefon eller andre Internett-tilkoblede enheter. Det er flere domener i en smart by, og Smart Parking er et av det populære domenet i Smart City.
Smart Parking-industrien har sett en rekke innovasjoner som Smart Parking Management System, Smart Gate Control, Smart Cameras som kan oppdage kjøretøystyper, ANPR (Automatic Number Plate Recognition), Smart Payment System, Smart Entry System og mange flere. I dag vil lignende tilnærming bli fulgt, og en smart parkeringsløsning vil bli bygget som vil bruke en ultralydssensor til å oppdage kjøretøyets tilstedeværelse og utløse porten til å åpne eller lukke automatisk. ESP8266 NodeMCU vil bli brukt her som hovedkontroller for å kontrollere alle eksterne enheter som er koblet til den.
ESP8266 er den mest populære kontrolleren for å bygge IoT-baserte applikasjoner, da den har innebygd støtte for Wi-Fi for å koble til internett. Vi har tidligere brukt det til å bygge mange IoT-prosjekter som:
- IOT-basert sikkerhetssystem
- Smart koblingsboks for hjemmeautomatisering
- IOT-basert overvåkingssystem for luftforurensning
- Send data til ThingSpeak
Sjekk alt ESP8266-basert prosjekt her.
I dette IoT Smart Parking System vil vi sende data til webserveren for å se etter tilgjengeligheten av plass til bilparkering. Her bruker vi firebase som Iot-database for å få data om parkeringstilgjengelighet. For dette må vi finne Firebase-vertsadressen og den hemmelige nøkkelen for autorisasjon. Hvis du allerede vet å bruke firebase med NodeMCU, kan du gå videre ellers, bør du først lære å bruke Google Firebase Console med ESP8266 NodeMCU for å få vertsadressen og den hemmelige nøkkelen.
Komponenter kreves
- ESP8266 NodeMCU
- Ultralydssensor
- DC servomotor
- IR-sensorer
- 16x2 i2c LCD-skjerm
- Gensere
Kretsdiagram
Kretsskjema for dette IoT-baserte parkeringssystemet er gitt nedenfor. Det involverer to IR-sensorer, to servomotorer, en ultralydssensor og en 16x2 LCD.
Her styrer ESP8266 hele prosessen og sender også informasjon om parkeringstilgjengelighet til Google Firebase slik at den kan overvåkes fra hvor som helst i verden over internett. To IR-sensorer brukes ved inngangs- og utgangsporten for å oppdage bilens tilstedeværelse og automatisk åpne eller lukke porten. IR-sensor brukes til å oppdage ethvert objekt ved å sende og motta IR-stråler. Lær mer om IR-sensor her.
To servoer vil fungere som inngangs- og utgangsport, og de roterer for å åpne eller lukke porten. Til slutt brukes en ultralydssensor til å oppdage om parkeringsplassen er tilgjengelig eller opptatt, og sende dataene til ESP8266 deretter. Sjekk videoen som er gitt på slutten av denne opplæringen for å forstå prosjektets fullstendige arbeid.
Slik vil denne komplette Smart parkeringssystemet Prototype se ut:
Programmering ESP8266 NodeMCU for Smart Parking Solution
Komplett kode med en arbeidsvideo er gitt på slutten av denne opplæringen. Her forklarer vi hele programmet for å forstå hvordan prosjektet fungerer.
For å programmere NodeMCU er det bare å koble NodeMCU til datamaskinen med en Micro USB-kabel og åpne Arduino IDE. Bibliotekene kreves for I2C Display og Servomotor. LCD-skjermen viser tilgjengeligheten av parkeringsplasser, og servomotorene vil bli brukt til å åpne og lukke inngangs- og utgangsportene. Den Wire.h biblioteket vil bli brukt til grensesnitt LCD i i2c protokollen. Pins for I2C i ESP8266 NodeMCU er D1 (SCL) og D2 (SDA). Databasen her som brukes vil være Firebase, så her inkluderer vi også biblioteket (FirebaseArduino.h) for det samme.
#inkludere
Deretter inkluderer du firebase-legitimasjonen du har fått fra Google Firebase. Disse inkluderer vertsnavnet som inneholder prosjektnavnet og en hemmelig nøkkel. Følg den forrige opplæringen om Firebase for å finne disse verdiene.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Inkluder Wi-Fi-legitimasjonen som WiFi SSID og passord.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Initialiser I2C LCD med enhetsadresse (her er det 0x27) og type LCD. Inkluder også Servo Motors for inngangs- og utgangsport.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Start I2C-kommunikasjonen for I2C LCD.
Wire.begin (D2, D1);
Koble inngangs- og utgangsservomotoren til D5, D6-pinnene på NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Velg Trigger Pin of Ultrasonic sensor as Output og Echo Pin as Input. Ultralydssensoren vil bli brukt til å oppdage tilgjengeligheten til parkeringsplassen. Hvis bilen har okkupert plassen, vil den gløde, ellers vil den ikke lyse.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
De to pinnene D0 og D4 i NodeMCU brukes til å ta IR-sensoravlesningen. IR-sensoren vil fungere som inngangs- og utgangssensor. Dette vil oppdage biltilstedeværelse.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Koble til WiFi og vent litt til det blir koblet til.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Koble til"); Serial.print (WIFI_SSID); mens (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); forsinkelse (500); }
Begynn forbindelsen med Firebase med Host og Secret Key som legitimasjon.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Begynn i2c 16x2 LCD og sett markøren på 0 th rad 0 th kolonne.
lcd.begin (); lcd.setCursor (0, 0);
Ta avstanden fra ultralydsensoren. Dette vil bli brukt til å oppdage kjøretøyets tilstedeværelse på det bestemte stedet. Send først den 2 mikrosekundepulsen og les deretter den mottatte pulsen. Konverter den deretter til 'cm'. Lær mer om måling av avstand ved hjelp av ultralydssensor her.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); varighet = pulseIn (ECHO, HIGH); avstand = (varighet / 2) / 29,1;
Les IR-sensorstiftet digitalt som inngangssensor, og sjekk om det er høyt. Hvis den er høy, øk antall oppføringer og skriv den ut til 16x2 LCD-skjerm og også til seriell skjerm.
int carEntry = digitalRead (carEnter); hvis (carEntry == HIGH) { countYes ++; Serial.print ("Car Entered ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Car Entered");
Flytt også servomotorvinkelen for å åpne inngangsporten. Endre vinkelen i henhold til din brukstilfelle.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); forsinkelse (5); } forsinkelse (2000); for (pos = 45; pos <= 140; pos + = 1) { // i trinn på 1 grad myservos.write (pos); forsinkelse (5); }
Og send lesingen til firebase ved å bruke pushString- funksjonen i Firebase-biblioteket.
Firebase.pushString ("/ Parkeringsstatus /", fireAvailable);
Utfør lignende trinn som ovenfor for Exit IR-sensor og Exit servomotor.
int carExit = digitalRead (carExited); hvis (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); forsinkelse (5); } forsinkelse (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // i trinn på 1 grad myservo.write (pos1); forsinkelse (5); } Firebase.pushString ("/ Parkeringsstatus /", fireAvailable); lcd.clear (); }
Sjekk om bilen har kommet til parkeringsplassen, og om den har kommet, så glød ledet og gir signal om at stedet er fullt.
hvis (avstand <6) { Serial.println ("Okkupert"); digitalWrite (ledet, HØYT); }
Annet viser at stedet er tilgjengelig.
hvis (avstand> 6) { Serial.println ("Tilgjengelig"); digitalWrite (ledet, LAV); }
Beregn den totale tomme plassen inne på parkeringsplassen og lagre den i strengen for å sende dataene til firebase.
Tom = allSpace - countYes; Tilgjengelig = Streng ("Tilgjengelig =") + Streng (tom) + Streng ("/") + Streng (allSpace); fireAvailable = String ("Available =") + String (Tom) + String ("/") + String (allSpace); Skriv også ut dataene til i2C LCD. lcd.setCursor (0, 0); lcd.print (tilgjengelig);
Slik kan tilgjengeligheten av parkering spores online på Firebase som vist i øyeblikksbildet nedenfor:
Dette fullfører det komplette smartparkeringssystemet ved hjelp av ESP8266 NodeMCU-modulen og forskjellige eksterne enheter. Du kan bruke andre sensorer også som erstatning for ultralyd- og IR-sensor. Det er en enorm applikasjon av Smart Parking System, og forskjellige produkter kan legges til for å gjøre det mer smart. Kommenter nedenfor hvis du er i tvil eller kommer til forumet vårt for mer støtte.