فهرست مطالب:

سنسور درب باتری با یکپارچه سازی اتوماسیون خانگی ، WiFi و ESP-NOW: 5 مرحله (همراه با تصاویر)
سنسور درب باتری با یکپارچه سازی اتوماسیون خانگی ، WiFi و ESP-NOW: 5 مرحله (همراه با تصاویر)

تصویری: سنسور درب باتری با یکپارچه سازی اتوماسیون خانگی ، WiFi و ESP-NOW: 5 مرحله (همراه با تصاویر)

تصویری: سنسور درب باتری با یکپارچه سازی اتوماسیون خانگی ، WiFi و ESP-NOW: 5 مرحله (همراه با تصاویر)
تصویری: Polestar 3: Luxury Meets Power در اولین SUV برند الکتریکی // 2024 جدید 2024, جولای
Anonim
Image
Image

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

اهداف من:

  • سنسور تشخیص و گزارش باز شدن سریع درب (<5 ثانیه)
  • سنسوری که بسته شدن درب را تشخیص می دهد
  • سنسوری که با باتری کار می کند و چند ماه با باتری کار می کند

سخت افزار و نرم افزار از الهام گرفته شده است

  • تخته سه بعدی کوین دارا (TPL5111 و TPS73733).
  • این ویدیو

من یک سنسور برای جلوی من و پشتی خود ایجاد کردم. تنها تفاوت موقعیت LED و سوئیچ قدرت خارجی (در سنسور در پشتی) است.

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

تدارکات

من قطعات الکترونیکی را از Aliexpress خریدم ، قطعات اصلی:

  • باتری LiPo
  • TPS73733 LDO
  • TPL5111
  • سوئیچ نی
  • mosfet کانال P: IRLML6401TRPBF
  • آهن ربا
  • صفحه آداپتور PCB برای اجزای SMD و دیگری.

مرحله 1: سخت افزار - مدار

سخت افزار - مدار
سخت افزار - مدار
سخت افزار - مدار
سخت افزار - مدار
سخت افزار - مدار
سخت افزار - مدار

طرحهای پیوست شده برای مدار را مشاهده کنید. قطعات SMD را روی صفحه آداپتور PCB لحیم کردم و همه اجزا را به یک تخته دو طرفه لحیم کاری کردم. ESP-01 را از طریق هدرهای زن متصل کردم ، بنابراین می توانم آن را برای برنامه ریزی از طریق آداپتور نشان داده شده در مرحله 3 این دستورالعمل حذف کنم.

مدار به شرح زیر عمل می کند:

  • هنگامی که در باز می شود ، TPL5111 یک عکس در پین DELAY/M_DRV دریافت می کند و TPS73733 LDO را فعال می کند که ESP-01 را تغذیه می کند. برای این عملیات ، EN/ONE_SHOT باید پایین کشیده شود ، به برگه داده TPL5111 مراجعه کنید.
  • پس از اجرای برنامه (به مرحله نرم افزار مراجعه کنید) ، ESP-01 یک سیگنال Done به TPL5111 ارسال می کند که TPS73733 را غیرفعال می کند و در نتیجه قدرت بسیار کمی برای TPL5111 و TPS73733 ایجاد می کند.

من از کلیدهای نی با هر دو اتصال NO و NC استفاده می کنم. من سیم برق NC را وصل کردم ، زیرا سوئیچ نی هنگام خروج آهنربا (باز شدن درب) باید مدار را ببندد و هنگامی که آهن ربا نزدیک است (درب بسته است) باز شود.

در مورد سنسور پشت درب ، برخی از متراکم کننده ها و مقاومت ها را هنگام کشف برخی از ناپایداری ها اضافه کردم ، اما ناپایداری ناشی از نرم افزار (esp_now_init) است که بعداً کشف کردم.

مرحله 2: سخت افزار - محوطه سازی

سخت افزار - محوطه سازی
سخت افزار - محوطه سازی
سخت افزار - محوطه سازی
سخت افزار - محوطه سازی
سخت افزار - محوطه سازی
سخت افزار - محوطه سازی

من محوطه را در Autodesk Fusion360 طراحی کردم ، با الهام از این ویدیو توسط "پسر با لهجه سوئیسی".

فایل های STL سه قسمت:

  • جعبه
  • درپوش
  • دارنده آهن ربا

در صفحه Thingiverse من منتشر می شوند.

مرحله 3: نرم افزار

نرم افزار
نرم افزار

برنامه در Github من است.

جریان برنامه در تصویر نشان داده شده است. برای توضیح نحوه استفاده از ESP-NOW به دستورالعمل دیگر من مراجعه کنید.

هنگامی که ماژول روشن است ، ابتدا سعی می کند پیام "باز" را از طریق ESP-NOW ارسال کند. در صورت عدم موفقیت ، به اتصال WiFi و MQTT تغییر می کند.

من متوجه شدم که حداقل در تنظیمات من ، پیام "بسته" با موفقیت از طریق ESP-NOW ارسال نشد ، بنابراین این را از برنامه حذف کردم و فقط از WiFi و MQTT استفاده کردم.

در مدتی که درب باز می شود و ماژول منتظر بسته شدن درب است ، از این زمان برای اتصال به WiFi و MQTT استفاده می کند ، بنابراین وقتی در بسته می شود ، فقط باید ولتاژ اندازه گیری شده و یک پیام بسته را ارسال کند و سپس مستقیماً به خواب می رود

این برنامه بررسی می کند که آیا پیام بسته توسط گیرنده از طریق گوش دادن به پیام MQTT در موضوع مناسب دریافت می شود یا خیر.

مرحله 4: اتوماسیون خانگی و تلگرام

اتوماسیون خانگی و تلگرام
اتوماسیون خانگی و تلگرام
اتوماسیون خانگی و تلگرام
اتوماسیون خانگی و تلگرام
اتوماسیون خانگی و تلگرام
اتوماسیون خانگی و تلگرام

حسگرهای درب من با Raspberry Pi Zero من با Openhab Home Automation ارتباط برقرار می کنند.

برنامه های اصلی:

  • وضعیت در را بخوانید: باز یا بسته.
  • درصورت باز شدن درب (در صورت روشن بودن زنگ هشدار یا روشن شدن عملکرد مانیتور) از طریق تلگرام به من زنگ بزنید.
  • آخرین باری را که درب باز یا بسته شد بخوانید.
  • تعداد بازشوهایی که سنسور درب می تواند قبل از اتمام باتری انجام دهد را بشمارید.

به عنوان مثال ، اگر ما در تعطیلات هستیم و همسایه برای آبیاری گیاهان وارد خانه می شود ، پیامی به من می رسد. ویدیو را در مقدمه مشاهده کنید.

موارد Openhab ، قوانین و فایل های نقشه سایت من در Github من هستند. در این فایلها همچنین می توانید سنسور درب من سوله را مشاهده کنید ، که از یک سوئیچ معمولی سیم دار و یک سوئیچ کوچک (انتهایی) از چاپگر سه بعدی در دهانه قفل استفاده می کند (تصاویر را ببینید).

نحوه استفاده از عمل تلگرام در Openhab در اینجا توضیح داده شده است.

مرحله 5: بهبودها و پیشرفتهای بیشتر

بهبودها و پیشرفتهای بیشتر
بهبودها و پیشرفتهای بیشتر
بهبودها و پیشرفتهای بیشتر
بهبودها و پیشرفتهای بیشتر

در ماه های گذشته پیشرفت زیر را انجام دادم.

از طریق سیگنال پالس خود سوئیچینگ ، دهانه های طولانی درها را کنترل کنید

در تابستان ، هنگامی که در خانه هستیم ، درب پشت را برای چند ساعت باز می گذاریم. اجرای ESP-01 با اتصال WiFi باعث می شود که باتری بدون نیاز خالی شود. بنابراین من یک سوئیچ روشن/خاموش قرار دادم تا بتوانم در این شرایط ماژول را خاموش کنم.

با این حال ، گاهی اوقات منجر به خاموش شدن دائمی ماژول (هنگامی که فراموش کردم آن را روشن کنم) و باتری خالی بعد از چند بعدازظهر از در باز شده و یک ماژول در حال کار (هنگامی که فراموش کردم آن را خاموش کنم) می شود.

بنابراین می خواستم بتوانم ماژول را از طریق نرم افزار پس از روشن شدن ماژول برای مدت زمان از پیش تعیین شده (1 دقیقه) خاموش کنم.

با این حال ، در جایی که نبض "انجام شد" ESP-01 TPL5111 را هنگامی که در بسته بود خاموش کرد ، متوجه شدم که TPL5111 توسط پالس "انجام نشده" روشن نشده است در حالی که پین DELAY/M_DRV بالا بود. این سیگنال HIGH در پین DELAY/M_DRV ناشی از باز شدن درب و تماس NC سوئیچ نی به ولتاژ باتری متصل شده است.

بنابراین ، سیگنال به پین DELAY/M_DRV نباید به طور مداوم بالا باشد ، بلکه باید پالس شود. در برگه داده TPL5111 می توانید دریابید که نبض آن باید بیش از 20 میلی ثانیه باشد. من این سیگنال خود سوئیچینگ را از طریق mosfet کانال P ، یک خازن و یک مقاومت 10K و 300K ایجاد کردم ، طرح موجود را ببینید.

به شرح زیر عمل می کند:

  • اگر تماس NC سوئیچ نی بسته باشد ، Gate LOW است و Mosfet روشن است و در نتیجه یک سیگنال HIGH در پین DELAY/M_DRV ایجاد می شود که ماژول را فعال می کند.
  • خازن به سرعت شارژ می شود و در نتیجه ولتاژ روی دروازه افزایش می یابد.
  • پس از تقریباً 20 میلی ثانیه ، ولتاژ روی گیت 97 of ولتاژ باتری (300K/(300K+10K) است که زیاد است و Mosfet خاموش می شود و در نتیجه یک سیگنال LOW در پین DELAY/M_DRV ایجاد می شود.
  • هنگامی که پین DELAY/M_DRV LOW باشد ، سیگنال انجام شده ESP-01 منجر به خاموش شدن ماژول می شود.

این در نرم افزار پیاده سازی شده است. یک حلقه while نه تنها بررسی می کند که در هنوز باز است یا خیر ، بلکه بررسی می کند که آیا ماژول بیش از حد روشن نشده است. اگر بیش از حد روشن شود مقدار NULL (وضعیت نامعین در) منتشر می شود. در این مورد من نمی دانم که در باز است یا بسته و به تمام اهداف ذکر شده در مقدمه نمی رسم ، اما عمر باتری مهمتر است و اغلب اوقات در همان روز دوباره در را باز می کنیم و در نتیجه حالت بسته شده تأیید می شود. از در

استفاده از Mosfet کانال P مناسب برای محدوده ولتاژ مورد استفاده در اینجا مهم است. Mosfet باید کاملاً در VGS حدود 3.8 ولت و کاملاً خاموش در VGS حدود -0.2 ولت باشد. من چندین Mosfets را امتحان کردم و متوجه شدم که یک IRLML6401TRPBF در ترکیب با مقاومتهای 10K و 300K برای این هدف مناسب است. به خازن 1 uF خوب کار می کند و طول نبض را در حدود 20 میلی ثانیه می گیرد. از آنجا که TPL5111 فعال شده است ، خازن بزرگتر منجر به پالس طولانی تر می شود ، که لازم نیست. من از اسیلوسکوپ DSO150 خود برای بررسی ولتاژها و طول نبض استفاده کردم.

بهبود برنامه ریزی شده: به روز رسانی OTA

من قصد دارم یک به روز رسانی OTA را از طریق روش زیر که قبلاً تا حدی در نرم افزار فعلی گنجانده شده است ، وارد کنم

  • از طریق Openhab از NodeRed من یک پیام "به روز رسانی" حفظ شده را "موضوع به روز رسانی" منتشر می کنم.
  • اگر ماژول روشن و به سرور MQTT متصل شده و در "موضوع به روز رسانی" مشترک شده باشد ، پیام به روز رسانی را دریافت می کند.
  • پیام بروزرسانی مانع خاموش شدن ماژول و راه اندازی HTTPUpdateServer می شود.
  • از طریق وب سایت HTTPUpdateServer ، می توانید نرم افزار را به روز کنید.
  • از طریق Openhab از NodeRed من یک پیام "خالی" حفظ شده را به عنوان "موضوع به روز رسانی" منتشر می کنم.

بهبود برنامه ریزی شده: خاموش شدن سخت افزار پس از زمان از پیش تعیین شده

در طرح فعلی ، من از یک مقاومت 200K بین DELAY/M_DRV و GND TPL5111 استفاده می کنم. این ماژول را بیش از 2 ساعت روشن می کند (به 7.5.3. برگه داده TPL5111 مراجعه کنید). با این حال ، من نمی خواهم ماژول تا این مدت روشن باشد ، زیرا باتری خالی می شود. اگر راه حل نرم افزاری (به بالا مراجعه کنید) ماژول را خاموش کند یا پیام به روزرسانی ناخواسته ماژول را در حالت به روز رسانی تنظیم کند ، ماژول برای مدت طولانی روشن می ماند.

بنابراین بهتر است از یک مقاومت کوچکتر بین DELAY/M_DRV و GND TPL5111 استفاده کنید ، بنابراین ماژول پس از مدت کوتاهی خاموش می شود ، به عنوان مثال یک مقاومت 50K که در زمان 7 دقیقه به کار می افتد.

توصیه شده: