مع تزايد شعبية المدن الذكية ، هناك دائمًا طلب على الحلول الذكية لكل مجال. أتاحت إنترنت الأشياء إمكانية المدن الذكية من خلال ميزة التحكم في الإنترنت. يمكن لأي شخص التحكم في الأجهزة المثبتة في منزله أو مكتبه من أي مكان في العالم بمجرد استخدام الهاتف الذكي أو أي أجهزة متصلة بالإنترنت. هناك العديد من المجالات في المدينة الذكية ، ويعتبر Smart Parking أحد المجالات الشائعة في المدينة الذكية.
شهدت صناعة وقوف السيارات الذكية عددًا من الابتكارات مثل نظام إدارة مواقف السيارات الذكي ، والتحكم في البوابة الذكية ، والكاميرات الذكية التي يمكنها اكتشاف أنواع المركبات ، و ANPR (التعرف التلقائي على لوحة الأرقام) ، ونظام الدفع الذكي ، ونظام الدخول الذكي وغيرها الكثير وسيتبع نهج مماثل اليوم و حل مواقف السيارات الذكية وسيتم بناء والتي سوف تستخدم أجهزة الاستشعار بالموجات فوق الصوتية للكشف عن وجود السيارة وتؤدي الى بوابة لفتح أو إغلاق تلقائيا. سيتم استخدام ESP8266 NodeMCU هنا كوحدة تحكم رئيسية للتحكم في جميع الأجهزة الطرفية المرفقة به.
ESP8266 هي وحدة التحكم الأكثر شيوعًا لبناء التطبيقات القائمة على إنترنت الأشياء نظرًا لأنها تحتوي على دعم داخلي لشبكة Wi-Fi للاتصال بالإنترنت. استخدمناها سابقًا لبناء العديد من مشاريع إنترنت الأشياء مثل:
- نظام أمان قائم على إنترنت الأشياء
- صندوق تقاطع ذكي لأتمتة المنزل
- نظام مراقبة تلوث الهواء القائم على إنترنت الأشياء
- أرسل البيانات إلى ThingSpeak
تحقق من جميع المشاريع القائمة على ESP8266 هنا.
في نظام وقوف السيارات الذكي IoT هذا ، سنرسل البيانات إلى خادم الويب للبحث عن مساحة متاحة لمواقف السيارات. نحن هنا نستخدم Firebase كقاعدة بيانات Iot للحصول على بيانات توفر مواقف السيارات. لهذا نحتاج إلى العثور على عنوان مضيف Firebase والمفتاح السري للتفويض. إذا كنت تعرف بالفعل استخدام firebase مع NodeMCU ، فيمكنك المضي قدمًا وإلا يجب أن تتعلم أولاً استخدام Google Firebase Console مع ESP8266 NodeMCU للحصول على عنوان المضيف والمفتاح السري.
المكونات مطلوبة
- ESP8266 NodeMCU
- أجهزة الاستشعار بالموجات فوق الصوتية
- محرك سيرفو DC
- مجسات الأشعة تحت الحمراء
- شاشة عرض 16x2 i2c LCD
- صداري
مخطط الرسم البياني
يرد أدناه مخطط الدائرة لنظام وقوف السيارات القائم على إنترنت الأشياء. إنه يشتمل على مستشعر IR ، ومحركين مؤازرين ، ومستشعر واحد بالموجات فوق الصوتية وشاشة LCD مقاس 16 × 2.
هنا سيتحكم ESP8266 في العملية الكاملة ويرسل أيضًا معلومات توفر مواقف السيارات إلى Google Firebase بحيث يمكن مراقبتها من أي مكان في العالم عبر الإنترنت. يستخدم مستشعران يعملان بالأشعة تحت الحمراء عند بوابة الدخول والخروج للكشف عن وجود السيارة وفتح البوابة أو إغلاقها تلقائيًا. يستخدم مستشعر الأشعة تحت الحمراء للكشف عن أي كائن عن طريق إرسال واستقبال الأشعة تحت الحمراء ، وتعرف على المزيد حول مستشعر الأشعة تحت الحمراء هنا.
ستعمل مؤازرتان كبوابة دخول وخروج وتدوران لفتح أو إغلاق البوابة. أخيرًا ، يتم استخدام مستشعر الموجات فوق الصوتية لاكتشاف ما إذا كانت فتحة الانتظار متاحة أم مشغولة وإرسال البيانات إلى ESP8266 وفقًا لذلك. تحقق من الفيديو المقدم في نهاية هذا البرنامج التعليمي لفهم العمل الكامل للمشروع.
هكذا سيبدو النموذج الأولي الكامل لنظام وقوف السيارات الذكي:
برمجة ESP8266 NodeMCU لحل مواقف السيارات الذكية
يتم تقديم رمز كامل مع فيديو عملي في نهاية هذا البرنامج التعليمي ، وهنا نوضح البرنامج الكامل لفهم عمل المشروع.
لبرمجة NodeMCU ، ما عليك سوى توصيل NodeMCU بالكمبيوتر باستخدام كابل Micro USB وفتح Arduino IDE. المكتبات مطلوبة لشاشة I2C ومحرك مؤازر. ستعرض شاشة 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) ؛ مؤازرة myservo. مضاعفات myservo1 ؛
ابدأ اتصال I2C الخاص بـ I2C LCD.
Wire.begin (D2، D1) ؛
قم بتوصيل محرك سيرفو للدخول والخروج بالدبابيس D5 و D6 في NodeMCU.
myservo.attach (D6) ؛ myservos.attach (D5) ؛
حدد Trigger Pin الخاص بجهاز استشعار الموجات فوق الصوتية مثل Output و Echo Pin كمدخل. سيتم استخدام مستشعر الموجات فوق الصوتية للكشف عن توفر مكان وقوف السيارات. إذا احتلت السيارة المساحة فسوف تتوهج وإلا فلن تتوهج.
pinMode (TRIG ، الإخراج) ؛ pinMode (ECHO ، INPUT) ؛
يتم استخدام الدبابيس D0 و D4 من NodeMCU لأخذ قراءة مستشعر الأشعة تحت الحمراء. سيعمل مستشعر الأشعة تحت الحمراء كمستشعر بوابة الدخول والخروج. سيكتشف هذا وجود السيارة.
pinMode (carExited ، INPUT) ؛ pinMode (carEnter ، INPUT) ؛
اتصل بشبكة WiFi وانتظر بعض الوقت حتى يتم الاتصال.
WiFi.begin (WIFI_SSID ، WIFI_PASSWORD) ؛ Serial.print ("الاتصال بـ") ؛ Serial.print (WIFI_SSID) ؛ while (WiFi.status ()! = WL_CONNECTED) { Serial.print (".") ؛ تأخير (500) ؛ }
ابدأ الاتصال بـ Firebase باستخدام المضيف والمفتاح السري كبيانات اعتماد.
Firebase.begin (FIREBASE_HOST، FIREBASE_AUTH) ،
تبدأ I2C LCD 16X2 وتحديد موقف المؤشر في 0 عشر الصف 0 عشر العمود.
lcd.begin () ، lcd.setCursor (0 ، 0) ؛
خذ المسافة من جهاز الاستشعار بالموجات فوق الصوتية. سيتم استخدام هذا للكشف عن وجود السيارة في مكان معين. أرسل أولاً النبضة البالغة 2 ميكرو ثانية ثم اقرأ النبضة المستلمة. ثم قم بتحويله إلى "سم". تعرف على المزيد حول قياس المسافة باستخدام مستشعر الموجات فوق الصوتية هنا.
الكتابة الرقمية (TRIG ، منخفضة) ؛ تأخير ميكروثانية (2) ؛ الكتابة الرقمية (TRIG ، عالية) ؛ تأخير ميكروثانية (10) ؛ الكتابة الرقمية (TRIG ، منخفضة) ؛ المدة = pulseIn (ECHO ، HIGH) ؛ المسافة = (المدة / 2) / 29.1 ؛
اقرأ دبوس مستشعر الأشعة تحت الحمراء رقميًا باعتباره مستشعر دخول وتحقق مما إذا كان مرتفعًا. إذا كان مرتفعًا ، فقم بزيادة عدد مرات الدخول وطباعته على شاشة LCD مقاس 16 × 2 وأيضًا على الشاشة التسلسلية.
int carEntry = digitalRead (carEnter) ؛ if (carEntry == HIGH) { countYes ++؛ Serial.print ("دخول السيارة =") ؛ Serial.println (عدد نعم) ؛ 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 ("/ Parking Status /"، fireAvailable) ؛
قم بتنفيذ خطوات مماثلة كما هو مذكور أعلاه بالنسبة لمستشعر الخروج بالأشعة تحت الحمراء وخروج محرك سيرفو.
int carExit = digitalRead (carExited) ؛ إذا (carExit == HIGH) { countYes--؛ Serial.print ("خروج السيارة =") ؛ Serial.println (عدد نعم) ؛ 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 ("/ Parking Status /"، fireAvailable) ؛ lcd.clear () ؛ }
تحقق مما إذا كانت السيارة قد وصلت إلى مكان وقوف السيارات وما إذا كانت قد وصلت ، ثم أدى الوهج لإعطاء إشارة إلى أن المكان ممتلئ.
إذا (مسافة <6) { Serial.println ("محتلة") ؛ الكتابة الرقمية (led ، عالية) ؛ }
أظهر آخر أن المكان متاح.
إذا (المسافة> 6) { Serial.println ("متاح") ؛ الكتابة الرقمية (led ، منخفضة) ؛ }
احسب إجمالي المساحة الفارغة داخل ساحة الانتظار واحفظها في السلسلة لإرسال البيانات إلى Firebase.
فارغ = allSpace - count نعم ؛ متوفر = سلسلة ("متاح =") + سلسلة (فارغة) + سلسلة ("/") + سلسلة (allSpace) ؛ fireAvailable = String ("Available =") + String (Empty) + String ("/") + String (allSpace) ؛ قم أيضًا بطباعة البيانات على شاشة i2C LCD. lcd.setCursor (0 ، 0) ؛ lcd.print (متاح) ؛
هذه هي الطريقة التي يمكن بها تتبع مدى توفر مواقف السيارات عبر الإنترنت على Firebase كما هو موضح في اللقطة أدناه:
هذا ينهي نظام وقوف السيارات الذكي الكامل باستخدام وحدة ESP8266 NodeMCU والأجهزة الطرفية المختلفة. يمكنك استخدام مستشعرات أخرى أيضًا لاستبدال مستشعر الموجات فوق الصوتية والأشعة تحت الحمراء. هناك تطبيق واسع لنظام وقوف السيارات الذكي ويمكن إضافة منتجات مختلفة لجعله أكثر ذكاءً. قم بالتعليق أدناه إذا كان لديك أي شك أو تواصل مع منتدانا للحصول على مزيد من الدعم.