لقد حان الصيف ، مع الحرارة ، وكذلك الوقت لتشغيل مكيفات الهواء. وإذا كنت مغرمًا بالتقنيات الحديثة والمنزل الذكي ، فأنت تريد التحكم في تكييف الهواء بطريقة ما بطريقة ذكية (أو على الأقل بطريقة حديثة). فيما يلي سلسلة من الملاحظات حول محاولتي لدمج الطقس في المنزل مع التحكم الصوتي وواجهة عبر النظام الأساسي.
التحدي
هناك أربعة مكيفات في الشقة ، تحتاج إلى معرفة كيفية إدارتها:
- من واجهة الويب (لدي Home Assistant ، تدور على Raspberry Pi منفصلة ، ولكن من الناحية المثالية أريد اتصالًا بسيطًا بأي نظام) ؛
- صوت (سوف يفعل مساعد Google ، ثم فكر في أليس) ؛
- مخطوطات
- رخيصة ...
أبحاث السوق
الحل الأصلي
ربما لن أقول. تضمن قرار الشركة المصنعة لمكيفات الهواء مجموعة من الأسلاك ، وحدتين إضافيتين على الأقل لكل وحدة ، وسعر يبلغ حوالي 200 دولار للغرفة. بالإضافة إلى بروتوكول ملكية وتطبيق قديم وكل ذلك. شطب.
ما يقرب من 100 دولار للغرفة ، يعمل أصلاً مع Google Assistant و IFTTT ، يبدو جميلًا ، ولكنه لا يزال باهظًا بعض الشيء.
° تادو - وبالمثل (وحتى أكثر تكلفة).
Xiaomi Aqara / Mi Home و Broadlink RM Pro / Mini
تتكامل أجهزة إرسال الأشعة تحت الحمراء العالمية ، نظريًا ، بعض مكيفات الهواء الضرورية "خارج الصندوق" ، مع Home Assistant في النصف ، ولكن بشكل عام - حل متساوٍ ، على الرغم من أن السعر أقرب بالفعل إلى جهاز بأسعار معقولة (20-35 دولارًا للغرفة ، اعتمادًا على القدرات ) نعم ، والتطبيقات باللغة الصينية (في بعض الحالات) ليست ما أطمح إليه.
DIY
الطريقة الأرخص والأكثر مرونة ، والتي سأتحدث عنها أكثر.
اختيار المكون
هناك شيء يجب التفكير فيه ، ولكن بشكل عام سنحتاج إلى:
حديد
تحكم
نأخذ بغباء ESP8266 ، وبساطة البرامج الثابتة وإمدادات الطاقة ، سنستخدم D1 mini. من الواضح أننا سندير النظام عبر WiFi.
مرسل الأشعة تحت الحمراء
بالنسبة للنموذج الأولي ، سنستخدم LED IR بسيطًا ومقاومة وترانزستورًا ، ثم سنفكر في كيفية تحسين ذلك.
جهاز استشعار درجة الحرارة
إنه أكثر متعة به ، يمكنك ضبط درجة الحرارة المستهدفة ، وتشغيل / إيقاف تشغيل تلقائي. للبدء ، خذ بغباء DHT22 بغباء.
الشاشة
سنعرض الحالة الحالية للنظام (لتصحيح الأخطاء) ، وربما عنوان IP الحالي (هل سيكون مفيدًا؟).
البرمجيات
IDE
سننفذ كل شيء في Arduino IDE (الذي لم أعمل معه من قبل) باستخدام مكتبات مفتوحة.
بعد ذلك بكثير ، عندما كان المشروع يعمل بالفعل ، تحولت إلى Visual Studio Code باستخدام البرنامج المساعد
PlatformIO .
بروتوكول
سنتواصل مع Home Assistant من خلال MQTT (مكتبة
PubSubClient ) ، لأن إنه بروتوكول مفتوح ، وهناك
مكون خاص به.
سيبدو التكوين ، على سبيل المثال ، شيء مثل هذا:
climate: - platform: mqtt name: Living Room HVAC modes: - "off" - "auto" - "heat" - "cool" - "dry" - "fan" swing_modes: - "auto" - "off" fan_modes: - "auto" - "low" - "medium" - "high" mode_command_topic: "livingroom/meteo/mode/set" mode_state_topic: "livingroom/meteo/mode" temperature_command_topic: "livingroom/meteo/target/set" temperature_state_topic: "livingroom/meteo/target" fan_mode_command_topic: "livingroom/meteo/fan/set" fan_mode_state_topic: "livingroom/meteo/fan" swing_mode_command_topic: "livingroom/meteo/swing/set" swing_mode_state_topic: "livingroom/meteo/swing" current_temperature_topic: "livingroom/meteo/temperature"
الإدارة
ستساعدنا مكتبة
HeatpumpIR في إرسال الإشارات إلى مكيف الهواء (لا يزال طراز مكيف الهواء مشفرًا).
متفرقات
ستحتاج إلى المزيد من المكتبات
للمؤقت ، للعمل مع
مستشعر درجة الحرارة ومع
الشاشة ، ولكن هذه تافهة. سنضيف WiFiManager و ArduinoOTA بالإيماءة المعتادة لتحديث البرامج الثابتة عبر واجهة الويب ، وليس USB.
النموذج الأولي (00)
نشتري مكونات عشوائية على أليكسبريس ، نجمعها معا على لوحة الوهم ، واختبار الفكرة.
نحن نتفهم ما يلي:
- تم طلب الشاشة كبيرة جدًا ولها أرجل كثيرة جدًا.
- لا يصل مصباح LED إلى مسافة بعيدة جدًا ، ولا يمكن الاعتماد عليه كثيرًا.
لكن الفكرة بشكل عام تعمل! يظهر مكون HVAC "الأصلي" في واجهة Home Assistant ، مما يعني أن التحكم من أي مكان في العالم موجود بالفعل في جيبنا. يضيف التكامل الأصلي لـ Home Assistant مع مساعد Google أوامر صوتية وتعليقات: يمكنك سؤال المساعد عن درجة الحرارة في الغرفة ، وسوف يجيب على كل من الهدف ودرجة الحرارة الحالية.
إن تغيير درجة الحرارة المستهدفة ، وسرعة النفخ ، ووضع تكييف الهواء في واجهة الويب هو أيضًا في مكانه (والأهم من ذلك ، أنه يعمل!).
عينة اختبار (01)
دعنا نغير مكونين: طلب شاشة أصغر ، والعمل من خلال I2C (وسنستخدم مكتبة
مختلفة ).
نحن أيضًا نستبدل IR LED بوحدة جاهزة.
اتضح أنه لا يستحق طلب وحدات مع LED واحد (في الصورة على اليسار) على aliexpress: فهي لا تحتوي على ترانزستور ، وواحد من الأرجل (VCC) لديهم في الأساس خدعة.
ولكن إذا طلبت وحدة مع اثنين من مصابيح LED (في الصورة على اليمين) ، فإن جميع المكونات الضرورية موجودة بالفعل ، ويتم توصيل هذه الوحدة بسهولة وبشكل طبيعي ، وتنتهي قليلاً.
لقد حان الوقت أيضًا لتجميع كل شيء معًا على لوحة الدوائر المطبوعة ... لقد كانت واحدة من أصعب اللحظات بالنسبة لشخص لم يسبق له تصميم لوحات الدوائر المطبوعة ، وبالتأكيد فعلت كل شيء خاطئ.
للتصميم ، استخدمت EasyEDA ، طلبت منتجات نهائية لـ OSHPark (مرة أخرى ، بالتأكيد ، يمكنك العثور على خيار أرخص) ، ونتيجة لذلك حصلت على شيء مثل هذا:
تمت إضافة الزر في اللحظة الأخيرة ، وتم العثور على مكان له عن طريق الصدفة تمامًا. اتضح أنه مع الزر كل شيء أكثر متعة ، لا يمكنك إبقاء الشاشة في كل وقت (وهو أمر سيئ لـ OLED) ، ولكن إظهار الحالة بالضغط.
حسنًا ، إنه جيد بالفعل ، يبقى إضافة الحالة. للقيام بذلك ، قم بتشغيل Blender ، قم بعمل مجموعة من المتوازيات ، تطبيق عدد من العمليات المنطقية ...
وإرسالها إلى الطابعة ثلاثية الأبعاد.
في المجموع ، تبين أنها رخيصة الثمن (أقل من 10 دولارات للنسخة) ، بمرونة (ستعمل مع أي مكيف هواء تقريبًا) ، ويمكن دمجه بسهولة ، والتحكم فيه عن طريق الصوت وعبر الويب ، ويتم الانتهاء منه باستمرار من خمسة أمتار. بشكل عام ، حول ما أردت.
كيف سيكون كل هذا أفضل قليلاً؟ ..
موديل السلسلة (02)
هناك عدد من الاتجاهات لتحسين المنتج الناتج (وبشكل أدق ، فرص التحسين التي تجعل من الممكن تحويل التجربة إلى منتج):
- يمكن أخذ مستشعر درجة الحرارة أصغر وأكثر دقة ، على سبيل المثال ، BME280 أو HTU21D أو Si7021 ، مما سيسمح لك بتعليقها على نفس الأرجل مثل الشاشة (I2C) ، مما يقلل بشكل كبير من حجم الجهاز النهائي وتبسيط تخطيط PCB. من الناحية العملية ، اتضح أن نفس BME280 بدأ يتأثر بشدة بتسخين ESP8266 نفسه ، ويجب تعديل القراءات الصادرة.
- (يتبع ذلك من الفقرة الأولى) الحفاظ على تشغيل ESP8266 باستمرار ليس أمرًا سهلاً ؛ تحتاج إلى الانتقال بشكل دوري إلى النوم العميق ، فقط في بعض الأحيان للاستيقاظ لإرسال الشهادات وتلقي الأوامر ؛
- (يتبع من النقطة الثانية) MQTT العادي لم يعد مناسبًا جدًا ، تحتاج إلى استخدام MQTT-SN بحيث يتم تذكر أوامر التحكم وتسليمها إلى وحدة التحكم في وقت الاستيقاظ ؛
- سيسمح لك تنفيذ العناصر المذكورة أعلاه بتغيير الطاقة "السلكية" إلى البطارية ؛
- من الصعب تنفيذ الطريقة الحالية لتثبيت المكونات على لوحة الدوائر المطبوعة (لحام تقليدي) وليست مرنة بما يكفي: من المنطقي لحام الرؤوس بحيث يمكن تغيير أجهزة استشعار درجة الحرارة نفسها مثل القفازات ؛
- أخيرًا (على عكس الفقرة السابقة) ، على الرغم من كل ذلك ، فإن الوحدات النهائية جيدة وبسيطة ، ولكنها ضخمة قليلاً ، بشكل مثالي بدلاً من D1 الصغير سيكون هناك ESP8266 عارية ، وسيتم لحام مستشعر درجة الحرارة والزر ومصابيح IR على لوحة واحدة ( كما يفعلون في المنتجات التسلسلية) ، مما يقلل من حجم الجهاز وسعره التسلسلي ؛
- على أي حال ، سيكون من اللطيف تضمين البرنامج الثابت القدرة على تحديد طراز مكيف الهواء بسهولة بنقرة واحدة ...
الخلاصة
كانت مغامرة مجيدة ، وفهمت الكثير. على سبيل المثال ، أدركت سبب ارتفاع تكلفة الأجهزة التسلسلية ، ومقدار الجهد المبذول لتحقيق نفس المستوى معها. من ناحية أخرى ، لقد فعلت الكثير لأول مرة في هذا المشروع (العمل في Arduino IDE ، وطلب لوحات الدوائر المطبوعة ، وإنشاء نموذج لطابعة ثلاثية الأبعاد) ، وكان الحصول على هذه التجربة لا يقدر بثمن. ومع ذلك ، لن يظهر رمز المصدر: أشعر بالخجل منهم :)
ولكن ما زلت أحقق هدفي ، وتبين أن التحكم الرخيص والمرن في مكيفات الهواء يمكن تحقيقه تمامًا.