فهرست مطالب:

هدست تخت خواب بی سیم MQTT: 5 مرحله (همراه با تصاویر)
هدست تخت خواب بی سیم MQTT: 5 مرحله (همراه با تصاویر)

تصویری: هدست تخت خواب بی سیم MQTT: 5 مرحله (همراه با تصاویر)

تصویری: هدست تخت خواب بی سیم MQTT: 5 مرحله (همراه با تصاویر)
تصویری: گوشی قاپی که عن شد 😂😂😂| دوربین مخفی 2024, جولای
Anonim
هدست تخت خواب بی سیم MQTT
هدست تخت خواب بی سیم MQTT
هدست تخت خواب بی سیم MQTT
هدست تخت خواب بی سیم MQTT

چند سال پیش ما یک تخت فوم حافظه جدید خریداری کردیم و مانند اکثر تخت ها ، شما باید یکی از "پایه های مورد تایید" آنها را خریداری کنید تا ضمانت نامه را حفظ کنید. بنابراین ، ما ارزان ترین پایه را انتخاب کردیم که شامل قابلیت بالا و پایین آوردن سر تخت نیز می شد. چند روز بعد تشک ما و پایه ارزان آمریکایی قابل تنظیم با کنترل های سیمی (یکی برای هر طرف تخت) تحویل داده شد و تنظیم شد.

اولین چیزی که ما به آن توجه کردیم این بود که طناب هایی که در سالن نمایش خوب و بلند بودند ، آن چیزی نبود که ما روی تخت خود داشتیم! آنهایی که در نمایشگاه بودند پسوند داشتند. این افزونه ها با تخت خواب ما گنجانده نشده و به اندازه کافی جالب است ، هیچ کس علاقه ای به فروش یک جفت کابل فرمت به ما ندارد. این ما را با کنترل هایی که به سختی به بالای تخت می رسید و برای استفاده از آنها مجبور بودیم بچرخانیم ، رها کرد.

شما چیزی رو گرفتید که قیمت ش رو پرداخت کردید

پس از حدود 6 ماه متوجه شدیم که یقه های فشار بر روی یکی از گروه های کنترل شروع به پاره شدن می کند. چند ماه بعد - سیم برهنه. تقریباً یک سال سریع به جلو حرکت می کند ، یکی از کنترل ها دیگر کار نمی کند و دیگری کمی پیچیده می شود.

باز هم ، هیچ کس علاقه ای به فروش جایگزین به ما نداشت. بعد به من ضربه زد!

یک لحظه صبر کنید! آیا من یک سیستم اتوماسیون و کنترل خانه نمی سازم؟!؟

مرحله 1: کشف

کشف
کشف
کشف
کشف

من می خواستم ببینم چه می توانم با آنچه که دارم انجام دهم ، بنابراین برنامه کنترل خراب را گرفتم و عجب! مزخرف زیاد بود اونجا! همه این مطالب برای چه بود؟ عقب رفتم و فقط به خطوطی که وارد و بیرون می آمد نگاه کردم. من متوجه شدم که یک منبع تغذیه 12 ولت و یک خط زمین وجود دارد. دو خط دیگر مانند خطوط سیگنال برای دو دکمه بالا و پایین بود. بنابراین ، من از فرصت استفاده کردم و فقط منبع تغذیه 12 ولت را به خط سیگنال "بالا" رساندم. تخت شروع به حرکت کرد! سپس سیم بلوز خود را به خط سیگنال "پایین" منتقل کردم و تخت پایین رفت!

در جعبه مخاطبین 4 خط سیگنال دیگر و 4 دکمه دیگر وجود دارد. بهترین حدس من این است که این برد کنترل در همه مدل های پایه سیمی آنها استفاده می شود و آنها فقط در صورت نیاز صفحات مختلف روی صفحه را قرار می دهند. بنابراین ، من یک تئوری کار داشتم. من خط تغذیه را آزمایش کردم تا ببینم آیا در حین استفاده افت کرده یا در هر زمان سنبله شده است - خیر. جریان بسیار کمی روی خطوط سیگنال وجود داشت اما برای فعال شدن موتور به 12 ولت نیاز داشت.

مرحله 2: طراحی

طرح
طرح
طرح
طرح
طرح
طرح
طرح
طرح

بنابراین یک اتصال ساده بین VCC و پین سیگنال هر یک تنها چیزی است که لازم است ، اما چگونه در سیستم من انجام می شود. دو رله برای مخاطبین مورد نیاز است و ESP8266 برای کنترلر بی سیم کار می کند. از آنجایی که رله ها می توانند جریان بیشتری از پین های دیجیتالی داشته باشند ، بهتر است بین کنترلر و رله از یک نوریذوب کننده استفاده کنید. این به سیگنال کوچکی اجازه می دهد تا یک سوئیچ جریان بالاتر (در این مورد یک ترانزیستور با نور) روشن شود و سیم پیچ رله را با خیال راحت فعال کند. همچنین ، یک نوریذوب کننده کنترل کننده را از هر گونه سنبله ای که هنگام آزاد شدن سیم پیچ رله و فروپاشی میدان مغناطیسی ایجاد می شود ، جدا می کند. خوشبختانه ، ماژول های رله ای وجود دارند که قبلاً شامل تمام این مدارها و با قیمت نسبتاً کمی هستند.

بستر منبع تغذیه کنترل کننده خواهد بود و برای کنترل 12 ولت ارائه شده ، به یک مبدل باک متغیر نیاز داریم. یکی از موارد بسیار ارزان قیمت در زیر پیوند خورده است و به زیبایی کار می کند. خطوط 12 ولت و GND به طرف ورودی مبدل و سمت تنظیم شده 5 ولت به VCC NodeMCU و پین VCC روی ماژول رله متصل می شود. زمین (-) مبدل به پین های GND متصل می شود هم ماژول رله و هم NodeMCU.

NodeMCU با استفاده از D1 (GPIO5) و IN2 با استفاده از D2 (GPIO4) به IN1 متصل می شود. خط سیگنال بالا در بستر به ترمینال پیچ معمولاً باز برای رله 1 و خط سیگنال پایین به رله 2 متصل کننده بلوک ترمینال که معمولاً باز است متصل می شود. شما باید سیم 12 ولت را که به طرف ورودی مبدل باک متصل است را نیز به دیگر اتصال بلوک ترمینال برای رله BOTH 1 و 2 متصل کنید.

قطعات

  • 1 - NodeMCU
  • 1 - ماژول رله دوئل با جداسازی فعلی
  • 1 - مبدل ورودی/خروجی متغیر
  • 1 - برد چاپی PCB
  • سیم مسی رشته ای 22 سنج
  • 2 - پیچ M3x 8

مرحله 3: محوطه سازی

محفظه
محفظه

محوطه را می توانید در اینجا پیدا کنید:

من یک محفظه ساده با Tinkercad طراحی کردم که به کابل کنترل تخت اجازه می دهد تا داخل جعبه بین براکت های کاهش فشار داخل جعبه وارد شود. در اینجا اسلات هایی برای بستن زیپ وجود دارد که به جلوگیری از لغزش کابل کمک می کند ، اما در مورد من مناسب بسیار محکم بود و نیازی به آن نداشت. درپوش با 2 پیچ M3x 8 پیچ شده است. توصیه می کنم کد را بارگذاری کرده و سیستم را قبل از نصب در جعبه آزمایش کنید.

من از چسب حرارتی برای نگه داشتن تخته ها در محل خود استفاده کردم اما ممکن است لازم نباشد.

مرحله 4: کد

کد را می توانید در اینجا پیدا کنید:

توجه: این پروژه از کتابخانه pubsubclient استفاده می کند که می تواند در مدیریت کتابخانه در Arduino IDE اضافه شود

کد در اینجا بسیار اساسی است و بر اساس نوع Cover MQTT در Home Assistant طراحی شده است. ایده اینجا ساده است: وقتی دکمه بالا یا پایین را در دستیار خانگی فشار می دهید ، رله مناسب بسته می شود تا فرمان توقف دریافت شود یا سیستم به حداکثر زمان فعال سازی برسد و متوقف شود.

حداکثر زمان به عنوان یک احتیاط ایمنی در نظر گرفته می شود در صورتی که کاربر فراموش کند که آن را متوقف کند یا اگر فرمان به طور تصادفی ارسال شده است و بعید است کسی آن را متوقف کند. ما نمی خواهیم رله به طور نامحدود یا هرگونه مشکل غیرمنتظره در تختخواب به دلیل بسته شدن طولانی مدت تماس ، روشن شود.

در کد من ، این فاصله زمانی 20 ثانیه است و می تواند در بلوک متغیر جهانی در بالای کد تنظیم شود.

دومین اقدام احتیاطی این بود که همیشه اطمینان حاصل کنید که اگر من یک رله را فعال می کنم ، همیشه غیرفعال کردن عمدی دیگری نیز نامیده می شود ، حتی اگر آخرین حالت خاموش باشد. من نمی خواهم 12 ولت را به هر دو خط سیگنال ارسال کنم ، زیرا نمی دانم این کار با تختخواب چه می کند.

به غیر از این ، تختخواب منتشر می کند که هر 60 ثانیه در دسترس است و همین. اینجا زنگ و سوت وجود ندارد. از آنجا که تختخواب بازخورد موقعیتی ندارد ، من نتوانستم هیچ چیزی را به «دستیار خانه» ارسال کنم.

مرحله 5: نمونه ادغام

مثال ادغام
مثال ادغام
مثال ادغام
مثال ادغام

کدی که من نوشتم از MQTT برای ارتباط از طریق WiFi استفاده می کند و بنابراین می تواند با هر مرکز اتوماسیون یا دستگاهی که از MQTT استفاده می کند ارتباط برقرار کند. من از Home Assistant که کارگزار MQTT داخلی دارد استفاده می کنم. در زیر نمونه ای از پیکربندی HA من است.

در HA من یک فایل covers.yaml با تعریف زیر دارم:

- پلت فرم: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control/cmd" available_topic: "master_bed_control/hebûna" qos: 0 retain: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_notava آفلاین "خوش بین: درست است

این به من یک ورودی در رابط HA من می دهد که دارای دکمه بالا/توقف/پایین با عملکرد مطابق بالا است.

علاوه بر این ، من دو دکمه در کنترل پنل کنار تختم (Instructable / Blog Post) برای بالا بردن و پایین آوردن سرپوش تعریف کرده ام. دکمه های روی صفحه کنترل به عنوان سنسورهای MQTT تعریف شده اند:

- پلت فرم: mqtt

state_topic: "bedside_cp1/button5" name: "Bedside CP1 Button 5" icon: mdi: circle

- پلت فرم: mqtt

state_topic: "bedside_cp1/button6" name: "Bedside CP1 Button 6" icon: mdi: circle

… و 4 قانون اتوماسیون برای زمانی که هر دکمه فشرده و آزاد می شود. هنگامی که فشار داده می شود ، بسته به اینکه کدام دکمه فعال شده است ، فرمان بالا یا پایین به تخت ارسال می شود ، هنگامی که دکمه آزاد می شود ، دستور توقف ارسال می شود:

- شناسه: '1548308650383'

نام مستعار: MBR Bedside CP Button 5a trigger: - unit_id: sensor.bedside_cp1_button_5 از: 'Off' platform: state to: 'On': شناسه: '1548308758911' نام مستعار: MBR Bedside CP Button 5b trigger: - units_id: sensor.bedside_cp1_button_5 از: 'On' platform: state to: 'Off' condition: action: - data: units_id: 'cover.master_bed_headboard' service: cover.stop_cover - id: '1548308863495' نام مستعار: MBR Bedside CP Button 6a trigger: - units_id: sensor.bedside_cp1_button_6 از: 'Off' platform: state to: 'On': cover.master_bed_headboard 'service: cover.close_cover - id:' 1548308911467 'نام مستعار: MBR Bedside CP Button 6b trigger: - units_id: sensor.bedside_cp1_button_6 از:' On 'platform: state to:' Off 'شرط: action: - data: units_id: 'cover.master_bed_headboard' سرویس: cover.stop_cover

توصیه شده: