Med ökande popularitet för Smart Cities finns det alltid en efterfrågan på smarta lösningar för varje domän. IoT har aktiverat möjligheten för smarta städer med det via internetkontrollfunktionen. En person kan styra enheterna som är installerade i sitt hem eller kontor var som helst i världen genom att bara använda en smartphone eller andra internetanslutna enheter. Det finns flera domäner i en smart stad och Smart Parking är en av de populära domänerna i Smart City.
Smart Parking-industrin har sett ett antal innovationer som Smart Parking Management System, Smart Gate Control, smarta kameror som kan upptäcka typer av fordon, ANPR (Automatic Number Plate Recognition), Smart Payment System, Smart Entry System och många fler. Idag kommer liknande tillvägagångssätt att följas och en smart parkeringslösning kommer att byggas som använder en ultraljudssensor för att upptäcka fordonets närvaro och utlösa grinden för att öppna eller stängas automatiskt. ESP8266 NodeMCU kommer att användas här som huvudstyrenhet för att styra alla kringutrustning som är ansluten till den.
ESP8266 är den mest populära styrenheten för att bygga IoT-baserade applikationer eftersom den har inbyggt stöd för Wi-Fi för att ansluta till internet. Vi har tidigare använt det för att bygga många IoT-projekt som:
- IOT-baserat säkerhetssystem
- Smart kopplingsbox för hemautomation
- IOT-baserat övervakningssystem för luftföroreningar
- Skicka data till ThingSpeak
Kontrollera alla ESP8266-baserade projekt här.
I detta IoT Smart Parking System kommer vi att skicka data till webbservern för att leta efter tillgängligheten på utrymme för bilparkering. Här använder vi Firebase som Iot-databas för att få information om tillgänglighet för parkering. För detta måste vi hitta Firebase-värdadressen och den hemliga nyckeln för auktorisering. Om du redan vet att du använder firebase med NodeMCU kan du gå vidare annars bör du först lära dig att använda Google Firebase Console med ESP8266 NodeMCU för att få värdadress och hemlig nyckel.
Komponenter krävs
- ESP8266 NodeMCU
- Ultraljudssensor
- DC Servomotor
- IR-sensorer
- 16x2 i2c LCD-skärm
- Tröjor
Kretsschema
Kretsschema för detta IoT-baserade bilparkeringssystem ges nedan. Det involverar två IR-sensorer, två servomotorer, en ultraljudssensor och en 16x2 LCD.
Här kommer ESP8266 att styra hela processen och även skicka information om parkeringstillgänglighet till Google Firebase så att den kan övervakas var som helst i världen över internet. Två IR-sensorer används vid in- och utgångsporten för att upptäcka bilens närvaro och automatiskt öppna eller stänga porten. IR-sensor används för att upptäcka alla objekt genom att skicka och ta emot IR-strålar, läs mer om IR-sensor här.
Två servor fungerar som in- och utgångsport och de roterar för att öppna eller stänga porten. Slutligen används en ultraljudssensor för att upptäcka om parkeringsplatsen är tillgänglig eller upptagen och skicka data till ESP8266 därefter. Kontrollera videon i slutet av denna handledning för att förstå projektets fullständiga funktion.
Så här kommer denna kompletta Smart Parking-systemprototyp att se ut:
Programmering ESP8266 NodeMCU för smart parkeringslösning
Komplett kod med en fungerande video ges i slutet av denna handledning, här förklarar vi hela programmet för att förstå hur projektet fungerar.
För att programmera NodeMCU, anslut bara NodeMCU till datorn med en Micro USB-kabel och öppna Arduino IDE. Biblioteken krävs för I2C Display och Servomotor. LCD-skärmen visar tillgängligheten för parkeringsplatser och servomotorerna kommer att användas för att öppna och stänga ingångs- och utgångsgrindarna. Den Wire.h biblioteket kommer att användas för att kommunicera LCD i I2C-protokollet. Pins för I2C i ESP8266 NodeMCU är D1 (SCL) och D2 (SDA). Databasen som används här kommer att vara Firebase så här inkluderar vi också biblioteket (FirebaseArduino.h) för detsamma.
#omfatta
Ta sedan med inloggningsuppgifterna för Firebase från Google Firebase. Dessa inkluderar värdnamnet som innehåller ditt projektnamn och en hemlig nyckel. För att hitta dessa värden, följ föregående handledning om Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Inkludera Wi-Fi-referenser som WiFi SSID och lösenord.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Initiera I2C LCD med enhetsadress (här är den 0x27) och typ av LCD. Inkludera även Servomotorer för in- och utgångsport.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Starta I2C-kommunikationen för I2C LCD.
Wire.begin (D2, D1);
Anslut in- och utgångsservomotorn till D5, D6-stiften på NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Välj Trigger Pin of Ultrasonic sensor as Output och Echo Pin as Input. Ultraljudsgivaren kommer att användas för att upptäcka tillgängligheten för parkeringsplatsen. Om bilen har upptaget utrymmet kommer det att lysa, annars lyser det inte.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
De två stiften D0 och D4 i NodeMCU används för att ta IR-sensoravläsningen. IR-sensorn fungerar som ingångs- och utgångssensor. Detta kommer att upptäcka bilens närvaro.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Anslut till WiFi och vänta en stund tills den ansluts.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Ansluter till"); Serial.print (WIFI_SSID); medan (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); fördröjning (500); }
Börja anslutningen med Firebase med värd och hemlig nyckel som referenser.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Börja i2c 16x2 LCD och ställ in markörposition vid 0: e rad 0: e kolumnen.
lcd.begin (); lcd.setCursor (0, 0);
Ta avståndet från ultraljudssensorn. Detta kommer att användas för att upptäcka fordonets närvaro på den specifika platsen. Skicka först den 2 mikrosekundspulsen och läs sedan den mottagna pulsen. Konvertera den sedan till 'cm'. Läs mer om att mäta avstånd med ultraljudssensor här.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); varaktighet = pulseIn (ECHO, HIGH); avstånd = (varaktighet / 2) / 29,1;
Läs IR-sensorns stift digitalt som ingångssensor och kontrollera om den är hög. Om det är högt ska du öka antalet poster och skriva ut det till 16x2 LCD-skärm och även till seriell bildskärm.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Car Entered ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Car Entered");
Flytta också servomotorns vinkel för att öppna porten. Ändra vinkel enligt ditt användningsfall.
för (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); fördröjning (5); } fördröjning (2000); för (pos = 45; pos <= 140; pos + = 1) { // i steg om 1 grad myservos.write (pos); fördröjning (5); }
Och skicka avläsningen till firebase med hjälp av pushString- funktionen i Firebase-biblioteket.
Firebase.pushString ("/ Parkeringsstatus /", fireAvailable);
Gör liknande steg som ovan för Exit IR-sensor och Exit servomotor.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Serial.print ("Car Exited ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Car Exited"); för (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); fördröjning (5); } fördröjning (2000); för (pos1 = 45; pos1 <= 140; pos1 + = 1) { // i steg om 1 grad myservo.write (pos1); fördröjning (5); } Firebase.pushString ("/ Parkeringsstatus /", fireAvailable); lcd.clear (); }
Kontrollera om bilen har kommit till parkeringsplatsen och om den har anlänt lyser glöd och ger signal om att platsen är full.
if (avstånd <6) { Serial.println ("Occupied"); digitalWrite (led, HÖG); }
Annars visar att platsen är tillgänglig.
if (avstånd> 6) { Serial.println ("Tillgängligt"); digitalWrite (led, LOW); }
Beräkna det totala tomma utrymmet på parkeringsplatsen och spara det i strängen för att skicka informationen till firebase.
Tom = allSpace - countYes; Tillgänglig = String ("Available =") + String (Tom) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (Tom) + String ("/") + String (allSpace); Skriv också ut data till i2C LCD. lcd.setCursor (0, 0); lcd.print (tillgängligt);
Så här kan tillgången på parkering spåras online på Firebase, som visas i ögonblicksbilden nedan:
Detta avslutar det kompletta smarta parkeringssystemet med hjälp av ESP8266 NodeMCU-modulen och olika kringutrustning. Du kan använda andra sensorer också för att ersätta ultraljud och IR-sensor. Det finns en omfattande tillämpning av Smart Parking System och olika produkter kan läggas till för att göra det smartare. Kommentera nedan om du är osäker eller når vårt forum för mer support.