Az intelligens városok növekvő népszerűségével minden területre mindig van igény az intelligens megoldásokra. Az IoT lehetővé tette az intelligens városok lehetőségét az internetvezérlő funkción keresztül. Egy személy a világ bármely pontjáról vezérelheti az otthonába vagy az irodájába telepített eszközöket, csupán egy okostelefon vagy bármilyen internethez csatlakoztatott eszköz használatával. Az okos városban több domain van, és az intelligens parkolás az intelligens város egyik népszerű domainje.
Az intelligens parkolási ágazat számos olyan újítást látott, mint az intelligens parkoláskezelő rendszer, az intelligens kapu vezérlés, az intelligens kamerák, amelyek képesek felismerni a járműtípusokat, az ANPR (automatikus rendszámtábla-felismerés), az intelligens fizetési rendszer, az intelligens beléptető rendszer és még sok más. Ma hasonló megközelítést fognak követni, és intelligens parkolási megoldást építenek, amely ultrahangos érzékelővel érzékeli a jármű jelenlétét, és a kaput automatikusan kinyitja vagy bezárja. Az ESP8266 NodeMCU-t itt fogják használni fő vezérlőként a hozzá csatlakoztatott összes periféria vezérléséhez.
Az ESP8266 a legnépszerűbb vezérlő az IoT-alapú alkalmazások készítéséhez, mivel beépített támogatást nyújt a Wi-Fi-hez az internethez való csatlakozáshoz. Korábban sok IoT projekt felépítésére használtuk, például:
- IOT alapú biztonsági rendszer
- Intelligens csatlakozódoboz az otthoni automatizáláshoz
- IOT alapú légszennyezés megfigyelő rendszer
- Adatok küldése a ThingSpeak számára
Itt ellenőrizheti az összes ESP8266 alapú projektet.
Ebben az IoT intelligens parkolási rendszerben adatokat küldünk a webszervernek, hogy felkutassa, rendelkezésre áll-e hely a járművek parkolásához. Itt a firebase-t használjuk Iot-adatbázisként a parkolási elérhetőség megszerzéséhez. Ehhez meg kell találnunk a Firebase gazdagép címét és az engedélyezés titkos kulcsát. Ha már ismeri a Firebase használatát a NodeMCU-val, akkor előreléphet, előbb meg kell tanulnia a Google Firebase Console használatát az ESP8266 NodeMCU-val a gazdagép címének és titkos kulcsának megszerzéséhez.
Szükséges alkatrészek
- ESP8266 NodeMCU
- Ultrahangos érzékelő
- DC szervomotor
- IR érzékelők
- 16x2 i2c LCD kijelző
- Ugrók
Kördiagramm
Az IoT-alapú járműparkoló rendszer kapcsolási rajza az alábbiakban látható. Két IR-érzékelőt, két szervomotort, egy ultrahangos érzékelőt és egy 16x2 LCD-t tartalmaz.
Itt az ESP8266 ellenőrzi a teljes folyamatot, és elküldi a parkolási lehetőségekkel kapcsolatos információkat a Google Firebase-nek is, hogy az az interneten keresztül a világ bármely pontjáról figyelhető legyen. Két IR-érzékelőt használnak a be- és kilépési kapunál az autó jelenlétének észlelésére és a kapu automatikus nyitására vagy bezárására. Az IR érzékelőt bármilyen tárgy detektálására használják az IR sugarak küldésével és fogadásával.
Két szervó fog be- és kilépő kapuként működni, és forogva nyitják vagy zárják a kaput. Végül egy ultrahangos érzékelőt használnak annak felderítésére, hogy a parkolóhely rendelkezésre áll-e vagy foglalt-e, és ennek megfelelően elküldi az adatokat az ESP8266-nak. Ellenőrizze az oktatóanyag végén található videót, hogy megértse a projekt teljes működését.
Így néz ki ez a teljes intelligens parkolási rendszer prototípusa:
ESP8266 NodeMCU programozása az intelligens parkolási megoldáshoz
A teljes kód egy működő videóval a leírás végén található, itt elmagyarázzuk a teljes programot, hogy megértsük a projekt működését.
A NodeMCU programozásához egyszerűen csatlakoztassa a NodeMCU-t a számítógéphez egy mikro-USB-kábellel, és nyissa meg az Arduino IDE-t. A könyvtárakra az I2C Display és a Servo Motor számára van szükség. Az LCD kijelzi a parkolóhelyek rendelkezésre állását, és a szervomotorokat használják a be- és kijárat kapujának kinyitására és bezárására. A Wire.h könyvtárat az LCD összekapcsolására használják az i2c protokollban. Az ESP8266 NodeMCU I2C csapjai D1 (SCL) és D2 (SDA). Az itt használt adatbázis a Firebase lesz, tehát itt szerepel a könyvtár (FirebaseArduino.h) is.
#include
Ezután adja meg a Firebase hitelesítő adatait, amelyeket a Google Firebase-től kapott. Ezek tartalmazzák a gazdagép nevét, amely tartalmazza a projekt nevét és egy titkos kulcsot. Ezen értékek megtalálásához kövesse a Firebase előző útmutatóját.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Tartalmazza a Wi-Fi hitelesítő adatokat, például a WiFi SSID-t és a jelszót.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Inicializálja az I2C LCD-t az eszköz címével (itt ez 0x27) és az LCD típusával. Tartalmazza a szervó motorokat a be- és kilépési kapuhoz.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Indítsa el az I2C LCD kommunikációt.
Huzal kezdete (D2, D1);
Csatlakoztassa a be- és kilépés szervomotort a NodeMCU D5, D6 érintkezõihez.
myservo.attach (D6); myservos.attach (D5);
Válassza ki az Ultrahangos érzékelő kiváltó tüskéjét kimenetként és visszhangtű bemenetként. Az ultrahangos érzékelőt a parkolóhely elérhetőségének észlelésére használják. Ha az autó elfoglalta a helyet, akkor világítani fog, különben nem fog izzani.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
A NodeMCU két D0 és D4 érintkezőjét használjuk az IR érzékelő leolvasására. Az infravörös érzékelő belépési és kilépési kapu érzékelőként működik. Ez érzékeli az autó jelenlétét.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Csatlakozzon a WiFi-hez, és várjon egy ideig, amíg csatlakozik.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Csatlakozás a következőkhöz"); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Soros.nyomtatás ("."); késés (500); }
Kezdje a kapcsolatot a Firebase szolgáltatással a Host és a Titkos kulccsal mint hitelesítő adatokkal.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Kezdjük I2C 16x2 LCD és beállított kurzorpozícióba 0 th 0 sor th oszlopon.
lcd.begin (); lcd.setCursor (0, 0);
Vegye ki a távolságot az ultrahangos érzékelőtől. Ezt fogják használni a jármű jelenlétének detektálására az adott helyen. Először küldje el a 2 mikroszekundumos impulzust, majd olvassa el a kapott impulzust. Ezután alakítsa át cm-re. Tudjon meg többet a távolság ultrahangos érzékelővel történő méréséről itt.
digitalWrite (TRIG, LOW); késleltetés mikroszekundum (2); digitalWrite (TRIG, HIGH); késleltetés mikroszekundum (10); digitalWrite (TRIG, LOW); időtartam = pulzusIn (ECHO, HIGH); távolság = (időtartam / 2) / 29,1;
Digitálisan olvassa el az infravörös érzékelő tüskéjét belépési érzékelőként, és ellenőrizze, hogy magas-e. Ha magas, akkor növelje a növekményes bejegyzés számát, és nyomtassa ki 16x2 LCD-kijelzőre, valamint soros monitorra is.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Beírt autó ="); Soros.println (countYes); lcd.setCursor (0, 1); lcd.print ("Belépett autó");
A bejárati kapu nyitásához mozgassa a szervomotor szögét is. Változtassa meg a szöget a használati esete szerint.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); késleltetés (5); } késés (2000); for (pos = 45; pos <= 140; pos + = 1) { // 1 fokos myservos.write (pos); késleltetés (5); }
És küldje el az olvasást a Firebase-be a Firebase könyvtár pushString funkciójának használatával.
Firebase.pushString ("/ Parkolás állapota /", fireAvailable);
Tegye a fentiekhez hasonló lépéseket az Exit IR érzékelő és az Exit szervomotor esetében.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Soros.nyomtatás ("Exited Car ="); Soros.println (countYes); lcd.setCursor (0, 1); lcd.print ("Kilépett az autóból"); for (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); késleltetés (5); } késés (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // 1 fokos myservo.write (pos1) lépésekben; késleltetés (5); } Firebase.pushString ("/ parkolási állapot /", fireAvailable); lcd.clear (); }
Ellenőrizze, hogy az autó bejött-e a parkolóba, és megérkezett-e, majd világítson, ami azt jelzi, hogy a hely megtelt.
if (távolság <6) { Serial.println ("Elfoglalt"); digitalWrite (led, HIGH); }
Egyébként azt mutatják, hogy a helyszín elérhető.
if (távolság> 6) { Serial.println ("Elérhető"); digitalWrite (led, LOW); }
Számolja ki a parkolóban lévő teljes üres helyet, és mentse el a karakterláncba, hogy az adatokat elküldje a firebase-be.
Üres = allSpace - countYes; Elérhető = String ("Elérhető =") + String (Üres) + String ("/") + String (allSpace); fireAvailable = Karakterlánc ("Elérhető =") + Karakterlánc (Üres) + Karakterlánc ("/") + Karakterlánc (allSpace); Az adatokat nyomtassa ki az i2C LCD-re is. lcd.setCursor (0, 0); lcd.print (elérhető);
Így követhető nyomon a parkolás elérhetősége online a Firebase-n, az alábbi pillanatkép alapján:
Ez befejezi a teljes intelligens parkolási rendszert az ESP8266 NodeMCU modul és a különféle perifériák használatával. Más érzékelőket is használhat az ultrahangos és az infravörös érzékelők cseréjéhez. Az intelligens parkolási rendszer kiterjedt alkalmazása van, és különböző termékeket lehet hozzáadni annak intelligensebbé tételéhez. Kommentáljon alább, ha kétségei vannak, vagy további támogatásért forduljon fórumunkhoz.