Med voksende popularitet af smarte byer er der altid et behov for smarte løsninger til hvert domæne. IoT har aktiveret muligheden for smarte byer med det via internetkontrolfunktionen. En person kan styre de enheder, der er installeret i sit hjem eller kontor, hvor som helst i verden ved blot at bruge en smartphone eller andre internetforbundne enheder. Der er flere domæner i en smart by, og Smart Parking er et af de populære domæner i Smart City.
Smart Parking-industrien har set en række innovationer, såsom Smart Parking Management System, Smart Gate Control, Smart Camera, der kan registrere køretøjstyper, ANPR (Automatic Number Plate Recognition), Smart Payment System, Smart Entry System og mange flere. I dag følges en lignende tilgang, og der bygges en smart parkeringsløsning, der bruger en ultralydssensor til at registrere køretøjets tilstedeværelse og udløse porten til at åbne eller lukke automatisk. ESP8266 NodeMCU vil blive brugt her som hovedcontroller til at kontrollere alle perifere enheder, der er knyttet til den.
ESP8266 er den mest populære controller til at opbygge IoT-baserede applikationer, da den har indbygget support til Wi-Fi til at oprette forbindelse til internettet. Vi har tidligere brugt det til at bygge mange IoT-projekter som:
- IOT-baseret sikkerhedssystem
- Smart koblingsboks til hjemmeautomatisering
- IOT-baseret overvågningssystem til luftforurening
- Send data til ThingSpeak
Tjek alt det ESP8266-baserede projekt her.
I dette IoT Smart Parking System sender vi data til webserveren for at se på tilgængeligheden af plads til køretøjsparkering. Her bruger vi firebase som Iot-database for at få data om parkeringstilgængelighed. Til dette er vi nødt til at finde Firebase-værtsadressen og den hemmelige nøgle til autorisation. Hvis du allerede ved at bruge firebase med NodeMCU, kan du gå videre ellers skal du først lære at bruge Google Firebase Console med ESP8266 NodeMCU for at få værtsadressen og den hemmelige nøgle.
Komponenter, der kræves
- ESP8266 NodeMCU
- Ultralydssensor
- DC servomotor
- IR-sensorer
- 16x2 i2c LCD-skærm
- Jumpere
Kredsløbsdiagram
Kredsløbsdiagram for dette IoT-baserede parkeringssystem til køretøjer er angivet nedenfor. Det involverer to IR-sensorer, to servomotorer, en ultralydssensor og en 16x2 LCD.
Her styrer ESP8266 hele processen og sender også oplysninger om parkeringstilgængelighed til Google Firebase, så den kan overvåges fra hvor som helst i verden over internettet. To IR-sensorer bruges ved ind- og udgangsport til at registrere bilens tilstedeværelse og automatisk åbne eller lukke porten. IR-sensor bruges til at detektere ethvert objekt ved at sende og modtage IR-stråler. Lær mere om IR-sensor her.
To servoer fungerer som indgangs- og udgangsport, og de roterer for at åbne eller lukke porten. Endelig bruges en ultralydssensor til at registrere, om parkeringspladsen er tilgængelig eller optaget, og sende dataene til ESP8266 i overensstemmelse hermed. Tjek videoen i slutningen af denne vejledning for at forstå projektets komplette arbejde.
Sådan ser denne komplette Smart Parking-system Prototype ud:
Programmering ESP8266 NodeMCU til Smart Parking Solution
Komplet kode med en fungerende video er givet i slutningen af denne tutorial, her forklarer vi det komplette program for at forstå projektets funktion.
Til programmering af NodeMCU skal du bare tilslutte NodeMCU til computeren med et Micro USB-kabel og åbne Arduino IDE. Bibliotekerne kræves til I2C Display og Servomotor. LCD'et viser tilgængeligheden af parkeringspladser, og servomotorer vil blive brugt til at åbne og lukke indgangs- og udgangsportene. Den Wire.h bibliotek vil blive brugt til at interface LCD i I2C protokollen. Pins til I2C i ESP8266 NodeMCU er D1 (SCL) og D2 (SDA). Den anvendte database vil være Firebase, så her inkluderer vi også biblioteket (FirebaseArduino.h) for det samme.
#omfatte
Medtag derefter firebase-legitimationsoplysningerne fra Google Firebase. Disse inkluderer værtsnavnet, der indeholder dit projektnavn og en hemmelig nøgle. Følg den tidligere vejledning om Firebase for at finde disse værdier.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Inkluder Wi-Fi-legitimationsoplysninger såsom WiFi SSID og adgangskode.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Initialiser I2C LCD med enhedsadresse (her er det 0x27) og type LCD. Inkluder også Servomotorer til ind- og udgangsport.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Start I2C-kommunikationen til I2C LCD.
Wire.begin (D2, D1);
Forbind indgangs- og udgangsservomotoren til D5, D6-stifterne på NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Vælg Trigger Pin af Ultralydssensor som Output og Echo Pin som Input. Ultralydssensoren bruges til at detektere tilgængeligheden af parkeringspladsen. Hvis bilen har optaget pladsen, vil den gløde, ellers vil den ikke lyse.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
De to ben D0 og D4 i NodeMCU bruges til at tage IR-sensoraflæsningen. IR-sensoren fungerer som indgangs- og udgangsportføler. Dette registrerer bilens tilstedeværelse.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Opret forbindelse til WiFi, og vent et stykke tid, indtil det bliver tilsluttet.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Opretter forbindelse til"); Serial.print (WIFI_SSID); mens (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); forsinkelse (500); }
Begynd forbindelsen med Firebase med Host og Secret Key som legitimationsoplysninger.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Begynd i2c 16x2 LCD og sæt cursor position ved 0 th rækken 0 th kolonne.
lcd.begin (); lcd.setCursor (0, 0);
Tag afstanden fra ultralydssensor. Dette vil blive brugt til at detektere køretøjets tilstedeværelse på det bestemte sted. Send først den 2 mikrosekunderpuls og læs derefter den modtagne puls. Konverter det derefter til 'cm'. Lær mere om måling af afstand ved hjælp af ultralydssensor her.
digitalWrite (TRIG, LOW); forsinkelseMikrosekunder (2); digitalWrite (TRIG, HIGH); forsinkelseMikrosekunder (10); digitalWrite (TRIG, LOW); varighed = pulseIn (ECHO, HIGH); afstand = (varighed / 2) / 29,1;
Læs IR-sensorstiftet digitalt som indgangssensor, og kontroller, om det er højt. Hvis det er højt, skal du øge antallet af indtastninger og udskrive det til 16x2 LCD-skærm og også til seriel skærm.
int carEntry = digitalRead (carEnter); hvis (carEntry == HIGH) { countYes ++; Serial.print ("Car Entered ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Bil indtastet");
Flyt også servomotorens vinkel for at åbne indgangsporten. Skift vinkel i henhold til din brugstilfælde.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); forsinkelse (5); } forsinkelse (2000); for (pos = 45; pos <= 140; pos + = 1) { // i trin på 1 grad myservos.write (pos); forsinkelse (5); }
Og send læsningen til firebase ved hjælp af pushString- funktionen i Firebase-biblioteket.
Firebase.pushString ("/ Parkeringsstatus /", fireAvailable);
Udfør de samme trin 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 trin på 1 grad myservo.write (pos1); forsinkelse (5); } Firebase.pushString ("/ Parkeringsstatus /", fireAvailable); lcd.clear (); }
Kontroller, om bilen er kommet til parkeringspladsen, og hvis den er ankommet, så lyser det, hvilket giver signal om, at stedet er fuldt.
hvis (afstand <6) { Serial.println ("Besat"); digitalWrite (ledet, HØJ); }
Ellers viser, at stedet er tilgængeligt.
hvis (afstand> 6) { Serial.println ("Tilgængelig"); digitalWrite (led, LAV); }
Beregn det samlede tomme rum inde på parkeringspladsen, og gem det i strengen for at sende dataene til firebase.
Tom = allSpace - countYes; Tilgængelig = streng ("tilgængelig =") + streng (tom) + streng ("/") + streng (allSpace); fireAvailable = String ("Tilgængelig =") + String (tom) + String ("/") + String (allSpace); Udskriv også dataene til i2C LCD. lcd.setCursor (0, 0); lcd.print (tilgængelig);
Sådan spores tilgængeligheden af parkering online på Firebase som vist i snapshotet nedenfor:
Dette afslutter det komplette smart parkeringssystem ved hjælp af ESP8266 NodeMCU-modulet og forskellige eksterne enheder. Du kan bruge andre sensorer også til udskiftning af ultralyds- og IR-sensor. Der er en bred anvendelse af Smart Parking System, og forskellige produkter kan tilføjes for at gøre det mere smart. Kommenter nedenfor, hvis du er i tvivl eller når til vores forum for mere support.