Z naraščajočo priljubljenostjo pametnih mest vedno obstaja povpraševanje po pametnih rešitvah za vsako domeno. IoT je s funkcijo nadzora interneta omogočil možnost pametnih mest. Oseba lahko nadzira naprave, nameščene v svojem domu ali pisarni, od koder koli na svetu, in sicer s pametnim telefonom ali katero koli drugo internetno povezano napravo. V pametnem mestu je več domen, pametno parkiranje pa je ena izmed priljubljenih domen v pametnem mestu.
Industrija pametnega parkiranja je doživela številne novosti, kot so sistem pametnega upravljanja parkiranja, nadzor pametnih vrat, pametne kamere, ki lahko zaznajo tipe vozil, ANPR (samodejno prepoznavanje registrske tablice), sistem pametnega plačevanja, sistem pametnega vstopa in še veliko več. Danes bomo sledili podobnemu pristopu in zgradili pametno rešitev za parkiranje, ki bo z ultrazvočnim senzorjem zaznala prisotnost vozila in sprožila samodejno odpiranje ali zapiranje vrat. ESP8266 NodeMCU bo tu uporabljen kot glavni krmilnik za nadzor vseh zunanjih naprav, ki so nanj pritrjene.
ESP8266 je najbolj priljubljen krmilnik za izdelavo aplikacij, ki temeljijo na IoT, saj ima vgrajeno podporo za povezavo Wi-Fi z internetom. Pred tem smo ga uporabili za gradnjo številnih IoT projektov, kot so:
- Varnostni sistem, ki temelji na IOT
- Pametna razvodna omarica za avtomatizacijo doma
- Sistem za spremljanje onesnaževanja zraka na osnovi IOT
- Pošljite podatke ThingSpeak
Tukaj preverite ves projekt, ki temelji na ESP8266.
V tem IoT pametnem parkirnem sistemu bomo spletnemu strežniku poslali podatke za iskanje razpoložljivosti prostora za parkiranje vozil. Tu uporabljamo Firebase kot Iot bazo podatkov, da dobimo podatke o razpoložljivosti parkirišč. Za to moramo najti naslov gostitelja Firebase in skrivni ključ za avtorizacijo. Če že poznate uporabo Firebase-a z NodeMCU, potem lahko nadaljujete, najprej se naučite uporabljati Google Firebase Console z ESP8266 NodeMCU, da dobite naslov gostitelja in tajni ključ.
Potrebne komponente
- ESP8266 NodeMCU
- Ultrazvočni senzor
- DC servo motor
- IR senzorji
- 16x2 LCD zaslon i2c
- Skakalci
Shema vezja
Shema vezij za ta sistem parkiranja vozil, ki temelji na IoT, je podana spodaj. Vključuje dva IR senzorja, dva servo motorja, en ultrazvočni senzor in en 16x2 LCD.
Tu bo ESP8266 nadzoroval celoten postopek in podatke o razpoložljivosti parkirišč poslal tudi Googlu Firebase, da jih bo mogoče prek interneta spremljati od koder koli na svetu. Na vhodnih in izstopnih vratih se uporabljata dva IR senzorja za zaznavanje prisotnosti avtomobila in samodejno odpiranje ali zapiranje vrat. IR senzor se uporablja za zaznavanje katerega koli predmeta s pošiljanjem in sprejemanjem IR žarkov, več o IR senzorju preberite tukaj.
Dva servomotora bosta delovala kot vhodna in izstopna vrata in se vrtita, da odpreta ali zapreta vrata. Na koncu se ultrazvočni senzor zazna, ali je parkirno mesto na voljo ali zasede, in podatke pošlje na ESP8266. Oglejte si videoposnetek na koncu te vadnice, da boste razumeli celotno delovanje projekta.
Tako bo videti ta celotni prototip pametnega parkirnega sistema:
Programiranje ESP8266 NodeMCU za rešitev pametnega parkiranja
Popolna koda z delujočim videoposnetkom je podana na koncu te vadnice, tukaj razlagamo celoten program za razumevanje delovanja projekta.
Za programiranje NodeMCU preprosto priključite NodeMCU na računalnik s kablom Micro USB in odprite Arduino IDE. Knjižnice so potrebne za zaslon I2C in servo motor. LCD bo prikazoval razpoložljivost parkirnih prostorov, servo motorji pa se bodo uporabljali za odpiranje in zapiranje vhodnih in izstopnih vrat. Wire.h knjižnica se bo uporabljal za vmesnik LCD v I2C protokol. Zatiči za I2C v ESP8266 NodeMCU so D1 (SCL) in D2 (SDA). Zbirka podatkov, ki se uporablja tukaj, bo Firebase, zato tukaj vključujemo tudi knjižnico (FirebaseArduino.h) za isto.
#include
Nato vključite poverilnice za Firebase, ki jih dobite od Google Firebase. Vključevali bodo ime gostitelja, ki vsebuje ime vašega projekta in skrivni ključ. Če želite najti te vrednosti, sledite prejšnji vadnici o Firebaseu.
#define FIREBASE_HOST " smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Vključite poverilnice Wi-Fi, kot sta SSID WiFi in geslo.
#define WIFI_SSID " CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Inicializirajte I2C LCD z naslovom naprave (tukaj je 0x27) in vrsto LCD-ja. Vključite tudi servo motorje za vhodna in izstopna vrata.
LCD LiquidCrystal_I2C (0x27, 16, 2); Servo myservo; Servo myservo1;
Zaženite komunikacijo I2C za I2C LCD.
Wire.begin (D2, D1);
Servo motor za vhod in izhod povežite z zatiči D5, D6 na NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Za izhod izberite izhodni zatič ultrazvočnega senzorja in kot vhodni odsev. Ultrazvočni senzor bo uporabljen za zaznavanje razpoložljivosti parkirnih mest. Če je avto zasedel prostor, bo svetil, sicer ne bo svetil.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
Dva zatiča D0 in D4 NodeMCU se uporabljata za odčitavanje IR senzorja. IR senzor bo deloval kot vhodni in izhodni senzor vrat. To bo zaznalo prisotnost avtomobila.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Povežite se z WiFi in počakajte nekaj časa, dokler se ne poveže.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Povezovanje z"); Serial.print (WIFI_SSID); medtem ko (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); zamuda (500); }
Povezavo z Firebase začnite s poverilnicami gostitelja in tajnega ključa.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Začnite I2C 16x2 LCD in nastavljeni položaj kurzorja na 0 th vrstico 0 th stolpca.
lcd.begin (); lcd.setCursor (0, 0);
Vzemite razdaljo od ultrazvočnega senzorja. To bo uporabljeno za zaznavanje prisotnosti vozila na določenem mestu. Najprej pošljite 2 mikrosekunde impulza in nato preberite prejeti impulz. Nato ga pretvorite v 'cm'. Več o merjenju razdalje z ultrazvočnim senzorjem preberite tukaj.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); trajanje = pulseIn (ECHO, HIGH); razdalja = (trajanje / 2) / 29,1;
Digitalno preberite zatič IR-senzorja kot vhodni senzor in preverite, ali je visok. Če je veliko, povečajte število vnosov in ga natisnite na 16x2 LCD zaslon in tudi na serijski monitor.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Car Entered ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Car Entered");
Premaknite tudi kot servo motorja, da odprete vhodna vrata. Spremenite kot glede na primer uporabe.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); zamuda (5); } zamuda (2000); for (pos = 45; pos <= 140; pos + = 1) { // v korakih po 1 stopinja myservos.write (pos); zamuda (5); }
In branje pošljite v Firebase s pomočjo funkcije pushString knjižnice Firebase.
Firebase.pushString ("/ Status parkiranja /", fireAvailable);
Naredite podobne korake kot zgoraj za izhod IR senzorja in servo motorja Exit.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Serial.print ("Car Exited ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Car Exited"); za (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); zamuda (5); } zamuda (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // v korakih po 1 stopinja myservo.write (pos1); zamuda (5); } Firebase.pushString ("/ Parking Status /", fireAvailable); lcd.clear (); }
Preverite, če je avto prišel na parkirno mesto in če je prispel, potem žarnica sveti in daje signal, da je mesto zasedeno.
if (razdalja <6) { Serial.println ("Zasedeno"); digitalWrite (led, HIGH); }
Drugače kažejo, da je spot na voljo.
if (razdalja> 6) { Serial.println ("Na voljo"); digitalWrite (led, LOW); }
Izračunajte skupni prazen prostor na parkirišču in ga shranite v niz za pošiljanje podatkov v Firebase.
Prazno = allSpace - countYes; Na voljo = String ("Na voljo =") + String (Empty) + String ("/") + String (allSpace); fireAvailable = String ("Na voljo =") + String (Empty) + String ("/") + String (allSpace); Podatke natisnite tudi na LCD i2C. lcd.setCursor (0, 0); lcd.print (na voljo);
Tako je mogoče na spletu v Firebase spremljati razpoložljivost parkirišč, kot je prikazano na spodnjem posnetku:
S tem je zaključen celoten sistem pametnega parkiranja z uporabo modula ESP8266 NodeMCU in različnih zunanjih naprav. Za nadomestitev ultrazvočnega in IR senzorja lahko uporabite tudi druge senzorje. Obstaja široka uporaba pametnega parkirnega sistema, zato lahko dodate različne izdelke, da postane bolj pameten. Spodaj komentirajte, če dvomite ali se obrnete na naš forum za večjo podporo.