جدول المحتويات:

NexArdu: التحكم الذكي في الإضاءة: 5 خطوات
NexArdu: التحكم الذكي في الإضاءة: 5 خطوات

فيديو: NexArdu: التحكم الذكي في الإضاءة: 5 خطوات

فيديو: NexArdu: التحكم الذكي في الإضاءة: 5 خطوات
فيديو: УХ ТЫ! Удивительная машина-робот с Bluetooth, сделанная своими руками: управление с помощью смартфона 2024, يوليو
Anonim
NexArdu: التحكم الذكي في الإضاءة
NexArdu: التحكم الذكي في الإضاءة

تحديث

إذا قمت بتطوير نفس الوظيفة باستخدام Home Assistant. يوفر Home Assistant مجموعة هائلة من الاحتمالات. يمكنك العثور على التطوير هنا.

رسم تخطيطي للتحكم في إضاءة المنزل بطريقة ذكية عبر أجهزة لاسلكية شبيهة بـ X10 تبلغ 433.92 ميجاهرتز (المعروف أيضًا باسم 433 ميجاهرتز) ، على سبيل المثال نيكسا.

خلفية

عندما يتعلق الأمر بالإضاءة الزخرفية ، فقد كان الأمر متعبًا إلى حد ما بالنسبة لي أنه كان علي أن أقوم كل ثانية أو أسبوع ثالث بإعادة ضبط المؤقتات التي تضيء بسبب تبديل الساعة الشمسية فيما يتعلق بتوقيت وسط أوروبا. بعض الليالي ننام في وقت أبكر من غيرها. لهذا السبب ، تنطفئ الأضواء أحيانًا إما "بعد فوات الأوان" أو "مبكرًا جدًا". دفعني ما سبق إلى التفكير: أريد أن يتم تشغيل الإضاءة الزخرفية دائمًا على نفس المستوى من الإضاءة المحيطة ثم تنطفئ في وقت معين اعتمادًا على ما إذا كنا مستيقظين أم لا.

موضوعي

يستغل هذا التوجيه إمكانيات الأجهزة التي يتم التحكم فيها لاسلكيًا مثل System Nexa التي تعمل على تردد 433.92 ميجا هرتز. هنا نتميز:

  1. التحكم الآلي في الإضاءة
  2. التحكم في الويب

التحكم في الويب. خادم الويب الداخلي مقابل خادم الويب الخارجي

يستغل الخادم الداخلي إمكانية درع Arduino Ethernet لتوفير خادم ويب. سيحضر خادم الويب مكالمات عميل الويب للتحقق من Arduino والتفاعل معه. هذا حل مباشر مع وظائف محدودة ؛ إمكانيات تحسين كود خادم الويب محدودة بذاكرة Arduino. يتطلب الخادم الخارجي إعداد خادم ويب PHP خارجي. يعد هذا الإعداد أكثر تعقيدًا ولا يدعمه هذا البرنامج التعليمي ، ومع ذلك ، فإن كود / صفحة PHP للتحقق من Arduino وتوجيهه مزودة بوظائف أساسية. إمكانيات تحسين خادم الويب ، في هذه الحالة ، محدودة بخادم الويب الخارجي.

فاتورة المواد

للاستفادة الكاملة من الإمكانات التي يوفرها هذا الرسم ، تحتاج إلى:

  1. Arduino Uno (تم اختباره على R3)
  2. درع Arduino Ethernet
  3. مجموعة Nexa أو ما شابه يعمل بسرعة 433.92 ميجا هرتز
  4. يعمل مستشعر PIR (الأشعة تحت الحمراء السلبية) على 433.92 ميجا هرتز
  5. 10 كيلو أوم المقاوم
  6. LDR
  7. A RTC DS3231 (إصدار الخادم الخارجي فقط)
  8. جهاز إرسال 433.92 ميجا هرتز: XY-FST
  9. جهاز استقبال 433.92 ميجا هرتز: MX-JS-05V

الحد الأدنى الموصى به هو:

  1. Arduino Uno (تم اختباره على R3)
  2. مجموعة Nexa أو ما شابه يعمل بسرعة 433.92 ميجا هرتز
  3. 10 كيلو أوم المقاوم
  4. LDR
  5. جهاز إرسال 433.92 ميجا هرتز: XY-FST

(يتطلب حذف درع Ethernet تعديلات على الرسم التخطيطي لم يتم توفيره في هذا الدليل)

منطق نيكسا. وصف مختصر

يتعرف جهاز الاستقبال Nexa على معرف وحدة التحكم عن بُعد ومعرف الزر. بمعنى آخر ، يحتوي كل جهاز تحكم عن بعد على رقم المرسل الخاص به وكل زوج من أزرار التشغيل / الإيقاف له معرّف الزر الخاص به. يجب أن يتعلم المتلقي هذه الرموز. تشير بعض مستندات Nexa إلى أنه يمكن إقران جهاز الاستقبال بستة أجهزة تحكم عن بُعد. معلمات Nexa:

  • SenderID: معرف جهاز التحكم عن بعد
  • ButtonID: رقم زوج الأزرار (تشغيل / إيقاف). يبدأ بالرقم 0
  • المجموعة: نعم / لا (ويعرف أيضًا باسم أزرار "All off / on")
  • الأمر: تشغيل / إيقاف

خطوات قابلة للتوجيه. ملحوظة

الخطوات المختلفة الموضحة هنا هي تقديم نكهتين مختلفتين حول كيفية تحقيق الهدف. لا تتردد في اختيار الشخص الذي يناسبك. هذا هو الفهرس:

الخطوة رقم 1: الدائرة

الخطوة رقم 2: Nexardu مع خادم الويب الداخلي (يضم NTP)

الخطوة # 3: Nexardu مع خادم خارجي

الخطوة رقم 4: معلومات قيمة

الخطوة 1: الدائرة …

الدائرة …
الدائرة …

قم بتوصيل المكونات المتنوعة كما هو موضح في الصورة.

Arduino pin # 8 to Data pin on RX (Receiver) moduleArduino pin # 2 to Data pin on RX (Receiver) moduleArduino pin # 7 to data pin on TX (sender) moduleArduino pin A0 to LDR

تكوين RTC. مطلوب فقط في تكوين الخادم الخارجي.

الخطوة 2: Nexardu مع خادم الويب الداخلي (يضم NTP)

المكتبات

يستخدم هذا الرمز الكثير من المكتبات. يمكن العثور على معظمها من خلال "مدير المكتبة" في Arduino IDE. لا ينبغي أن تجد مكتبة مدرجة ، يرجى جوجل.

Wire.hSPI. عميل NTP

الرسم

يستغل الكود أدناه إمكانية استخدام لوحة Arduino UNO ليس فقط كوسيلة للتحكم في أجهزة Nexa ولكنه يتميز أيضًا بخادم ويب داخلي. ملاحظة يجب إضافتها هي أن وحدة RTC (ساعة الوقت الحقيقي) يتم ضبطها تلقائيًا عبر NTP (بروتوكول وقت الشبكة).

قبل تحميل الكود إلى Arduino ، قد تحتاج إلى تكوين ما يلي:

  • SenderId: تحتاج إلى شم SenderId أولاً ، انظر أدناه
  • PIR_id: تحتاج إلى شم SenderId أولاً ، انظر أدناه
  • عنوان LAN IP: قم بتعيين IP الخاص بشبكة LAN الخاصة بك إلى درع Ethernet Arduino. القيمة الافتراضية: 192.168.1.99
  • خادم NTP: ليس ضروريًا تمامًا ولكن قد يكون من الجيد استخدام Google لخوادم NTP في مكان قريب. القيمة الافتراضية: 79.136.86.176
  • تم ضبط الرمز وفقًا للمنطقة الزمنية CET. اضبط هذه القيمة - إذا لزم الأمر ، على منطقتك الزمنية لعرض الوقت الصحيح (NTP)

استنشاق رموز Nexa

لهذا تحتاج إلى توصيل مكون RX إلى Arduino على الأقل ، كما هو موضح في الدائرة.

يمكنك العثور أدناه على رسم تخطيطي Nexa_OK_3_RX.ino ، الذي كان ، وقت كتابته ، متوافقًا مع أجهزة Nexa NEYCT-705 و PET-910.

الخطوات التي يجب اتباعها هي:

  1. قم بإقران مستقبل Nexa بجهاز التحكم عن بعد.
  2. قم بتحميل Nexa_OK_3_RX.ino على Arduino وافتح "Serial Monitor".
  3. اضغط على زر جهاز التحكم عن بعد الذي يتحكم في جهاز الاستقبال Nexa.
  4. لاحظ "RemoteID" و "ButtonID".
  5. عيّن هذه الأرقام ضمن SenderID و ButtonID على التصريح المتغير للرسم السابق.

لقراءة معرف PIR ، ما عليك سوى استخدام نفس الرسم التخطيطي (Nexa_OK_3_RX.ino) وقراءة القيمة الموجودة على "Serial Monitor" عندما يكتشف PIR الحركة.

الخطوة 3: Nexardu مع خادم خارجي

المكتبات

يستخدم هذا الرمز الكثير من المكتبات. يمكن العثور على معظمها من خلال "مدير المكتبة" في Arduino IDE. إذا لم تجد مكتبة مدرجة ، يرجى جوجل.

Wire.hRTClib.h - هذه المكتبة من https://github.com/MrAlvin/RTClibSPI.h - مطلوب بواسطة Ethernet shieldNexaCtrl.h - Nexa device controllerEthernet.h - لتمكين وتمييز درع EthernetRCSwitch.h - مطلوب لـ PIRTime.h - مطلوب لـ RTCTimeAlarms.h - إدارة إنذار الوقت aREST.h - لخدمات RESTful API التي يتم استغلالها بواسطة serverair / wdt.h الخارجي - التعامل مع مؤقت المراقبة

الرسم

يتميز الرسم أدناه بنكهة أخرى لنفس الشيء ، وهذه المرة تقوي الاحتمالات التي يمكن أن يوفرها خادم ويب خارجي. كما ذكرنا سابقًا في المقدمة ، يتطلب الخادم الخارجي إعداد خادم ويب PHP خارجي. هذا الإعداد أكثر تعقيدًا ولا يدعمه هذا البرنامج التعليمي ، ومع ذلك ، فإن كود / صفحة PHP للتحقق من Arduino وتوجيهه مزودة بوظائف أساسية.

قبل تحميل الكود إلى Arduino ، قد تحتاج إلى تكوين ما يلي:

  • SenderId: تحتاج إلى شم SenderId أولاً ، راجع شم رموز Nexa في الخطوة السابقة
  • PIR_id: تحتاج إلى شم SenderId أولاً ، راجع شم رموز Nexa في الخطوة السابقة
  • عنوان IP الخاص بشبكة LAN: قم بتعيين IP الخاص بشبكة LAN الخاصة بك على درع Ethernet Arduino. القيمة الافتراضية: 192.168.1.99

بالنسبة إلى إجراء استنشاق رمز Nexa ، يرجى الرجوع إلى الخطوة رقم 1.

ملف تكميلي

قم بتحميل ملف nexardu4.txt المرفق إلى خادم PHP الخارجي وأعد تسميته إلى nexardu4.php

تم تعيين وقت RTC

لتعيين الوقت / التاريخ على RTC ، استخدم Sketch SetTime الذي يجمع مكتبة DS1307RTC.

الخطوة 4: معلومات قيمة

معلومات قيمة
معلومات قيمة
معلومات قيمة
معلومات قيمة

من الجيد معرفة السلوك

  1. عندما يكون Arduino تحت "التحكم التلقائي في الضوء" ، يمكن أن يمر عبر أربع حالات مختلفة فيما يتعلق بالإضاءة المحيطة ووقت اليوم:

    1. يقظ: اردوينو ينتظر الليلة القادمة.
    2. نشط: لقد حان الليل وقام Arduino بتشغيل الأضواء.
    3. Somnolent: الأضواء مضاءة ولكن حان وقت إطفاءها. يبدأ في "time_to_turn_off - PIR_time" أي ، إذا تم ضبط time_to_turn_off على 22:30 وضبط PIR_time على 20 دقيقة ، فإن Arduino سيدخل في الحالة المنعشة عند 22:10.
    4. نائم: الليل يمر ، قام Arduino بإطفاء الأنوار وينتظر Arduino أن يصبح الفجر مستيقظًا.
  2. يستمع Arduino دائمًا إلى الإشارات المرسلة بواسطة أجهزة التحكم عن بُعد. يتميز هذا بإمكانية إظهار حالة الأضواء (تشغيل / إيقاف) على الويب عند استخدام جهاز التحكم عن بعد.
  3. بينما يكون Arduino مستيقظًا ، فإنه يحاول إيقاف تشغيل الأضواء طوال الوقت ، لذلك ، قد يتم التقاط إشارات ON المرسلة بواسطة عنصر تحكم عن بعد لتشغيل الأضواء بواسطة Arduino. في حالة حدوث ذلك ، سيحاول Arduino إطفاء الأنوار مرة أخرى.
  4. بينما يكون Arduino نشطًا ، فإنه يحاول تشغيل الأضواء طوال الوقت ، لذلك ، قد يتم التقاط إشارات OFF المرسلة بواسطة جهاز التحكم عن بعد لإطفاء الأنوار بواسطة Arduino. في حالة حدوث ذلك ، سيحاول Arduino تشغيل الأنوار مرة أخرى.
  5. في حالة النعاس ، يمكن تشغيل / إطفاء الأضواء بجهاز التحكم عن بعد. لن يقاوم Arduino.
  6. في الحالة المنعشة ، سيبدأ العد التنازلي لـ PIR في إعادة التعيين من "time_to_turn_off - PIR_time" وبالتالي يتم تمديد time_to_turn_off بمقدار 20 دقيقة في كل مرة يكتشف فيها PIR الحركة. "تم اكتشاف إشارة PIR!" سيتم عرض الرسالة على متصفح الويب عند حدوث ذلك.
  7. عندما يكون Arduino نائمًا ، يمكن تشغيل وإيقاف الأضواء عبر جهاز التحكم عن بعد. لن يقاوم Arduino.
  8. ستؤدي إعادة تعيين Arduino أو دورة الطاقة إلى وضعه في الوضع النشط. هذا يعني أنه إذا تمت إعادة تعيين Arduino بعد time_turn_off ، فسيقوم Arduino بتشغيل الأضواء. لتجنب ذلك ، يجب إحضار Arduino إلى الوضع اليدوي (حدد "التحكم التلقائي في الضوء") وانتظر حتى الصباح لإعادته إلى "التحكم التلقائي في الضوء".
  9. كما ذكرنا سابقًا ، ينتظر Arduino الفجر حتى يتم تنشيطه مرة أخرى. وبسبب هذا ، يمكن أن ينخدع النظام بتوجيه ضوء قوي بدرجة كافية نحو مستشعر الضوء لتجاوز عتبة "الإضاءة الدنيا". في حالة حدوث ذلك ، يجب أن يتغير Arduino إلى الحالة النشطة.
  10. تعتبر قيمة التسامح ذات أهمية عالية لتجنب اندفاع النظام وإيقاف تشغيله حول قيمة الحد الأدنى للسطوع. يمكن أن تكون أضواء LED ، بسبب وميضها واستجابتها العالية ، مصدرًا لسلوك الخفقان. قم بزيادة قيمة التسامح إذا واجهت هذه المشكلة. أنا استخدم القيمة 7.

من الجيد أن تعرف عن الكود

  1. كما تلاحظ ، الشفرة كبيرة جدًا وتستفيد من قدر كبير من المكتبات. يؤدي هذا إلى تسوية مقدار الذاكرة الفارغة اللازمة للكومة. لقد لاحظت سلوكًا غير مستقر في الماضي مع توقف النظام ، خاصة بعد مكالمات الويب. لذلك ، كان التحدي الأكبر الذي واجهته هو الحد من حجمه واستخدام متغيرات متنوعة من أجل جعل النظام مستقرًا.
  2. الكود الذي يستغل الخادم الداخلي - الذي استخدمه في المنزل ، يعمل الآن منذ فبراير 2016 بدون مشاكل.
  3. لقد بذلت جهودًا كبيرة لإثراء الكود بالشروحات. استفد من هذا للعب مع معلمات متنوعة مثل عدد عمليات إرسال كود Nexa لكل دفعة ، ووقت مزامنة NTP ، وما إلى ذلك.
  4. لا يتميز الرمز بالتوقيت الصيفي. هذا يحتاج إلى تعديل عبر متصفح الويب عندما ينطبق.

بعض النقاط للنظر فيها

  1. أضف الهوائيات إلى وحدات تردد الراديو (RF) TX و RX. سيوفر لك الوقت في الشكوى من نقطتين رئيسيتين: مرونة ومدى إشارة التردد اللاسلكي. أستخدم سلكًا بطول 50 أوم بطول 17.28 سم (6.80 بوصة).
  2. قد تعمل هذه الأداة القابلة للإدخال مع أنظمة التشغيل الآلي للمنزل الأخرى مثل Proove ، على سبيل المثال. أحد الشروط العديدة التي يجب الوفاء بها هو تشغيلها على تردد 433.92 ميجاهرتز.
  3. مشكلة كبيرة مع Arduino هي التعامل مع المكتبات التي قد يتم تحديثها بمرور الوقت وفجأة لا تعود متوافقة مع مخططك "القديم" ؛ قد تظهر نفس المشكلة عند ترقية Arduino IDE. احذر من أن تكون هذه هي حالتنا هنا - نعم ، مشكلتي أيضًا.
  4. تعمل العديد من عملاء الويب المتزامنين مع أوضاع الإضاءة المختلفة على إنشاء حالة "وامض".

لقطة شاشة

في دائرة الصور أعلاه ، تجد لقطة شاشة لصفحة الويب معروضة عند استدعاء Arduino من خلال متصفح الويب الخاص بك. بالنظر إلى تكوين IP الافتراضي للرمز ، سيكون عنوان URL هو

أحد الجوانب التي قد تخضع للتحسين هو وضع زر "إرسال" لأنه يسري على جميع مربعات الإدخال وليس فقط على "التحكم التلقائي في الضوء" كما قد يظن المرء. بمعنى آخر ، إذا كنت ترغب في تغيير أي من القيم الممكنة ، فأنت بحاجة دائمًا إلى الضغط على الزر "إرسال".

وثائق مفصلة / متقدمة

لقد أرفقت الملفات التالية حتى يتمكنوا من مساعدتك على فهم الحل بالكامل ، خاصة لاستكشاف الأخطاء وإصلاحها والتحسين.

يوفر Arduino_NexaControl_IS.pdf وثائق حول حل الخادم الداخلي.

يوفر Arduino_NexaControl_ES.pdf وثائق حول حل الخادم الخارجي.

المراجع الخارجية

نظام نيكسا (السويدية)

الخطوة 5: انتهى

تم الانتهاء من!
تم الانتهاء من!

ها قد انتهيت من كل شيء وهي قيد التنفيذ!

يمكن العثور على علبة Arduino Uno في Thingiverse باسم "Arduino Uno Rev3 مع Ethernet Shield XL-case".

موصى به: