עם הפופולריות הגוברת של ערים חכמות, תמיד יש דרישה לפתרונות חכמים לכל תחום. ה- IoT אפשר את האפשרות של ערים חכמות באמצעות תכונת השליטה באינטרנט. אדם יכול לשלוט במכשירים המותקנים בביתו או במשרדו מכל מקום בעולם באמצעות טלפון חכם או כל מכשיר המחובר לאינטרנט. יש מספר תחומים בעיר חכמה וחניה חכמה היא אחד התחומים הפופולריים בעיר החכמה.
תעשיית החניה החכמה ראתה מספר חידושים כגון מערכת ניהול חניה חכמה, בקרת שער חכם, מצלמות חכמות אשר יכולות לזהות סוגי רכבים, ANPR (זיהוי לוחית מספר אוטומטי), מערכת תשלום חכם, מערכת כניסה חכמה ורבים נוספים. כיום תלווה גישה דומה וייבנה פיתרון חניה חכם אשר ישתמש בחיישן קולי כדי לזהות נוכחות רכב ולהפעיל את השער להיפתח או להיסגר אוטומטית. ה- ESP8266 NodeMCU ישמש כאן כבקר הראשי לשליטה בכל ציוד היקפי המחובר אליו.
ESP8266 הוא הבקר הפופולרי ביותר לבניית יישומים מבוססי IoT מכיוון שיש לו תמיכה מובנית ב- Wi-Fi להתחברות לאינטרנט. בעבר השתמשנו בו לבניית פרויקטים רבים של IoT כמו:
- מערכת אבטחה מבוססת IOT
- תיבת חיבורים חכמה לאוטומציה ביתית
- מערכת ניטור זיהום אוויר מבוססת IOT
- שלח נתונים ל- ThingSpeak
בדוק את כל הפרויקט מבוסס ESP8266 כאן.
במערכת חניה חכמה זו של IoT, אנו נשלח נתונים לשרת האינטרנט לחיפוש הזמינות של מקום לחניה לרכב. כאן אנו משתמשים ב- Firebase כמסד נתונים של Iot כדי לקבל את נתוני זמינות החניה. לשם כך עלינו למצוא את כתובת המארח של Firebase ואת המפתח הסודי לאישור. אם אתה כבר יודע להשתמש ב- Firebase עם NodeMCU, תוכל להתקדם אחרת, תחילה עליך ללמוד להשתמש ב- Google Firebase Console עם ESP8266 NodeMCU כדי לקבל את כתובת המארח והמפתח הסודי.
רכיבים נדרשים
- ESP8266 NodeMCU
- חיישן קולי
- מנוע סרוו DC
- חיישני IR
- תצוגת LCD ixc 16x2
- מגשרים
תרשים מעגל
תרשים המעגל למערכת חניה זו מבוססת IoT מובא להלן. זה כולל שני חיישני IR, שני מנועי סרוו, חיישן קולי אחד ו- LCD 16x2.
כאן ה- ESP8266 ישלוט בתהליך השלם וגם ישלח את המידע על זמינות החניה לגוגל Firebase, כך שניתן יהיה לפקח עליו מכל מקום בעולם באינטרנט. שני חיישני IR משמשים בשער הכניסה והיציאה כדי לזהות נוכחות של מכונית ולפתוח או לסגור את השער באופן אוטומטי. חיישן IR משמש לזיהוי כל אובייקט על ידי שליחת וקבלת קרני ה- IR, למידע נוסף על חיישן IR כאן.
שני סרוויים ישמשו כשער כניסה ויציאה והם מסתובבים כדי לפתוח או לסגור את השער. לבסוף נעשה שימוש בחיישן קולי כדי לזהות אם חריץ החניה זמין או תפוס ולשלוח את הנתונים ל- ESP8266 בהתאם. בדוק את הסרטון שניתן בסוף הדרכה זו כדי להבין את העבודה המלאה של הפרויקט.
כך ייראה אב טיפוס שלם זה של מערכת חניה חכמה:
תכנות ESP8266 NodeMCU לפיתרון חניה חכם
קוד מלא עם סרטון עבודה ניתן בסוף הדרכה זו, כאן אנו מסבירים את התוכנית המלאה להבנת עבודתו של הפרויקט.
לתכנות NodeMCU, פשוט חבר את NodeMCU למחשב באמצעות כבל מיקרו USB ופתח את Arduino IDE. הספריות נדרשות עבור I2C Display ו- Servo Motor. LCD יציג את הזמינות של מקומות חניה ומנועי סרוו ישמשו לפתיחה וסגירה של שערי הכניסה והיציאה. Wire.h הספרייה תשמש ממשק LCD בפרוטוקול I2C. הסיכות עבור I2C ב- ESP8266 NodeMCU הן D1 (SCL) ו- D2 (SDA). מסד הנתונים המשמש כאן יהיה Firebase, כך שכאן אנו כוללים את הספרייה (FirebaseArduino.h) עבור אותו הדבר.
#לִכלוֹל
ואז כלול את אישורי Firebase שקיבלת מ- Google Firebase. אלה יכללו את שם המארח המכיל את שם הפרויקט שלך ומפתח סודי. כדי למצוא ערכים אלה עקוב אחר המדריך הקודם בנושא Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
כלול את אישורי ה- Wi-Fi כגון WiFi SSID וסיסמה.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
אתחל את I2C LCD עם כתובת המכשיר (הנה זה 0x27) וסוג ה- LCD. כלול גם את סרוו מוטורס לשער כניסה ויציאה.
LiquidCrystal_I2C lcd (0x27, 16, 2); סרוו מיסרו; סרוו myservo1;
התחל את תקשורת I2C עבור I2C LCD.
Wire.begin (D2, D1);
חבר את מנוע סרוו הכניסה והיציאה לסיכות D5, D6 של NodeMCU.
myservo.attach (D6); myservos.attach (D5);
בחר את פין ההדק של חיישן אולטרה סאונד כפלט ואת פין ההד כקלט. החיישן הקולי ישמש לאיתור זמינות מקום החניה. אם המכונית תפסה את החלל אז היא תזרח אחרת היא לא תבריק.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
שני הפינים D0 ו- D4 של NodeMCU משמשים לקריאת חיישני IR. חיישן ה- IR ישמש כחיישן שער כניסה ויציאה. זה יגלה נוכחות של מכוניות.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
התחבר ל- WiFi והמתין זמן מה עד שיתחבר.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("מתחבר אל"); Serial.print (WIFI_SSID); בעוד (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); עיכוב (500); }
התחל קשר עם Firebase עם מארח ומפתח סודי כאישורי כניסה.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
בגין LCD 16x2 I2C וקובע את מיקום סמן על 0 ה בשורה 0 ה טור.
lcd.begin (); lcd.setCursor (0, 0);
קח את המרחק מחיישן קולי. זה ישמש לאיתור נוכחות הרכב במקום המסוים. ראשית שלח את הדופק של שני המיקרו-שניות ואז קרא את הדופק שהתקבל. ואז להמיר אותו ל 'ס"מ'. למידע נוסף על מדידת מרחק באמצעות חיישן קולי כאן.
digitalWrite (TRIG, LOW); עיכוב מיקרו-שניות (2); digitalWrite (TRIG, HIGH); עיכוב מיקרו-שניות (10); digitalWrite (TRIG, LOW); משך = pulseIn (ECHO, HIGH); מרחק = (משך / 2) / 29.1;
קרא דיגיטלית את סיכת חיישן ה- IR כחיישן כניסה ובדוק אם הוא גבוה. אם הוא גבוה אז ספירת הכניסה תוסיפו והדפיסו אותו לתצוגת LCD בגודל 16x2 וגם לצג סדרתי.
int carEntry = digitalRead (carEnter); אם (carEntry == HIGH) { countYes ++; Serial.print ("רכב נכנס ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("נכנס רכב");
העבר גם את זווית מנוע הסרוב לשער כניסה פתוח. שנה את הזווית בהתאם למקרה השימוש שלך.
עבור (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); עיכוב (5); } עיכוב (2000); עבור (pos = 45; pos <= 140; pos + = 1) { // בשלבים של מעלה אחת myservos.write (pos); עיכוב (5); }
ושלח את הקריאה ל- firebase באמצעות פונקציית pushString בספריית Firebase.
Firebase.pushString ("/ מצב חניה /", fireAvailable);
בצע צעדים דומים כמו לעיל עבור חיישן IR ויציאת מנוע סרוו.
int carExit = digitalRead (carExited); אם (carExit == HIGH) { countYes--; Serial.print ("יציאה ממכונית ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("יציאת רכב"); עבור (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); עיכוב (5); } עיכוב (2000); עבור (pos1 = 45; pos1 <= 140; pos1 + = 1) { // בשלבים של מעלה אחת myservo.write (pos1); עיכוב (5); } Firebase.pushString ("/ מצב חניה /", fireAvailable); lcd.clear (); }
בדוק אם המכונית הגיעה למקום החניה ואם היא הגיעה אז זוהר הוביל נותן את האות שהמקום מלא.
אם (מרחק <6) { Serial.println ("תפוס"); digitalWrite (led, HIGH); }
אחרת מראה שהמקום זמין.
אם (מרחק> 6) { Serial.println ("זמין"); digitalWrite (led, LOW); }
חשב את השטח הריק הכולל בתוך החניה ושמור אותו במחרוזת כדי לשלוח את הנתונים לבסיס האש.
ריק = allSpace - countYes; זמין = מחרוזת ("זמין =") + מחרוזת (ריק) + מחרוזת ("/") + מחרוזת (allSpace); fireAvailable = מחרוזת ("זמין =") + מחרוזת (ריק) + מחרוזת ("/") + מחרוזת (allSpace); הדפיסו גם את הנתונים ל- i2C LCD. lcd.setCursor (0, 0); lcd.print (זמין);
כך ניתן לעקוב באופן מקוון אחר זמינות החניה ב- Firebase, כפי שמוצג בתמונה הבאה:
פעולה זו מסיימת את מערכת החניה החכמה השלמה באמצעות מודול ה- ESP8266 NodeMCU וציוד היקפי שונה. אתה יכול להשתמש בחיישנים אחרים גם להחלפה של חיישן קולי ו- IR. יש יישום עצום של מערכת חניה חכמה וניתן להוסיף מוצרים שונים כדי להפוך אותה לחכמה יותר. הגיב למטה אם יש לך ספק או פנה לפורום שלנו לקבלת תמיכה נוספת.