جدول المحتويات:
- الخطوة 1: اربط الدائرة
- الخطوة الثانية: تحضير تطبيقات الويب
- الخطوة 3: برمجة لوحة NodeMCU
- الخطوة 4: استمتع بجهازك
فيديو: إخطارات الأحداث في الوقت الفعلي باستخدام NodeMCU (Arduino) و Google Firebase و Laravel: 4 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
هل أردت يومًا أن يتم إخطارك عند اتخاذ إجراء على موقع الويب الخاص بك ولكن البريد الإلكتروني ليس مناسبًا؟ هل تريد سماع صوت أو جرس في كل مرة تقوم فيها بعملية بيع؟ أم أن هناك حاجة إلى اهتمامك الفوري بسبب حالة طارئة في المنزل؟
يمكن لهذا الجهاز تنبيهك في الوقت الفعلي بأي شيء تريده.
الخطوة 1: اربط الدائرة
يتكون الجهاز الذي صنعته من لوحة NodeMCU مع جرس لتنبيهي بالمبيعات التي تتم على موقع الويب. يتم برمجة المتحكم الدقيق باستخدام برنامج Arduino ويمكن أن يكون الجزء المشغل أي تطبيق ويب أو iOS أو Android. لقد أنشأت تطبيقين بسيطين للويب ، أحدهما في Laravel والآخر بتنسيق HTML و JavaScript عادي على سبيل المثال.
نظرًا لأن لوحة NodeMCU يمكن أن تعمل بأمان حتى حوالي 12 مللي أمبير من التيار على المسامير ، يتم توصيل الجرس من خلال ترانزستور NPN. لقد استخدمت 2N2222 لأن لدي الكثير منهم في الأرجاء ولكنني متأكد من أن المبدأ سيكون هو نفسه مع أي ترانزستور NPN آخر.
لتوصيل الدائرة الكهربائية ، قم بتوصيل مجمع الترانزستور بدبوس Vin الموجود على اللوحة. يعمل الجرس عند 5 فولت ، وبما أننا سنعمل على تشغيل الجهاز من USB ، فإن هذا الدبوس سيعطينا الجهد قبل منظم 3.3 فولت على اللوحة.
بعد ذلك ، قم بتوصيل الجانب الموجب من الجرس الموجود على باعث الترانزستور ، والدبوس السالب للجرس بأي من المسامير الأرضية الموجودة على اللوحة. لقد استخدمت الدبوس 2 ، ولكن يمكنك أيضًا توصيله في أطراف التوصيل 9 أو 25 أو 29.
يتم توصيل قاعدة الترانزستور بالدبوس D2 الذي يرتبط بـ GPIO 4 في برنامج Arduino. مع هذا الإعداد ، سيعمل الترانزستور بشكل فعال كمفتاح تشغيل الجرس في كل حدث. بدلاً من الجرس ، يمكنك توصيل مرحل بنفس الطريقة لتتمكن من قيادة أي جهاز رئيسي مثل المصابيح الكهربائية أو الآلات أو صفارات الإنذار إذا كنت تقوم بعمل جهاز إنذار.
الخطوة الثانية: تحضير تطبيقات الويب
بالنسبة لجزء التشغيل والوقت الفعلي من الجهاز ، سنستخدم قاعدة بيانات Google Firebase Realtime. هذه قاعدة بيانات سحابة NoSQL رائعة تم إنشاؤها بواسطة Google والتي توفر مزامنة البيانات في الوقت الفعلي بين كل من الأنظمة الأساسية التي يتم استخدامها.
قم أولاً بإنشاء المشروع باسم من اختيارك. بمجرد الإنشاء ، قم بإنشاء عقدة واحدة تسمى "العد" وابدأها بالقيمة إذا كانت 0. سيكون هذا هو عدد البداية الذي نريد متابعته في المستقبل.
يستخدم تطبيق Laravel الحزمة "firebase-php" من Kreait ، وهي مرتبطة أدناه. قم بتثبيت الحزمة عن طريق تشغيل "composer need kreait / firebase-php". بمجرد الانتهاء من التثبيت ، نحتاج إلى إنشاء وحدة التحكم حيث سيحدث الإجراء. سميت الطريقة "تحديث" وقمت بتوصيلها في المسارات في إجراء POST.
لاسترداد مثيل Firebase ، تحتاج إلى ملف json الذي تحتاج إلى تنزيله من وحدة تحكم Firebase. ضع هذا الملف في جذر مشروع Laravel الخاص بك وقم بتسميته firebase.json. عند استرداد مثيل Firebase ، نحتاج إلى توفير المسار إلى هذا الملف باستخدام التابع withCredentials.
بعد أن حصلنا على مثيل Firebase ، نحتاج إلى الحصول على المرجع إلى قاعدة البيانات وإلى العقدة التي أنشأناها سابقًا. في كل إجراء ، سنحصل على القيمة الحالية للعقدة ، ونزيدها بمقدار واحد ونحفظها إذا عدنا إلى قاعدة البيانات. سيؤدي هذا إلى تتبع أحداثنا التي نحتاج إلى الإخطار بها.
يمكن تحقيق الشيء نفسه باستخدام HTML و JavaScript عاديين ، باستخدام مكتبة Firebase المتوفرة. باستخدامه ، نحتاج أولاً إلى تزويد صفيف التكوين بالإعدادات المناسبة من وحدة تحكم Firebase وتهيئة التطبيق. بمجرد التهيئة ، نحصل على مرجع للعقدة حيث نقوم بتخزين عدد الأحداث وإرفاق مستمع لاسترداد أي تغيير في القيمة.
بالإضافة إلى ذلك ، بدلاً من إرسال النموذج كما في مثال Laravel ، لدينا الآن وظيفة JavaScript يتم استدعاؤها عند النقر فوق الزر ، وتحديث العدد وإعادة كتابة القيمة المحدثة إلى قاعدة البيانات.
الخطوة 3: برمجة لوحة NodeMCU
لبرمجة NodeMCU ، استخدمت برنامج Arduino وبعد أن قمت بتثبيت اللوحة عليه تأكدت من تحديد الإصدار والمنفذ المناسبين حتى أتمكن من تحميل البرنامج. ملكي هو الإصدار 1.0 لذا تحقق جيدًا من اللوحة الخاصة بك قبل المتابعة.
يقوم الجزء الأول من كود Arduino بإعداد جميع التعريفات الضرورية التي ستحتاج إلى تعديلها على جهازك. الإعداد الأول من هذا القبيل هو SSID الخاص بشبكة WiFi وكلمة المرور الخاصة به ، ثم نحتاج إلى إعداد عنوان url الخاص بـ firebase و firebase db secret. لسوء الحظ ، هذه ليست الطريقة الموصى بها للاتصال بقاعدة البيانات ولكن حتى الآن هذه هي الطريقة الوحيدة التي تدعمها المكتبة. يمكنك العثور على هذا السر ضمن Project Settings ، قائمة حسابات الخدمة في وحدة تحكم firebase.
التعريف التالي هو المسار الذي سنبحث فيه عن التحديثات ومعرف الجهاز. معرف الجهاز مطلوب لذلك في حالة وجود أجهزة متعددة للإبلاغ عن نفس الأحداث ، نحتاج إلى معرفة الجهاز الذي أخطرنا بالحدث والاحتفاظ بسجل لذلك. آخر واحد نحتاج إلى إعداد الدبوس الذي قمنا بتوصيل الجرس به وهذا هو D2 في حالتنا.
تحدد وظيفة الإعداد دبوس LED المدمج ودبابيس D2 كمخرجات ، وابدأ الاتصال التسلسلي لمعرفة ما يجري والاتصال بشبكة WiFi المحددة. بمجرد إنشاء الاتصال ، يبدأ الاتصال بـ Firebase ويحصل على آخر قيمة أبلغنا عنها. ثم يبدأ في الاستماع إلى التغييرات على المسار المحدد.
في الحلقة الرئيسية ، هناك استدعاء لوظيفة الوميض التي تومض المصباح المدمج لمدة 500 مللي ثانية حتى نتمكن من معرفة أن الجهاز نشط. عندما يتم الكشف عن تغيير وهناك بيانات متاحة يمكننا قراءتها باستخدام الوظيفة المتاحة ، تتم قراءة القيمة الجديدة للعقدة ، ويتم حساب الفرق حيث قد تكون هناك أحداث متعددة في هذه الأثناء ويتم إصدار صوت تنبيه في كل مرة من الاختلاف.
على سبيل المثال ، إذا كان الفرق بين آخر قيمة تم الإبلاغ عنها والقيمة الجديدة هو 4 ، فسيتم إصدار 4 أصوات تنبيه لإعلامك بإجراء 4 عمليات شراء جديدة. تستخدم وظيفة الصفير وظيفة النغمة المدمجة لتشغيل تردد محدد من خلال الجرس لفترة زمنية محددة.
بعد إصدار أصوات التنبيه ، يتم تحديث القيمة الجديدة للجهاز المحدد وإعادة تشغيل البث مرة أخرى. توجد حاليًا مشكلة مفتوحة في مكتبة arduino firebase وهي أن البث لا يستمر تلقائيًا بعد أن نحفظ قيمة يدويًا لذلك نحتاج إلى إعادة تشغيلها.
الخطوة 4: استمتع بجهازك
الكود الكامل الذي استخدمته متاح في حسابي على GitHub المرتبط أدناه مع رابط إلى المخطط التخطيطي للمشروع.
مصدر الرمز
تخطيطي
يمكن اعتماد الكود بسهولة للعمل مع الكثير من السيناريوهات والأحداث المختلفة وأنا متأكد من أنك ستستمتع كثيرًا باللعب به.
بالنسبة لي كان هذا بناء ممتعًا حقًا وتمكنت من تعلم الكثير منه ولهذا أنا سعيد حقًا. آمل أن يساعدك ذلك في مشروعك ولكن إذا وجدت نفسك عالقًا في أي جزء منه أو كنت بحاجة إلى مزيد من التوضيح ، فيرجى إبلاغي بذلك في التعليقات وسأبذل قصارى جهدي لمساعدتك.
إذا أعجبك المشروع ، فيرجى الاشتراك في قناتي على YouTube:
تذوق الكود
موصى به:
التعرف على الجهاز في الوقت الفعلي باستخدام آثار أقدام EM: 6 خطوات
التعرف على الأجهزة في الوقت الفعلي باستخدام EM Footprints: يهدف هذا الجهاز إلى تصنيف الأجهزة الإلكترونية المختلفة وفقًا لإشارات EM الخاصة بها. للأجهزة المختلفة ، لديهم إشارات كهرومغناطيسية مختلفة تنبعث منها. لقد طورنا حلاً لإنترنت الأشياء لتحديد الأجهزة الإلكترونية التي تستخدم الجسيمات
برنامج MicroPython: تحديث بيانات مرض فيروس كورونا (COVID-19) في الوقت الفعلي: 10 خطوات (بالصور)
برنامج MicroPython: تحديث بيانات مرض فيروس كورونا (COVID-19) في الوقت الفعلي: في الأسابيع القليلة الماضية ، تجاوز عدد الحالات المؤكدة لمرض فيروس كورونا (COVID 19) في جميع أنحاء العالم 100000 حالة ، وقد أعلنت منظمة الصحة العالمية (WHO) تفشي الالتهاب الرئوي الفيروسي الجديد ليكون وباءً عالمياً. كنت جدا
LightMeUp! التحكم في شريط LED عبر الأنظمة الأساسية في الوقت الفعلي: 5 خطوات (بالصور)
LightMeUp! التحكم في شريط LED عبر الأنظمة الأساسية في الوقت الفعلي: LightMeUp! هو نظام اخترعته للتحكم في شريط RGB LED في الوقت الفعلي ، مع الحفاظ على التكلفة المنخفضة والأداء العالي. تمت كتابة الخادم في Node.js ومن ثم عبر النظام الأساسي. في المثال الخاص بي ، أستخدم Raspberry Pi 3B للاستخدام على المدى الطويل
ESP01 Moodlight مع Firebase في الوقت الفعلي + OTA: 7 خطوات
ESP01 Moodlight مع Firebase في Realtime + OTA: يدعم وضع R-G-B وتأثير Fade. يوجد أيضًا دعم للتحكم في السطوع. دعم لتحديث OTA
قائمة المهام في الوقت الفعلي باستخدام Google Firebase: 12 خطوة
قائمة المهام في الوقت الفعلي باستخدام Google Firebase: مرحبًا بكم! نستخدم جميعًا قوائم المهام على أساس يومي ، سواء كان ذلك عبر الإنترنت أو غير متصل. في حين أن القوائم غير المتصلة تكون عرضة للضياع ، ويمكن وضع القوائم الافتراضية في غير مكانها أو حذفها عن طريق الخطأ أو حتى نسيانها. لذلك قررنا إنشاء واحد على Google Firebase ،