- Požadované komponenty
- Kruhový diagram
- Programování ESP8266 NodeMCU pro řešení inteligentního parkování
S rostoucí popularitou Smart Cities vždy existuje poptávka po chytrých řešeních pro každou doménu. IoT umožnil možnost inteligentních měst pomocí funkce ovládání přes internet. Osoba může ovládat zařízení nainstalovaná v jeho domácnosti nebo kanceláři odkudkoli na světě pomocí chytrého telefonu nebo jakéhokoli zařízení připojeného k internetu. V chytrém městě existuje více domén a Smart Parking je jednou z populárních domén v Smart City.
Průmysl Smart Parking zaznamenal řadu inovací, jako je Smart Parking Management System, Smart Gate Control, Smart Cameras which can detect types of vehicle, ANPR (Automatic Number Recognition), Smart Payment System, Smart Entry System a mnoho dalších. Dnes bude následovat podobný přístup a bude vytvořeno inteligentní řešení parkování, které bude pomocí ultrazvukového senzoru detekovat přítomnost vozidla a automaticky spouštět nebo otevírat bránu. ESP8266 NodeMCU zde bude použit jako hlavní ovladač pro ovládání všech k němu připojených periferií.
ESP8266 je nejoblíbenější řadič pro vytváření aplikací založených na IoT, protože má zabudovanou podporu Wi-Fi pro připojení k internetu. Dříve jsme to použili k sestavení mnoha projektů IoT, jako jsou:
- Bezpečnostní systém založený na IOT
- Smart Junction Box pro domácí automatizaci
- Systém monitorování znečištění ovzduší založený na IOT
- Odesílejte data na ThingSpeak
Podívejte se zde na všechny projekty založené na ESP8266.
V tomto inteligentním parkovacím systému IoT budeme odesílat data na webový server, abychom zjistili dostupnost prostoru pro parkování vozidel. Zde používáme firebase jako databázi Iot k získání údajů o dostupnosti parkování. K tomu musíme najít adresu hostitele Firebase a tajný klíč pro autorizaci. Pokud již víte, že používáte firebase s NodeMCU, můžete se posunout vpřed, jinak byste se měli nejprve naučit používat konzolu Google Firebase Console s ESP8266 NodeMCU a získat adresu hostitele a tajný klíč.
Požadované komponenty
- ESP8266 NodeMCU
- Ultrazvukový senzor
- DC servomotor
- IR senzory
- 16x2 i2c LCD displej
- Svetry
Kruhový diagram
Schéma zapojení tohoto parkovacího systému založeného na IoT je uvedeno níže. Zahrnuje dva infračervené senzory, dva servomotory, jeden ultrazvukový senzor a jeden 16x2 LCD.
Zde bude ESP8266 řídit celý proces a také odesílat informace o dostupnosti parkování do Google Firebase, aby jej bylo možné sledovat odkudkoli na světě přes internet. Dva infračervené senzory se používají na vstupní a výstupní bráně k detekci přítomnosti automobilu a automatickému otevření nebo zavření brány. IR senzor se používá k detekci jakéhokoli objektu vysíláním a přijímáním IR paprsků, zde se dozvíte více informací o IR senzoru.
Dvě serva fungují jako vstupní a výstupní brána a otáčením se otevírají nebo zavírají bránu. Nakonec se používá ultrazvukový senzor k detekci, zda je parkovací slot k dispozici nebo obsazený, a podle toho odesílá data do ESP8266. Podívejte se na video uvedené na konci tohoto tutoriálu, abyste pochopili kompletní fungování projektu.
Takto bude vypadat tento kompletní inteligentní parkovací systém Prototype:
Programování ESP8266 NodeMCU pro řešení inteligentního parkování
Kompletní kód s fungujícím videem je uveden na konci tohoto tutoriálu, zde vysvětlujeme kompletní program, abychom porozuměli fungování projektu.
Pro programování NodeMCU stačí připojit NodeMCU k počítači pomocí kabelu Micro USB a otevřít IDE Arduino. Knihovny jsou vyžadovány pro displej I2C a servomotor. Na LCD displeji se zobrazí dostupnost parkovacích míst a servomotory budou použity k otevírání a zavírání vstupních a výstupních bran. Wire.h knihovna bude použit k propojení LCD v protokolu i2c. Kolíky pro I2C v ESP8266 NodeMCU jsou D1 (SCL) a D2 (SDA). Zde použitá databáze bude Firebase, takže zde také zahrnujeme knihovnu (FirebaseArduino.h) .
#zahrnout
Poté zahrňte pověření firebase získaná z Google Firebase. Patří mezi ně název hostitele obsahující název vašeho projektu a tajný klíč. Chcete-li najít tyto hodnoty, postupujte podle předchozího kurzu na Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Zahrňte pověření Wi-Fi, jako je WiFi SSID a heslo.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "CircuitDigest101"
Inicializujte I2C LCD s adresou zařízení (zde je 0x27) a typem LCD. Zahrňte také servomotory pro vstupní a výstupní bránu.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Zahajte komunikaci I2C pro I2C LCD.
Wire.begin (D2, D1);
Připojte vstupní a výstupní servomotor k pinům D5, D6 na NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Vyberte Spouštěcí kolík ultrazvukového senzoru jako Výstup a Echo Pin jako Vstup. Ultrazvukový senzor bude použit k detekci dostupnosti parkovacího místa. Pokud Car obsadil prostor, pak bude svítit, jinak nebude svítit.
pinMode (TRIG, VÝSTUP); pinMode (ECHO, INPUT);
Dva piny D0 a D4 NodeMCU se používají k odečtu čtení infračerveného senzoru. IR senzor bude fungovat jako senzor vstupu a výstupu z brány. To detekuje přítomnost automobilu.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Připojte se k WiFi a počkejte nějakou dobu, než se připojí.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Připojení k"); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); zpoždění (500); }
Začněte připojení s Firebase s hostitelem a tajným klíčem jako pověření.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Zahájit i2c 16x2 LCD a nastavit pozici kurzoru při 0 ° C tý řádek 0 tého sloupce.
lcd.begin (); lcd.setCursor (0, 0);
Vezměte vzdálenost od ultrazvukového snímače. To se použije k detekci přítomnosti vozidla v konkrétním místě. Nejprve odešlete 2 mikrosekundový puls a poté přečtěte přijatý puls. Poté jej převeďte na 'cm'. Další informace o měření vzdálenosti pomocí ultrazvukového snímače najdete zde.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); trvání = pulseIn (ECHO, HIGH); vzdálenost = (doba / 2) / 29,1;
Digitálně načtěte pin infračerveného senzoru jako vstupní senzor a zkontrolujte, zda je vysoký. Pokud je vysoká, zvyšte počet vstupů a vytiskněte ji na 16x2 LCD displej a také na sériový monitor.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Auto zadáno ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Auto vstoupilo");
Také posuňte úhel servomotoru a otevřete vstupní bránu. Změňte úhel podle případu použití.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); zpoždění (5); } zpoždění (2000); for (pos = 45; pos <= 140; pos + = 1) { // v krocích po 1 stupni myservos.write (pos); zpoždění (5); }
A odešlete čtení na firebase pomocí funkce pushString knihovny Firebase .
Firebase.pushString ("/ Stav parkování /", fireAvailable);
Ukončete podobné kroky jako výše pro Exit IR senzor a Exit servomotor.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countAno--; Serial.print ("Car Exited ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print („Car Exited“); pro (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); zpoždění (5); } zpoždění (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // v krocích po 1 stupni myservo.write (pos1); zpoždění (5); } Firebase.pushString ("/ Stav parkování /", fireAvailable); lcd.clear (); }
Zkontrolujte, zda auto přišlo k parkovacímu místu a zda dorazilo, poté žhavicí kontrolka, která signalizuje, že je plný bod.
if (vzdálenost <6) { Serial.println ("Obsazeno"); digitalWrite (led, HIGH); }
Jinak ukazují, že místo je k dispozici.
if (vzdálenost> 6) { Serial.println ("Dostupné"); digitalWrite (led, LOW); }
Vypočítejte celkové prázdné místo na parkovišti a uložte jej do řetězce pro odeslání dat do firebase.
Empty = allSpace - countYes; Dostupné = String ("Dostupné =") + String (Prázdné) + String ("/") + String (allSpace); fireAvailable = String ("Dostupné =") + String (Prázdný) + String ("/") + String (allSpace); Data také vytiskněte na LCD i2C. lcd.setCursor (0, 0); lcd.print (k dispozici);
Takto lze sledovat dostupnost parkování online na Firebase, jak je znázorněno na následujícím snímku:
Tím je dokončen kompletní inteligentní parkovací systém využívající modul NodeMCU ESP8266 a různé periferie. Jiné senzory můžete použít také jako náhradu ultrazvukového a infračerveného senzoru. Inteligentní parkovací systém má rozsáhlou aplikaci a mohou být přidány různé produkty, aby byl inteligentnější. Pokud máte jakékoli pochybnosti, vyjádřete se níže nebo se obraťte na naše fórum, kde získáte další podporu.