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

إنذار PIR لشبكة WiFi (وأتمتة المنزل): 7 خطوات (بالصور)
إنذار PIR لشبكة WiFi (وأتمتة المنزل): 7 خطوات (بالصور)

فيديو: إنذار PIR لشبكة WiFi (وأتمتة المنزل): 7 خطوات (بالصور)

فيديو: إنذار PIR لشبكة WiFi (وأتمتة المنزل): 7 خطوات (بالصور)
فيديو: osama gomaa كهربنى سمارت هوم تاسيس وتشطيب شاهد وشارك معنا يوصلك كل ماهو جديد فى عالم الكهرباء 2024, يوليو
Anonim
Image
Image
إنذار PIR إلى WiFi (وأتمتة المنزل)
إنذار PIR إلى WiFi (وأتمتة المنزل)

ملخص

ستمنحك هذه التعليمات القدرة على عرض آخر تاريخ / وقت (واختيارياً سجل الأوقات) الذي تم فيه تشغيل أجهزة PIR الخاصة بإنذار المنزل (مستشعرات الأشعة تحت الحمراء السلبية) ، في برنامج التشغيل الآلي لمنزلك. في هذا المشروع ، سأناقش كيفية الاستخدام مع OpenHAB (برنامج أتمتة المنزل المجاني ، والذي أستخدمه شخصيًا) على الرغم من أنه سيعمل مع أي برنامج أو تطبيق آخر لأتمتة المنزل يدعم MQTT (كما هو موضح لاحقًا في هذه المقالة). ستوجهك هذه التعليمات من خلال الخطوات الضرورية حول كيفية توصيل لوحة دوائر كهربائية و Wemos D1 mini (لوحة IOT التي تستخدم شريحة ESP8266) التي تنقر على مناطق الإنذار في صندوق التحكم في الإنذار الخاص بك بحيث عندما تكون المنطقة (التي تحتوي على واحد أو أكثر من PIRs) ، يرسل Wemos رسالة لاسلكيًا باستخدام بروتوكول MQTT إلى برنامج أتمتة المنزل الخاص بك والذي بدوره يعرض آخر تاريخ / وقت لهذا المشغل. يتم أيضًا توفير كود Arduino لبرمجة Wemos.

مقدمة

الصورة أعلاه هي ما أراه عبر إحدى الشاشات على تطبيق OpenHAB على جهاز iPhone الخاص بي. نص التاريخ / الوقت مرمز بالألوان لتوفير تمثيل أسرع للوقت الذي تم فيه تشغيل PIR - سيظهر باللون الأحمر (تم تشغيله خلال آخر دقيقة واحدة) ، البرتقالي (تم تشغيله خلال آخر 5 دقائق) ، أخضر (تم تشغيله خلال آخر 30 دقيقة) ، أزرق (تم تشغيله خلال آخر ساعة) أو أسود. سيؤدي النقر فوق التاريخ / الوقت ، إلى عرض عرض تاريخي لمشغلات PIR ، حيث يعني 1 تم تشغيله ، ويكون 0 خاملاً. هناك العديد من الاستخدامات لهذا ، على سبيل المثال يمكن أن يكمل حل التواجد في المنزل ، ويمكنه اكتشاف الحركة إذا كنت بعيدًا وعبر قواعد OpenHAB ، وإرسال الإشعارات إلى هاتفك ، ويمكنك استخدامه كما أفعل لمعرفة ما إذا كان أطفالي الاستيقاظ في منتصف الليل ، بسبب PIR الموجود خارج غرف نومهم!

OpenHAB هو ببساطة برنامج التشغيل الآلي للمنزل الذي أستخدمه ، وهناك العديد من البرامج الأخرى - وإذا كانوا يدعمون MQTT ، فيمكنك بسهولة تكييف هذا المشروع ليناسب البرنامج الذي تستخدمه.

الافتراضات

يفترض هذا التوجيه أن لديك بالفعل (أو ستقوم بالإعداد):

  • من الواضح أنه نظام إنذار منزلي مزود بأجهزة PIR (مستشعرات الأشعة تحت الحمراء السلبية) وأنه يمكنك الوصول إلى صندوق التحكم في الإنذار لتوصيل الأسلاك اللازمة
  • OpenHAB (برنامج أتمتة المنزل مفتوح المصدر مجاني) قيد التشغيل ، على الرغم من أنه كما تمت مناقشته يجب أن يعمل مع أي برنامج أتمتة منزلية يمكن أن يتضمن ربط MQTT. بالتناوب ، يمكنك تغيير الكود بنفسك ليناسب احتياجاتك الخاصة.
  • Mosquitto MQTT (أو ما شابه) وسيط تم تثبيته وربطه مع OpenHAB (MQTT هو بروتوكول اشتراك / نشر مراسلة خفيف الوزن ورائع للتواصل بين الأجهزة)

إذا لم تقم بتشغيل OpenHAB ووسيط MQTT ، فراجع هذه المقالة الممتازة على موقع ويب MakeUseOf

ماذا احتاج؟

لإنشاء وحدة التحكم اللاسلكية ، ستحتاج إلى مصدر الأجزاء التالية:

  • Wemos D1 mini V2 (به شريحة ESP8266 لاسلكية مدمجة)
  • مقارنة LM339 (سيقوم هذا بفحص PIR الخمول مقابل المشغل)
  • مصدر طاقة 5 فولت تيار مستمر لـ Wemos (أو ، محول باك DC-DC. ملاحظة: قد لا يعمل منظم الجهد LM7805 لهذا التطبيق كما تمت مناقشته لاحقًا في هذا المشروع)
  • مقاومتان لمقسم الجهد (سيعتمد الحجم على جهد الإنذار الخاص بك ، وستتم مناقشته لاحقًا في المشروع)
  • مقاوم واحد 1 كيلو أوم ليعمل كمقاوم سحب لأسفل للتحكم في طاقة LM339
  • واحد 2N7000 (أو ما شابه) MOSFET لتشغيل LM339 منطقيًا (ربما يكون اختياريًا ، تمت مناقشته لاحقًا في المشروع)
  • لوح تجارب بحجم مناسب لإعداد الدائرة واختبارها
  • مجموعة من أسلاك اللوح لتوصيل كل شيء معًا
  • الأدوات اللازمة: قواطع جانبية ، سلك أحادي النواة
  • عداد متعدد التيار المستمر (إلزامي!)

الخطوة 1: صندوق التحكم في نظام الإنذار

صندوق التحكم في نظام الإنذار
صندوق التحكم في نظام الإنذار

أولا بعض التحذيرات وإخلاء المسئولية

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

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

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

2. عند تشغيل نظام الإنذار احتياطيًا ، بعد حوالي 12 ساعة تقريبًا ، بدأت لوحة التحكم في الإنذار في إصدار صفير مع رموز الأعطال. بعد تحديد رموز الخطأ عبر الدليل ، اكتشفت أنه كان يحذرني مما يلي:

  • لم يتم ضبط التاريخ / الوقت (كنت بحاجة إلى الرمز الرئيسي وتسلسل المفاتيح من الدليل لإعادة التكوين)
  • أن البطارية الاحتياطية غير متصلة (إصلاح سهل ، لقد نسيت للتو توصيل البطارية مرة أخرى)

3. في الإنذار الخاص بي ، هناك 4 كتل اتصال منطقة (تسمى Z1-Z4) لتوصيل أجهزة PIR بلوحة الإنذار الرئيسية ، ومع ذلك - نظام الإنذار الخاص بي قادر بالفعل على 8 مناطق. يمكن لكل كتلة اتصال منطقة تشغيل منطقتين x لكل منطقة (Z1 يعمل Z1 و Z5 ، Z2 يعمل Z2 و Z6 وما إلى ذلك). يحتوي نظام الإنذار على حماية مدمجة ضد العبث لمنع أي شخص يقول ، أو فتح الغطاء لنظام الإنذار كما هو مذكور أعلاه ، أو قطع الأسلاك إلى PIR. إنه يميز بين كل منطقة عبث عبر مقاومات EOL (نهاية الخط). هذه مقاومات ذات حجم محدد توجد في "نهاية الخط" - بعبارة أخرى ، داخل PIR (أو مفتاح عبث صندوق التحكم ، أو صندوق صفارات الإنذار أو أي شيء موصّل بهذه المنطقة) كما ذكرنا ، تُستخدم هذه المقاومات كـ "عبث" الحماية - من الناحية الفنية ، إذا قام شخص ما بقطع الكابلات إلى PIR - لأن نظام الإنذار يتوقع رؤية مقاومة معينة من PIR ، ثم إذا تغيرت المقاومة ، فإنه يفترض أن شخصًا ما قد تلاعب بالنظام وسيطلق الإنذار.

على سبيل المثال:

على المنبه الخاص بي ، المنطقة "Z4" بها سلكان ، أحدهما ينطلق إلى PIR في رواقي والآخر ينطلق إلى مفتاح عبث صندوق التحكم في الإنذار. داخل الردهة PIR ، يحتوي على مقاوم 3300 أوم. السلك الآخر الذي يمتد إلى مفتاح العبث بصندوق التحكم ، يحتوي على مقاوم 6800 أوم سلكي على التوالي. هذه هي الطريقة التي يميز بها نظام الإنذار (منطقيًا) بين "Z4" و "Z8". وبالمثل ، تحتوي المنطقة "Z3" على PIR (مع مقاومة 3300 أوم) وأيضًا مفتاح عبث صفارات الإنذار (مع المقاوم 6800 أوم) الذي يشكل "Z7". كان مثبت الإنذار قد قام بتكوين نظام الإنذار مسبقًا حتى يعرف الجهاز المتصل بكل منطقة (وغير حجم المقاوم لموسوعة الحياة ليناسب ، لأن نظام الإنذار مبرمج لمعرفة حجم مقاومات موسوعة الحياة المختلفة. تحت لا يجب تغيير قيمة هذه المقاومات بأي حال من الأحوال!)

بناءً على ما سبق ، نظرًا لأن كل منطقة قد تحتوي على أجهزة متعددة متصلة بها أيضًا (بقيم مقاومة مختلفة) ، وتذكر الصيغة V = IR (الجهد = أمبير × المقاومة) ، فقد يعني ذلك أيضًا أن كل منطقة قد يكون لها جهد مختلف. وهو ما يقودنا إلى الخطوة التالية ، وقياس كل منطقة الخمول مقابل الجهد الزناد …

الخطوة 2: قياس جهد منطقة الإنذار

قياس جهد منطقة التنبيه
قياس جهد منطقة التنبيه
قياس جهد منطقة التنبيه
قياس جهد منطقة التنبيه

بمجرد حصولك على وصول إلى اللوحة الرئيسية على نظام الإنذار الخاص بك (وتجاوز مفتاح العبث إذا كان لديك واحد ؛ وفقًا للخطوة السابقة) أعد تشغيل نظام الإنذار. نحتاج الآن إلى قياس جهد كل منطقة عند الخمول (لا توجد حركة أمام PIR) مقابل TRIGGERED (اكتشف PIR الحركة) احصل على قلم وورقة حتى تتمكن من تدوين قراءات الجهد.

تحذير: من المرجح أن يعمل الجزء الأكبر من نظام الإنذار الخاص بك على 12V DC ، ومع ذلك سيكون لديه تغذية أولية للطاقة عند 220 فولت (أو 110 فولت) تيار متردد ، مع محول يحول الطاقة من التيار المتردد إلى التيار المستمر. اقرأ الدليل واتخذ احتياطات إضافية لضمان عدم قياس أي محطات توصيل للتيار المتردد !!! حسب لقطة شاشة نظام الإنذار الخاص بي في هذه الصفحة ، يمكنك أن ترى أن الجزء السفلي من الصورة هو طاقة التيار المتردد ، وتحويلها إلى 12V DC. نحن نقيس 12V DC في المربعات الحمراء المميزة. لا تلمس طاقة التيار المتردد. توخى الحذر الشديد!

قياس الجهد PIR

لدي 4 x PIR متصلة بـ Z1 حتى Z4. قم بقياس كل منطقة من مناطقك على النحو التالي.

  1. أولاً ، حدد محطة GND ومحطات المنطقة على لوحة الإنذار. لقد أبرزت هذه في الصورة الموضحة من دليل إنذار Bosch الخاص بي.
  2. احصل على جهاز القياس المتعدد واضبط قياس الجهد على 20 فولت تيار مستمر. قم بتوصيل الكبل الأسود (COM) من جهاز القياس المتعدد الخاص بك إلى طرف GND في المنبه. ضع السلك الأحمر (+) من جهاز القياس المتعدد على المنطقة الأولى - في حالتي المسماة "Z1". اكتب قراءة الجهد. نفذ نفس الخطوات للمناطق المتبقية. قياسات الجهد لدي هي كما يلي:
  • Z1 = 6.65 فولت
  • Z2 = 6.65 فولت
  • Z3 = 7.92 فولت
  • Z4 = 7.92 فولت

وفقًا لما ورد أعلاه ، فإن أول منطقتين لديهما فقط تم إرفاقهما بملفات PIR. تحتوي المنطقتان الأخيرتان على كل من PIRs وحماية من العبث سلكيًا (Tamper Z3 control box ، Z4 siren tamper) لاحظ فروق الجهد.

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

  • Z1 = 0 فولت
  • Z2 = 0 فولت
  • Z3 = 4.30 فولت
  • Z4 = 4.30 فولت

حسب ما ورد أعلاه ، أستطيع أن أرى أنه عند تشغيل المنطقتين 1 و 2 ، ينخفض الجهد من 6.65 فولت إلى 0 فولت. ومع ذلك ، عندما يتم تشغيل المنطقتين 3 و 4 ، ينخفض الجهد من 7.92 فولت إلى 4.30 فولت.

قياس امدادات الطاقة 12 فولت

سنستخدم محطة 12V DC من صندوق التحكم في الإنذار لتشغيل مشروعنا. نحن بحاجة إلى قياس الجهد من تغذية 12V DC على الإنذار. على الرغم من أنه ينص بالفعل على 12 فولت ، إلا أننا نحتاج إلى معرفة قراءة أكثر دقة. في حالتي ، يقرأ في الواقع 13.15 فولت. اكتب هذا ، ستحتاج إلى هذه القيمة في الخطوة التالية.

لماذا نقيس الجهد؟

السبب في حاجتنا إلى قياس الجهد لكل PIR هو بسبب الدائرة التي سنقوم بإنشائها. سنستخدم شريحة المقارنة التفاضلية الرباعية LM339 (أو مقارن رباعي أمبير) كمكون كهربائي أساسي لهذا المشروع. يحتوي LM339 على 4 مقارنات مستقلة للجهد (4 قنوات) حيث تأخذ كل قناة 2 × جهد إدخال (واحد مقلوب (-) وواحد غير مقلوب (+) ، انظر الرسم البياني) إذا كان الجهد لجهد الدخل العكسي ينخفض أقل من الجهد غير المقلوب ، ثم سيتم سحب الخرج المرتبط به إلى الأرض. وبالمثل ، إذا انخفض جهد الدخل غير العكسي عن المدخل المقلوب ، فسيتم سحب المخرجات إلى Vcc. بشكل ملائم ، لدي في منزلي 4 × مناطق / مناطق إنذار PIR - لذلك سيتم توصيل كل منطقة بكل قناة على المقارنة. إذا كان لديك أكثر من 4 × PIRs ، فستحتاج إلى مقارنة مع قنوات أكثر ، أو LM339 آخر!

ملاحظة: يستهلك LM339 الطاقة بمكبرات النانو ، لذلك لن يؤثر على مقاومة موسوعة الحياة لنظام الإنذار الحالي.

إذا كان هذا مربكًا ، فانتقل إلى الخطوة التالية على أي حال ، ستبدأ في جعلها أكثر منطقية بمجرد توصيلها!

الخطوة الثالثة: إنشاء مقسم جهد

Image
Image

ما هو مقسم الجهد؟

مقسم الجهد عبارة عن دائرة بها مقاومات 2 × (أو أكثر) متسلسلة. نوفر الجهد في (Vin) للمقاوم الأول (R1) يتصل الجزء الآخر من R1 بالجزء الأول من المقاوم الثاني (R2) ، ويتصل الطرف الآخر من R2 بـ GND. ثم نأخذ جهد الخرج (Vout) من الاتصال بين R1 و R2. سيصبح هذا الجهد هو جهدنا المرجعي لـ LM339. لمزيد من المعلومات حول كيفية عمل مقسمات الجهد ، راجع فيديو Adohms youtube

(ملاحظة: المقاومات ليس لها قطبية ، لذا يمكن توصيلها بأي من الاتجاهين)

حساب الجهد المرجعي لدينا

بافتراض أن الجهد ينخفض عند تشغيل PIR (يجب أن يكون هذا هو الحال بالنسبة لمعظم الإنذارات) ، فإن ما نحاول تحقيقه هو الحصول على قراءة للجهد في منتصف المسافة تقريبًا بين أدنى جهد خامل لدينا وأعلى جهد محفز لدينا ، سيصبح هذا الجهد المرجعي لدينا.

أخذ المنبه كمثال …

كانت الفولتية الخاملة للمنطقة هي Z1 = 6.65V ، Z2 = 6.65V ، Z3 = 7.92V ، Z4 = 7.92V. وبالتالي ، فإن أدنى جهد خامل هو 6.65 فولت

كانت الفولتية التي تم تشغيلها في المنطقة هي: Z1 = 0V ، Z2 = 0V ، Z3 = 4.30V ، Z4 = 4.30V. وبالتالي ، فإن أعلى جهد محفز هو 4.30 فولت

لذلك نحن بحاجة إلى اختيار رقم في منتصف المسافة بين 4.30 فولت و 6.65 فولت (لا يجب أن يكون دقيقًا ، فقط تقريبًا) في حالتي ، يجب أن يكون الجهد المرجعي الخاص بي حوالي 5.46 فولت. ملحوظة: إذا كان أدنى جهد خمول وأعلى جهد محفز قريبين جدًا من بعضهما البعض بسبب مناطق متعددة تسبب نطاقًا من الفولتية المختلفة ، فقد تحتاج إلى إنشاء 2 أو أكثر من مقسمات الجهد.

حساب قيم المقاوم لدينا لمقسم الجهد

الآن لدينا جهد مرجعي ، نحتاج إلى حساب حجم المقاومات التي نحتاجها لإنشاء مقسم جهد يوفر جهدنا المرجعي. سنستخدم مصدر جهد 12V DC (Vs) من الإنذار. ومع ذلك ، وفقًا للخطوة السابقة عندما قمنا بقياس تغذية 12V DC ، فقد حصلنا بالفعل على 13.15V. نحتاج إلى حساب مقسم الجهد باستخدام هذه القيمة كمصدر.

احسب Vout باستخدام قانون أوم …

صوت = Vs × R2 / (R1 + R2)

… أو استخدم حاسبة مقسم الجهد عبر الإنترنت:-)

ستحتاج إلى تجربة قيم المقاوم حتى تحقق الناتج المطلوب. في حالتي ، تم العمل باستخدام R1 = 6.8k ohm و R2 = 4.7K ohm ، محسوبة في شكل طويل على النحو التالي:

صوت = Vs x R2 / (R1 + R2)

صوت = 13.15 × 4700 / (6800 + 4700)

الصوت = 61 ، 805/11 ، 500

صوت = 5.37 فولت

الخطوة 4: ارفع جهاز LM339

توصيل Wemos D1 Mini
توصيل Wemos D1 Mini

مقسم الجهد إلى مدخلات قلب LM339

كما تمت مناقشته سابقًا فيما يتعلق بمقارن LM339 ، سيستغرق الأمر 2 × مدخلات. سيكون أحدهما جهدًا من كل PIR إلى كل محطة غير عاكسة (+) للقنوات ، والآخر سيكون جهدنا المرجعي إلى طرفنا المقلوب (-). يحتاج الجهد المرجعي إلى تغذية جميع المدخلات العاكسة للمقارنة الأربعة. أوقف تشغيل نظام الإنذار قبل تنفيذ هذه الخطوات.

  • قم بتشغيل سلك من كتلة 12V DC على نظام الإنذار إلى السكة + الموجودة على لوح التجارب *
  • مرر سلكًا من كتلة GND في نظام الإنذار إلى السكة - الموجودة على لوح التجارب **
  • قم بتثبيت أداة المقارنة LM339 في منتصف اللوح (تشير الشق إلى الأقرب إلى السن 1)
  • قم بتثبيت المقاومات 2 x لإنشاء دائرة مقسم للجهد وسلك لتقسيم الجهد
  • قم بتشغيل الأسلاك من Vout "مقسمة للجهد" إلى كل طرف LM339 عكسي

* نصيحة: استخدم مشبك التمساح للحصول على الطاقة إن أمكن ، حيث يسهل ذلك توفير طاقة التشغيل / الإيقاف لمشروعك ** هام! قد تكون هناك حاجة إلى MOSFET إذا كنت تقوم بتشغيل Wemos من لوحة الإنذار! في حالتي ، يتلقى كل من LM339 و Wemos و Alarm الطاقة من نفس المصدر (أي: نظام الإنذار نفسه) وهذا يسمح لي بتشغيل الطاقة إلى كل شيء باستخدام اتصال طاقة واحد. ومع ذلك ، يتم بشكل افتراضي تعريف دبابيس GPIO الموجودة في Wemos على أنها دبابيس "INPUT" - مما يعني أنها تأخذ أي جهد يتم إلقاؤه عليها وتعتمد على هذا المصدر لتوفير مستويات الجهد الصحيحة (المستويات الدنيا / القصوى) بحيث يفوز Wemos ر تحطم أو تحترق. في حالتي ، يحصل نظام الإنذار على قوته ويبدأ في إجراء تسلسل التمهيد بسرعة كبيرة - سريع جدًا في الواقع ، أنه يفعل ذلك قبل أن يتمكن Wemos من التمهيد ويعلن أن دبابيس GPIO على أنها "INPUT_PULLUP" (تم سحب الجهد داخليًا داخل رقاقة). هذا لا يعني أن الاختلافات في الجهد قد تتسبب في تعطل Wemos عندما يحصل النظام بأكمله على الطاقة. الطريقة الوحيدة للتغلب عليها هي إيقاف التشغيل يدويًا وتشغيل Wemos. لحل هذه المشكلة ، تمت إضافة MOSFET ويعمل بمثابة "مفتاح منطقي" لتشغيل LM339. هذا يسمح لـ Wemos بالتمهيد ، وتعيين 4 x دبابيس GPIO للمقارنة كـ "INPUT_PULLUP's" ، وتأخير بضع ثوانٍ ثم (عبر دبوس GPIO آخر D5 محدد على أنه مخرج) أرسل إشارة "عالية" عبر GPIO pin D5 إلى MOSFET ، والذي يعمل بشكل منطقي على تشغيل LM339. أوصي بتوصيل الأسلاك على النحو الوارد أعلاه ، ولكن إذا وجدت أن Wemos تعطل كما فعلت ، فسيتعين عليك تضمين MOSFET بمقاوم سحب لأسفل 1 كيلو أوم. لمزيد من المعلومات حول كيفية القيام بذلك ، راجع نهاية هذا الدليل.

مناطق التنبيه لمدخلات LM339 غير العاكسة

نحتاج الآن إلى تشغيل الأسلاك من كل منطقة على لوحة التحكم في الإنذار إلى مدخلات المقارنة LM339. مع استمرار إيقاف تشغيل نظام الإنذار ، قم بتغذية سلك لكل منطقة بإدخال غير مقلوب (+) على جهاز المقارنة LM339. على سبيل المثال ، في نظامي:

  • ينتقل السلك من Z1 إلى إدخال LM339 1+
  • ينتقل السلك من Z2 إلى إدخال LM339 2+
  • ينتقل السلك من Z3 إلى إدخال LM339 3+
  • ينتقل السلك من Z4 إلى إدخال LM339 4+

ارجع إلى دبوس الخروج من LM339 ضمن الخطوة 3 إذا كنت تذكيرًا (يتم ترميزه بالألوان مع صورة لوح التجارب). بمجرد الانتهاء من ذلك ، يجب أن يظهر لوح التجارب الخاص بك مشابهًا للصورة الموضحة في هذه الخطوة.

قم بتشغيل نظام الإنذار وقياس الجهد الخارج من مقسم الجهد للتأكد من أنه يساوي الجهد المرجعي كما تم حسابه مسبقًا.

الخطوة 5: توصيل Wemos D1 Mini

توصيل Wemos D1 mini

الآن لدينا جميع مدخلات LM339 التي تم الاهتمام بها ، نحتاج الآن إلى توصيل Wemos D1 mini. ينتقل كل طرف إخراج LM339 إلى دبوس Wemos GPIO (إدخال / إخراج للأغراض العامة) والذي سنقوم بتعيينه عبر الكود باعتباره دبوس سحب الإدخال. يستغرق Wemos ما يصل إلى 5 فولت كحد أقصى كجهد Vcc (مصدر الإدخال) (على الرغم من أنه ينظم ذلك داخليًا إلى 3.3 فولت) ، سنستخدم منظم جهد LM7805 شائع جدًا (EDIT: انظر أدناه) لإسقاط سكة 12 فولت على اللوح وصولاً إلى 5V لتشغيل Wemos. تشير ورقة البيانات الخاصة بـ LM7805 إلى أننا بحاجة إلى مكثف سلكي على كل جانب من المنظم لتنعيم الطاقة ، كما هو موضح في صورة اللوح.الجزء الأطول للمكثف موجب (+) لذا تأكد من توصيله بالطريقة الصحيحة.

يأخذ منظم الجهد الجهد الداخل (دبوس الجانب الأيسر) والأرضي (الدبوس الأوسط) والجهد الخارج (دبوس الجانب الأيمن) تحقق مرة أخرى من دبوس الخروج إذا كان منظم الجهد الخاص بك يختلف عن LM7805.

(تحرير: وجدت أن الأمبيرات القادمة من لوحة الإنذار عالية جدًا بحيث يتعذر على LM7805 التعامل معها. تسبب هذا في الكثير من الحرارة في المشتت الحراري الصغير للطراز LM7805 وتسبب في تعطله ، مما تسبب بدوره في توقف Wemos العمل. لقد استبدلت LM7805 والمكثفات بمحول باك DC-DC بدلاً من ذلك ولم أواجه أية مشكلات منذ ذلك الحين. من السهل جدًا توصيل هذه الأسلاك. ما عليك سوى توصيل جهد الإدخال من المنبه ، وتوصيله بمقياس متعدد أولاً واستخدام برغي مقياس الجهد وضبط حتى جهد الخرج ~ 5 فولت)

دبابيس إدخال GPIO

بالنسبة لهذا المشروع ، نستخدم الدبابيس التالية:

  • المنطقة Z1 => دبوس D1
  • المنطقة Z2 => دبوس D2
  • المنطقة Z3 => دبوس D3
  • المنطقة Z4 => دبوس D5

قم بتوصيل المخرجات من LM339 إلى دبابيس GPIO ذات الصلة على لوحة Wemos ، وفقًا لصورة لوحة التجارب الموضحة في هذه الخطوة. مرة أخرى ، قمت بترميز المدخلات والمخرجات المطابقة بالألوان ، لتسهيل رؤية ما يشير إلى ماذا. يتم تعريف كل دبوس GPIO في Arduino على أنه "INPUT_PULLUP" ، مما يعني أنه سيتم سحبها حتى 3.3 فولت في ظل الاستخدام العادي (IDLE) وسيسحبها LM339 إلى الأرض في حالة تشغيل PIR. يكتشف الرمز التغيير من HIGH إلى LOW ، ويرسل رسالة لاسلكيًا إلى برنامج التشغيل الآلي للمنزل. إذا كنت تواجه مشكلات في هذا العمل ، فمن المحتمل أن يكون لديك مدخلات معكوسة مقابل غير مقلوبة بطريقة خاطئة (إذا كان الجهد من PIR الخاص بك مرتفعًا عند التشغيل ، كما يحدث مع معظم هواية PIR ، فأنت تريد الاتصالات طريقة بديلة)

اردوينو IDE

قم بإزالة Wemos من لوحة التجارب ، نحتاج الآن إلى تحميل الكود إليها (رابط بديل هنا) لن أخوض في التفاصيل حول كيفية القيام بذلك ، حيث توجد الكثير من المقالات على الويب حول تحميل الكود إلى Wemos أو ESP8266 الأخرى اكتب المجالس. قم بتوصيل كبل USB بلوحة Wemos وجهاز الكمبيوتر الخاص بك وقم بتشغيل Arduino IDE. قم بتنزيل الكود وافتحه في مشروعك. ستحتاج إلى التأكد من تثبيت وتحميل اللوحة الصحيحة لمشروعك بالإضافة إلى تحديد منفذ COM الصحيح (الأدوات ، المنفذ). ستحتاج أيضًا إلى تثبيت المكتبات المناسبة (PubSubClient، ESP8266Wifi) لتضمين لوحة Wemos في الرسم التخطيطي الخاص بك ، راجع هذه المقالة.

ستحتاج إلى تغيير سطور التعليمات البرمجية التالية ، واستبدالها بـ SSID وكلمة المرور الخاصة بك لاتصالك اللاسلكي. قم أيضًا بتغيير عنوان IP للإشارة إلى وسيط MQTT الخاص بك.

// واي فاي

const char * ssid = "your_wifi_ssid_here" ؛ const char * password = "your_wifi_password_here" ؛ // MQTT Broker IPAddress MQTT_SERVER (172 ، 16 ، 223 ، 254)

بمجرد التغيير ، تحقق من الرمز الخاص بك ثم قم بتحميله إلى لوحة Wemos عبر كابل USB.

ملحوظات:

  • إذا كنت تستخدم منافذ GPIO مختلفة ، فستحتاج إلى ضبط الكود. إذا كنت تستخدم مناطق أكثر أو أقل مما لدي ، فستحتاج أيضًا إلى ضبط الكود و TOTAL_ZONES = 4 ؛ ثابت ليناسب.
  • أثناء بدء تشغيل نظام الإنذار الخاص بي ، سيجري نظام الإنذار اختبارًا للطاقة لجميع 4 x PIRs التي سحبت كل GPIO المتصلة إلى الأرض ، مما تسبب في اعتقاد Wemos أن المناطق يتم تشغيلها. سيتجاهل الرمز إرسال رسائل MQTT إذا رأى جميع المناطق الأربع نشطة في نفس الوقت ، حيث يفترض أن نظام الإنذار قيد التشغيل.

رابط تنزيل بديل للرمز هنا

الخطوة 6: الاختبار وتكوين OpenHAB

اختبار وتكوين OpenHAB
اختبار وتكوين OpenHAB

اختبار MQTT

MQTT هو نظام مراسلة "اشتراك / نشر". يمكن لجهاز واحد أو أكثر التحدث إلى "وسيط MQTT" و "الاشتراك" في موضوع معين. أي رسائل واردة من أي جهاز آخر "منشورة" لنفس الموضوع ، سيتم دفعها من قبل الوسيط إلى جميع الأجهزة التي اشتركت فيه. إنه بروتوكول خفيف الوزن للغاية وسهل الاستخدام ومثالي كنظام تشغيل بسيط مثل النظام الموجود هنا. للاختبار ، يمكنك عرض رسائل MQTT الواردة من Wemos إلى وسيط MQTT الخاص بك عن طريق تشغيل الأمر التالي على خادم Mosquitto (Mosquitto هو واحد من العديد من برامج MQTT Broker المتاحة). يشترك هذا الأمر في رسائل Keepalive الواردة:

mosquitto_sub -v -t openhab / التنبيه / الحالة

يجب أن ترى الرسائل الواردة واردة من Wemos كل 30 ثانية أو نحو ذلك بالرقم "1" (بمعنى "أنا على قيد الحياة") إذا رأيت "0" ثابتًا (أو لا توجد استجابة) ، فلا يوجد اتصال. بمجرد أن ترى الرقم 1 قادمًا ، فهذا يعني أن Wemos يتواصل مع وسيط MQTT (ابحث عن "MQTT Last Will and Testament" للحصول على مزيد من المعلومات حول كيفية عمل ذلك ، أو شاهد إدخال المدونة الجيد حقًا)

بمجرد إثبات أن الاتصال يعمل ، يمكننا اختبار أنه يتم الإبلاغ عن حالة المنطقة عبر MQTT. اشترك في الموضوع التالي (# هو حرف بدل)

mosquitto_sub -v -t openhab / إنذار / #

يجب أن تأتي رسائل الحالة المعتادة ، وكذلك عنوان IP الخاص بـ Wemos نفسه. امش أمام PIR ، وسترى أيضًا أن معلومات المنطقة تأتي مشيرة إلى أنها مفتوحة ، ثم بعد ثانية أو بعد ذلك ، أنها مغلقة ، على غرار ما يلي:

openhab / التنبيه / الحالة 1

openhab / إنذار / zone1 مفتوح

openhab / إنذار / zone1 مغلق

بمجرد أن يعمل هذا ، يمكننا تكوين OpenHAB لتمثيل هذا بشكل جيد في واجهة المستخدم الرسومية.

تكوين OpenHAB

التغييرات التالية مطلوبة لـ OpenHAB:

ملف تحويل "alarm.map": (اختياري ، للاختبار)

مغلق = IdleOPEN = TriggeredNULL = غير معروف- = غير معروف

ملف تحويل "status.map":

0 = فشل

1 = متصل - = أسفل! NULL = غير معروف

ملف "العناصر":

String alarmMonitorState "Alarm Monitor [MAP (status.map):٪ s]" {mqtt = "<[mqttbroker: openhab / alarm / status: state: default]"} String alarmMonitorIPAddress "Alarm Monitor IP [٪ s]" {mqtt = "<[mqttbroker: openhab / alarm / ipaddress: state: default]"} Number zone1_Chart_Period "Zone 1 Chart" Contact alarmZone1State "حالة المنطقة 1 [MAP (alarm.map):٪ s]" {mqtt = "<[mqttbroker: openhab / alarm / zone1: state: default "} String alarmZone1Trigger" Lounge PIR [٪ 1 $ ta٪ 1 $ tr] "Number zone2_Chart_Period" Zone 2 Chart "Contact alarmZone2State" المنطقة 2 State [MAP (alarm.map):٪ s] "{mqtt =" <[mqttbroker: openhab / alarm / zone2: state: default "} String alarmZone2Trigger" First Hall PIR [٪ 1 $ ta٪ 1 $ tr] "Number zone3_Chart_Period" Zone 3 Chart "Contact alarmZone3State" Zone 3 حالة [MAP (alarm.map):٪ s] "{mqtt =" <[mqttbroker: openhab / alarm / zone3: state: default "} String alarmZone3Trigger" Bedroom PIR [٪ 1 $ ta٪ 1 $ tr] "رقم zone4_Chart_Period "مخطط المنطقة 4" Contact alarmZone4State "Zone 4 State [MAP (alarm.map):٪ s]" {mqtt = "<[mqttbroker: openha ب / المنبه / المنطقة 4: الحالة: افتراضي "} String alarmZone4Trigger" Main Hall PIR [٪ 1 $ ta٪ 1 $ tr]"

ملف "خريطة الموقع" (بما في ذلك الرسوم البيانية rrd4j):

عنصر النص = alarmZone1Trigger valuecolor = [<= 60 = "# ff0000" ، <= 300 = "# ffa500" ، <= 600 = "# 008000" ، 3600 = "# 000000"] {الإطار {تبديل العنصر = zone1_Chart_Period label = "Period" mappings = [0 = "Hour"، 1 = "Day"، 2 = "Week"] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 0، zone1_Chart_Period = = غير مهيأ] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 1] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 2]} Text item = alarmZone2Trigger valuecolor = [<= 60 = "# ff0000"، <= 300 = "# ffa500"، <= 600 = "# 008000"، 3600 = "# 000000"] {الإطار {تبديل العنصر = zone2_Chart_Period label = "فترة" تعيينات = [0 = "ساعة"، 1 = "يوم"، 2 = "أسبوع"] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 0 ، zone2_Chart_Period == غير مهيأ] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 1] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 2]}} عنصر نصي = alarmZone3Trigger valuecolor = [<= 60 = "# ff0000" ، <= 300 = "# ffa500" ، <= 600 = "# 008000" ، 3600 = "# 000000"] {Frame {Switch item = zone3_Chart_Period label = "فترة" التعيينات = [0 = "Hour"، 1 = "Day"، 2 = "Week"] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 0، zone3_Chart_Period == غير مهيأ] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 1] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 2]}} نص item = alarmZone4Trigger valuecolor = [<= 60 = "# ff0000"، <= 300 = "# ffa500"، <= 600 = "# 008000"، 3600 = "# 000000"] {Frame {Switch item = zone4_Chart_Period label = " فترة "mappings = [0 =" ساعة "، 1 =" يوم "، 2 =" أسبوع "] صورة url =" https:// localhost: 8080 / rrdchart.png "visibility = [zone4_Chart_Period == 0، zone4_Chart_Period == غير مهيأ] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone4_Chart_Period == 1] صورة url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone4_Chart_Period == 2] }} // اختياري ولكنه مفيد لتشخيص الحالة وعنوان IP عنصر نص ss = alarmMonitorState عنصر نصي = alarmMonitorIPAddress

ملف "القواعد":

القاعدة "تغيير حالة منطقة التنبيه 1"

عندما تم تغيير العنصر alarmZone1State إلى OPEN ثم postUpdate (alarmZone1Trigger، new DateTimeType ()) alarmZone1State.state = مغلق النهاية

قاعدة "تغيير حالة منطقة التنبيه 2"

عندما تم تغيير العنصر alarmZone2State إلى OPEN ، ثم postUpdate (alarmZone2Trigger، new DateTimeType ()) alarmZone2State.state = مغلق النهاية

قاعدة "تغيير حالة منطقة التنبيه 3"

عند تغيير العنصر alarmZone3State إلى OPEN ، ثم postUpdate (alarmZone3Trigger، new DateTimeType ()) alarmZone3State.state = مغلق النهاية

قاعدة "تغيير حالة منطقة التنبيه 4"

عندما تم تغيير العنصر alarmZone4State إلى OPEN ، ثم postUpdate (alarmZone4Trigger، new DateTimeType ()) alarmZone4State.state = مغلق النهاية

قد تحتاج إلى تغيير تكوين OpenHAB أعلاه قليلاً ليناسب الإعداد الخاص بك.

إذا كانت لديك أي مشاكل مع تشغيل PIRs ، فابدأ من البداية ، وقم بقياس الفولتية لكل جزء من الدائرة. بمجرد أن تكون سعيدًا بذلك ، تحقق من الأسلاك الخاصة بك ، وتأكد من وجود أرضية مشتركة ، وتحقق من الرسائل على Wemos عبر وحدة تحكم تصحيح الأخطاء التسلسلية ، وتحقق من اتصال MQTT وتحقق من بنية التحويل والعناصر وملفات خريطة الموقع.

حظا طيبا وفقك الله!

موصى به: