حاليا ، أصبحت أنظمة التحكم في المنزل الذكي أكثر شعبية. توفر الواجهة المركزية التي تتحكم في الأجهزة في جميع أنحاء المنزل الوقت وتسمح لك بالتحكم في منزلك بشكل أكثر فعالية. يتم تنفيذ رؤيتهم لهذه الأنظمة من قبل العلامات التجارية البارزة: Apple و Amazon و Google ، وبناءها في بنيتها التحتية ، وكذلك الحرفيين الذين يقومون بتجميع هذه الأنظمة على أساس منصة Arduino.
كان هدفنا كما يلي: إنشاء نظام سيكون متاحًا على عدد كبير من الأجهزة ولن يكون مرتبطًا بأي مكان. اتضح أن خيارًا ممتازًا لتنفيذ عنصر التحكم هو برنامج روبوت لـ Telegram messenger. لدى Telegram تطبيقات على جميع المنصات الرئيسية ، بالإضافة إلى إصدار الويب. يمكن الحصول على الوصول إليها من أي مكان ، ما عليك سوى أن يكون لديك حساب.
اخترنا من الوحدات ما يلي:
• شريط LED بتحكم RGB
• منفذ تديره
• مستشعر درجة الحرارة
• مستشعر الضوء (يستخدم لتشغيل الضوء تلقائيًا)
ماذا نحتاج
1. التوت بي 3
جهاز كمبيوتر صغير ولكن بعيد لا يحتاج إلى إدخال ، ستكون قوته كافية لنا للقيام بهذه المهام. الإصدار الثالث جيد مع وحدة Wi-Fi مدمجة ، لذلك لا يتعين علينا التفكير في محول طرف ثالث.
2. وحدات ESP8266
سنحتاج 4 منهم. استخدمنا ESP-12F ، ولكن بشكل عام لا يوجد فرق: سيكون ESP-1 كافيًا تمامًا. أيضا ، يمكن أن توفر لك لوحات NodeMCU الجاهزة الوقت والجهد.
3. شريط LED
أخذنا شريط RGB مُدارًا على وحدات التحكم WS2812b ، على الرغم من أن أي شريط يعمل على 5V ويدعمه نظام Arduino مناسب هنا بالمناسبة.
4. أجهزة استشعار درجة الحرارة والضوء
استخدمنا وحدة BH1750 لتحديد الإضاءة في الغرفة و DS18B20 لدرجة الحرارة. كانت المعايير الرئيسية هي التوفر ، والدعم من قبل منصة Arduino ، والقدرة على العمل مع منطق 3.3V ESP8266.
5. التتابع
يمكن أن تمر الوحدة الفرعية MOD-1CH لـ Arduino حتى 10 أمبير من التيار ويتم التحكم فيها بواسطة 5V ، ولم نجد نظائرًا لـ 3.3V ، لذلك استخدمنا ترانزستور في وضع مفتاح للتحكم.
6. بوت برقية
سيتم التحكم المباشر في النظام بأكمله باستخدام برنامج Telegram bot ، الذي تم إطلاقه على Raspberry: سيتيح هذا الوصول إلى النظام بسهولة على أي منصة من أي مكان في العالم. إن إنشاء برنامج بوت ل Telegram أمر بسيط للغاية ، بفضل نظام أساسي متطور ودعم لعدد كبير من اللغات.
وبالتالي ، سيبدو نظامنا بالكامل على النحو التالي:

التنفيذ
أولاً ، نختبر الوحدات.

تعمل لوحات الدوائر الجاهزة على تكييف المسافة بين المسامير ، مما يسهل بشكل كبير اللحام ، وتحتوي أيضًا على المقاومات الضرورية التي تربط المسامير CH_PD و GPIO2 إلى Vcc.
لسوء الحظ ، يتم تشغيل وحدات ESP8266 وتشغيلها عند 3.3 فولت ، وليس 5 ، مثل Arduino. يمكنك تحويل الجهد باستخدام وحدة تحويل جاهزة ، ولكن يمكنك أيضًا لحام الدائرة بناءً على المثبت الخطي AMS1117 ، كما فعلنا.

الخطوة التالية هي البرمجة.
لحسن الحظ ، يتم دعم منصة ESP8266 بواسطة Arduino IDE ، مما يفتح العديد من الاحتمالات لنا. لتنزيل البرامج الثابتة مباشرة إلى الوحدة النمطية ، سنستخدم Arduino Nano ، ومع ذلك ، يمكن القيام بذلك من خلال محول USB-UART المعتاد. لا تنس فرق الجهد بين Arduino و ESP.
المخطط كما يلي:

الزر مطلوب لإغلاق دبوس GPIO1 إلى GND عند تطبيق الطاقة على الوحدة النمطية ، وبالتالي نقله إلى وضع البرمجة.
بعد ذلك ، نقوم بتكوين Arduino IDE بحيث يفهم ESP ( تعليمات مفصلة مع جميع الروابط ) ومحاولة تسجيل رسم تخطيطي لوميض LED.

بعد غمضة ناجحة ، بدأنا لحام جميع الوحدات. مع مستشعر درجة الحرارة والضوء ، كل شيء قياسي جدًا.
درجة الحرارة:


إضاءة:


لكن الشريط والمآخذ الذكية تسببت في بعض الصعوبات.
فشل اتصال بسيط لمدخلات التحكم في الشريط بـ ESP. هذا ليس مفاجئًا ، لأن WS2812b يتطلب 70٪ على الأقل من مدخلات VCC (5x0.7 = 3.5) لإدخال التحكم ، ومن الواضح أن لوحة 3.3V ليست كافية. لكن وجدنا عكاز طريقة مثيرة للاهتمام لبدء تشغيلها دون استخدام محول تعزيز. إذا كان الصمام الثنائي يتطلب 0.7xVcc كحد أدنى للتفاعل مع الإشارة ولا يمكننا زيادة مستوى هذه الإشارة ، فيجب تخفيض Vcc! نعم ، لن تضيء مصابيح LED بشكل ساطع ، ومع ذلك ، لا نحتاج إلى تشغيل الشريط بالكامل بهذه الطريقة ؛ ديود واحد يكفي. من خلال إرسال الإشارة على طول السلسلة ، يستخدم LED بالفعل مستوى Vcc لتشكيل الإشارة ، وهو ما يكفي لمؤشر LED "عادي". وبالتالي ، من خلال توصيل الصمام الثنائي الأول في الشريط بمصدر الطاقة من خلال الصمام الثنائي ، والذي "يأكل" حوالي 0.6 فولت ، نحصل على شريط يعمل بشكل مثالي يتم التحكم فيه مباشرة من وحدة ESP8266. وتركنا مصباح LED الأول الخافت قليلاً لاحتياجات التصحيح: عرض حالة اتصال الشبكة.
إليك ما حدث:


أردنا وضع مقبسنا الذكي تمامًا في الحالة من المقبس القديم مع جهاز توقيت. كان عليهم الدخول إلى هناك: ESP-12F نفسها ، ومصدر طاقة لها ومرحل يتحكم في المخرج. ومع ذلك ، بعد وضع التتابع ومصدر الطاقة هناك ، لا يزال يتعذر علينا استيعاب وحدة ESP هناك. لذلك ، كان علي إرفاق مربع صغير أدناه.

لم تكن النتيجة أنيقة كما أردنا في الأصل ، ولكنها كانت جهازًا صلبًا كان لا بد من توصيله بمنفذ طاقة.


كانت الخطوة التالية هي تكوين Raspberry. كانت الخطة كما يلي: تتصل وحداتنا بنقطة وصول Wi-Fi ، وهي Raspberry ، وبشكل أكثر دقة ، إلى وحدة Wi-Fi المدمجة. يدير Raspberry برنامج Telegram-bot ، والذي يقع مع جميع الوحدات على الشبكة المحلية ويمكنه بسهولة تبادل طلبات http معهم. كلها متصلة بالإنترنت عبر إيثرنت.
لتنفيذ هذه الخطة ، استخدمنا حزمتين:
- hostapd - يسمح لك باستخدام وحدة wi-fi المدمجة كنقطة وصول
- dnsmasq - يجمع بين خوادم DHCP و DNS.
لقد حاولنا تحقيق الاستقلال النسبي للرمز والأجهزة ، وبالتالي ، تم تنفيذ جميع الطلبات ليس على عناوين IP ، ولكن على أسماء من منطقة .sh اخترعت (light.sh ، socket.sh ، وما إلى ذلك). للقيام بذلك ، قمنا بتكوين عناوين IP ثابتة لكل وحدة نمطية وأضفنا السجلات المقابلة للوحدات النمطية لعناوين DNS هذه. لحسن الحظ ، من السهل جدًا تكوين dnsmasq ( تعليمات تفصيلية لإعداد هذا النظام ).
وأخيرًا ، البوت نفسه.
كتبنا روبوتًا في Python باستخدام مكتبة python-telegram-bot. لقد قمنا بتطوير واجهة زر ، تبسط الإدارة ، وتحول الجهاز إلى نوع من جهاز التحكم عن بعد:


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