Didėjant „Smart Cities“ populiarumui, visada reikia pažangių sprendimų kiekvienam domenui. Internetas suteikė galimybę išmaniesiems miestams naudotis interneto valdymo funkcija. Asmuo gali valdyti savo namuose ar biure įdiegtus įrenginius iš bet kurios pasaulio vietos, naudodamas tiesiog išmanųjį telefoną ar bet kurį prie interneto prijungtą įrenginį. Išmaniajame mieste yra keli domenai, o „Smart Parking“ yra vienas iš populiariausių „Smart City“ domenų.
„Smart Parking“ pramonė matė daugybę naujovių, tokių kaip „Smart Parking Management“ sistema, „Smart Gate Control“, „Smart Cameras“, kurios gali aptikti transporto priemonių tipus, ANPR (automatinis numerio ženklo atpažinimas), „Smart Payment System“, „Smart Entry System“ ir daug daugiau. Šiandien bus laikomasi panašaus požiūrio ir bus sukurtas išmanus parkavimo sprendimas, kuris ultragarso jutikliu nustatys transporto priemonės buvimą ir paskatins vartus automatiškai atsidaryti ar užsidaryti. ESP8266 „NodeMCU“ čia bus naudojamas kaip pagrindinis valdiklis valdyti visus prie jo prijungtus periferinius įrenginius.
ESP8266 yra populiariausias valdiklis, kuriantis daiktų interneto programas, nes jame įdiegtas „Wi-Fi“ palaikymas prisijungiant prie interneto. Anksčiau jį naudojome kurdami daugelį interneto projektų, tokių kaip:
- IOT pagrįsta apsaugos sistema
- „Smart Junction Box“ namų automatizavimui
- IOT pagrįsta oro taršos stebėjimo sistema
- Siųskite duomenis į „ThingSpeak“
Čia patikrinkite visą ESP8266 pagrįstą projektą.
Šioje „ IoT“ išmaniojoje parkavimo sistemoje mes išsiųsime duomenis tinklo serveriui, kad sužinotume, ar yra vietos transporto priemonių stovėjimui. Čia mes naudojame „Firebase“ kaip „Iot“ duomenų bazę, kad gautume duomenis apie automobilių stovėjimo aikštelę. Tam turime rasti „Firebase“ pagrindinio kompiuterio adresą ir slaptą prieigos raktą. Jei jau žinote, kaip naudoti „Firebase“ su „NodeMCU“, galite judėti pirmyn, pirmiausia turėtumėte išmokti naudotis „ Google Firebase Console“ su ESP8266 „NodeMCU“, kad gautumėte pagrindinio kompiuterio adresą ir slaptąjį raktą.
Būtini komponentai
- ESP8266 „NodeMCU“
- Ultragarsinis jutiklis
- DC servo variklis
- IR jutikliai
- 16x2 i2c LCD ekranas
- Džemperiai
Grandinės schema
Šios IoT pagrįstos transporto priemonės stovėjimo sistemos schema pateikta žemiau. Jame yra du IR jutikliai, du servovarikliai, vienas ultragarso jutiklis ir vienas 16x2 LCD ekranas.
Čia ESP8266 valdys visą procesą ir išsiųs informaciją apie automobilių stovėjimo aikštelę į „Google Firebase“, kad ją būtų galima stebėti iš bet kurios pasaulio vietos internete. Du IR jutikliai naudojami įėjimo ir išėjimo vartuose, norint nustatyti automobilio buvimą ir automatiškai atidaryti ar uždaryti vartus. IR jutiklis naudojamas bet kokiam objektui aptikti siunčiant ir priimant IR spindulius. Sužinokite daugiau apie IR jutiklį čia.
Du servomobiliai veiks kaip įėjimo ir išėjimo vartai, ir jie sukasi, kad atidarytų arba uždarytų vartus. Galiausiai naudojamas ultragarso jutiklis, skirtas nustatyti, ar yra ar yra užimta stovėjimo vieta, ir atitinkamai siųsti duomenis į ESP8266. Patikrinkite vaizdo įrašą, pateiktą šios pamokos pabaigoje, kad suprastumėte visą projekto darbą.
Taip atrodys šis visas išmaniosios parkavimo sistemos prototipas:
ESP8266 „NodeMCU“ programavimas išmaniajam parkavimo sprendimui
Pilnas kodas su darbiniu vaizdo įrašu pateikiamas šios pamokos pabaigoje, čia mes paaiškiname visą programą, kad suprastume projekto darbą.
Norėdami programuoti „NodeMCU“, tiesiog prijunkite „NodeMCU“ prie kompiuterio naudodami „Micro USB“ kabelį ir atidarykite „Arduino IDE“. Bibliotekos reikalingos I2C ekranui ir servo varikliui. Skystųjų kristalų ekrane bus rodomos automobilių stovėjimo vietos, o „Servo“ varikliai bus naudojami įėjimo ir išėjimo vartams atidaryti ir uždaryti. „ Wire.h“ biblioteka bus naudojama sąsajai su „i2c“ protokolu. ESP8266 „NodeMCU“ I2C kaiščiai yra D1 (SCL) ir D2 (SDA). Čia naudojama duomenų bazė bus „Firebase“, todėl čia taip pat įtraukiame biblioteką („FirebaseArduino.h“) .
# įtraukti
Tada įtraukite „Firebase“ kredencialus, gautus iš „Google Firebase“. Tai apims pagrindinio kompiuterio pavadinimą su jūsų projekto pavadinimu ir slaptą raktą. Norėdami rasti šias vertes, vadovaukitės ankstesne „Firebase“ mokymo programa.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Įtraukite „Wi-Fi“ kredencialus, pvz., „WiFi“ SSID ir slaptažodį.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Pradėkite „I2C“ skystųjų kristalų ekraną su įrenginio adresu (čia jis yra 0x27) ir skystųjų kristalų tipu. Taip pat įtraukite „Servo Motors“ įėjimo ir išėjimo vartus.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Pradėkite „I2C LCD“ ryšį „I2C“.
Viela. Pradžia (D2, D1);
Prijunkite ir išeikite servovariklį prie „NodeMCU“ D5, D6 kaiščių.
myservo.attach (D6); myservos.attach (D5);
Pasirinkite Ultragarsinio jutiklio paleidimo kaištį kaip išvestį ir Echo kaištį kaip įvestį. Ultragarsinis jutiklis bus naudojamas norint nustatyti, kur yra automobilių stovėjimo aikštelė. Jei automobilis užėmė vietą, jis švytės kitaip, jis nešvies.
pinMode (TRIG, OUTPUT); „pinMode“ (ECHO, INPUT);
IR N jutiklio nuskaitymui naudojami du „NodeMCU“ kaiščiai D0 ir D4. IR jutiklis veiks kaip įėjimo ir išėjimo vartų jutiklis. Tai nustatys automobilio buvimą.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Prisijunkite prie „WiFi“ ir palaukite šiek tiek laiko, kol jis bus prijungtas.
„WiFi.begin“ (WIFI_SSID, WIFI_PASSWORD); Serial.print („Prisijungimas prie“); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); vėlavimas (500); }
Pradėkite ryšį su „Firebase“ naudodami pagrindinius kompiuterius ir slaptąjį raktą kaip kredencialus.
„Firebase.begin“ (FIREBASE_HOST, FIREBASE_AUTH);
Pradėkite „i2c 16x2 LCD“ ir nustatykite žymeklio padėtį 0 -oje 0 -osios stulpelio eilutėje.
lcd.begin (); lcd.setCursor (0, 0);
Paimkite atstumą nuo ultragarso jutiklio. Tai bus naudojama norint nustatyti transporto priemonės buvimą konkrečioje vietoje. Pirmiausia išsiųskite 2 mikrosekundžių impulsą ir tada perskaitykite gautą impulsą. Tada paverskite jį „cm“. Sužinokite daugiau apie atstumo matavimą naudojant ultragarso jutiklį čia.
„digitalWrite“ (TRIG, LOW); vėlavimasMikrosekundės (2); „digitalWrite“ (TRIG, HIGH); vėlavimasMikrosekundės (10); „digitalWrite“ (TRIG, LOW); trukmė = pulseIn (ECHO, HIGH); atstumas = (trukmė / 2) / 29,1;
Skaitmeniškai perskaitykite IR jutiklio kaištį kaip įėjimo jutiklį ir patikrinkite, ar jis aukštas. Jei jis didelis, skaičiuokite prieaugio įvestį ir atspausdinkite jį 16x2 LCD ekrane, taip pat serijiniame monitoriuje.
int carEntry = digitalRead (carEnter); if (carEntry == AUKŠTAS) { countYes ++; Serial.print ("Įvestas automobilis ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Įvažiuotas automobilis");
Taip pat perkelkite servo variklio kampą, kad atidarytumėte įėjimo vartus. Pakeiskite kampą pagal savo naudojimo atvejį.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); vėlavimas (5); } vėlavimas (2000); for (pos = 45; pos <= 140; pos + = 1) { // 1 laipsnio pakopomis myservos.write (pos); vėlavimas (5); }
Ir nusiųskite skaitymą į „Firebase“ naudodami „Firebase“ bibliotekos „ pushString“ funkciją.
„Firebase.pushString“ („/ Parking Status /“, „fireAvailable“);
Atlikite panašius veiksmus, kaip aprašyta Exit IR jutiklyje ir Exit servo variklyje.
int carExit = digitalRead (carExited); if (carExit == AUKŠTAS) { countYes--; „Serial.print“ („Išvažiavęs automobilis =“); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print („Išvažiavęs automobilis“); už (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); vėlavimas (5); } vėlavimas (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // 1 laipsnio žingsniais myservo.write (pos1); vėlavimas (5); } Firebase.pushString ("/ Parkavimo būsena /", fireAvailable); lcd.clear (); }
Patikrinkite, ar automobilis atvažiavo į stovėjimo vietą ir ar jis atvažiavo, tada švytėjimo lemputė duoda signalą, kad vieta pilna.
jei (atstumas <6) { Serial.println ("Užimta"); „digitalWrite“ (vedamas, AUKŠTAS); }
Kita rodo, kad vietoje yra.
if (atstumas> 6) { Serial.println ("Galimas"); digitalWrite (led, LOW); }
Apskaičiuokite bendrą tuščią vietą automobilių stovėjimo aikštelėje ir išsaugokite ją eilutėje, kad duomenis išsiųstumėte į „Firebase“.
Tuščia = allSpace - countYes; Available = String ("Available =") + String (Empty) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (Empty) + String ("/") + String (allSpace); Taip pat atspausdinkite duomenis į „i2C LCD“. lcd.setCursor (0, 0); lcd.print (galima);
Štai kaip galima stebėti automobilių stovėjimo aikštelę „Firebase“ internete, kaip parodyta žemiau esančioje nuotraukoje:
Tai užbaigia visą išmaniojo parkavimo sistemą naudojant ESP8266 „NodeMCU“ modulį ir įvairius periferinius įrenginius. Norėdami pakeisti ultragarso ir IR jutiklius, galite naudoti ir kitus jutiklius. Yra daugybė išmaniosios parkavimo sistemos pritaikymo galimybių, todėl ją galima pridėti įvairiais produktais. Komentuokite žemiau, jei turite kokių nors abejonių, arba kreipkitės į mūsų forumą, kad gautumėte daugiau palaikymo.