فهرست مطالب:

حسگر اعلان ماشین لباسشویی: 6 مرحله (همراه با تصاویر)
حسگر اعلان ماشین لباسشویی: 6 مرحله (همراه با تصاویر)

تصویری: حسگر اعلان ماشین لباسشویی: 6 مرحله (همراه با تصاویر)

تصویری: حسگر اعلان ماشین لباسشویی: 6 مرحله (همراه با تصاویر)
تصویری: آیا س*کس از پشت را دوست دارید ؟😱😂😂😱(زیرنویس فارسی) 2024, نوامبر
Anonim
Image
Image
نمونه اولیه
نمونه اولیه

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

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

لیست کامل قطعات:

  • WEMOS LOLIN32
  • تخته نان نصف (برای نمونه سازی)
  • جعبه پروژه ABS با تخته ماتریس 59x88x30mm
  • Sparkfun LIS3DH - بریک آوت شتاب سنج محور سه گانه
  • 1x ZFP3306A P-channel MOSFET ، 160 میلی آمپر ، 60 ولت ، 3 پین خط E
  • 1x ترانزیستور BC549B TO92 30V NPN
  • LED آبی 5 میلی متری 68 مگابایت
  • مقاومت 1x 100k 0.125W CF
  • مقاومت 1x 330k 0.125W CF
  • مقاومت CF 2x 10k 0.250W
  • 1x 100 مقاومت CF 0.250W
  • کابل زنانه 2 پین JST PH-style (14cm)
  • آهنربای دیسک نئودیمیوم 4x M1219-8 6x4 میلی متر

مرحله 1: نمونه اولیه

نمونه اولیه
نمونه اولیه

دستگاه از میکروکنترلر ESP32 استفاده می کند. در این مورد من از تابلوی توسعه Lolin32 توسط Wemos استفاده می کنم که می توانید آن را در AliExpress با قیمت حدود 7 دلار خریداری کنید. شتاب سنج Sparkfun LIS3DH است - مهم است که شتاب سنج دیجیتالی باشد تا آنالوگ ، همانطور که بعداً خواهید دید. باتری را از مجموعه قدیمی بلندگوهای بلوتوث برداشتم.

ESP32 از طریق I2C به شتاب سنج متصل می شود. اولین نسخه کد به سادگی از سه محور شتاب (x ، y و z) برای مقدار اندازه گیری شتاب هر 20 میلی ثانیه نظر سنجی کرد. با قرار دادن نمونه اولیه تخته نان بر روی ماشین لباسشویی و نمودار بالا را تهیه کردم که در مراحل مختلف چرخه شستشو قله های شتاب را نشان می دهد. قله هایی که شتاب مطلق آنها بیش از 125 میلی گرم (125 هزارم ثقل طبیعی) بود با رنگ نارنجی نشان داده شده است. ما می خواهیم این دوره ها را تشخیص داده و از آنها برای تعیین وضعیت ماشین لباسشویی استفاده کنیم.

چگونه می توان روشن یا خاموش بودن دستگاه را تعیین کرد؟

یکی از اهداف ساخت این دستگاه این بود که کاملاً غیرفعال باشد. یعنی هیچ دکمه ای نباید فشار داده شود. فقط کار می کرد همچنین باید قدرت بسیار کمی داشته باشد زیرا در مورد من گسترش کابل های برق به ماشین لباسشویی امکان پذیر نبود.

خوشبختانه شتاب سنج LIS3DH دارای ویژگی است که در صورت فراتر رفتن شتاب از آستانه مشخص ، وقفه ایجاد می کند (توجه داشته باشید ، این مورد نیاز به استفاده از فیلتر شتاب سنج با گذر بالا دارد-برای جزئیات به کد در Github مراجعه کنید) و ESP32 را می توان بیدار کرد از حالت خواب عمیق خود از طریق وقفه خارج شوید. ما می توانیم از این ترکیب ویژگی ها برای ایجاد حالت خواب با قدرت بسیار کم استفاده کنیم که توسط حرکت ایجاد می شود.

کد شبه چیزی شبیه به این خواهد بود:

# دستگاه بیدار شود

notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: if accelerometer.above_threshold (): counter ++ else: counter-- if counter> notification_threshold: # چرخه نهایی چرخش (1 ثانیه) شتاب سنج را تشخیص داد. set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

در اینجا می بینید که ما از شمارنده برای تشخیص چند ثانیه شتاب در دوره بیداری فعلی استفاده می کنیم. اگر شمارنده به صفر برسد ، می توانیم دستگاه را دوباره به خواب ببریم. اگر شمارنده به 240 (آستانه اطلاع رسانی) برسد ، این بدان معناست که ما 4 دقیقه ارتعاش را تشخیص داده ایم. ما می توانیم مقادیر این آستانه ها را تغییر دهیم تا مطمئن شویم دستگاه چرخه نهایی چرخش را به درستی تشخیص داده است. پس از تشخیص ارتعاش کافی ، می توانیم 5 دقیقه دیگر بخوابیم (در مورد من این مدت زمانی است که زمان شستشو کامل می شود) قبل از ارسال اعلان.

مرحله 2: ارسال اعلان از طریق Blynk

ارسال اعلان از طریق Blynk
ارسال اعلان از طریق Blynk

Blynk سرویسی است که امکان تعامل با دستگاه های اینترنت اشیاء را با برنامه ای در تلفن شما فراهم می کند. در این مورد ، من از API اعلان فشار استفاده می کنم که توسط یک HTTP POST ساده به API Blynk فعال می شود.

مرحله 3: اندازه گیری مصرف برق و برآورد عمر باتری

اندازه گیری مصرف برق و برآورد عمر باتری
اندازه گیری مصرف برق و برآورد عمر باتری

تراشه ESP32 به عنوان مصرف برق بسیار کم هنگام خواب عمیق (تا 5uA) تبلیغ می شود. متأسفانه ، مدارهای موجود در بسیاری از تابلوهای توسعه ، ویژگی های مصرف برق بسیار متفاوتی را ارائه می دهند - همه بردهای dev ESP32 یکسان ایجاد نمی شوند. به عنوان مثال ، هنگامی که من برای اولین بار این پروژه را شروع کردم ، از Sparkfun ESP32 Thing استفاده کردم که در حالت خواب عمیق (حتی پس از غیرفعال کردن LED روشنایی) حدود 1 میلی آمپر برق مصرف می کرد. از آن زمان من از Lolin32 (نه نسخه Lite) استفاده می کنم که در آن در حالت خواب عمیق جریان 144.5uA را اندازه گیری کردم. برای انجام این اندازه گیری ، من به سادگی یک مولتی متر را به صورت سری با باتری و دستگاه سیم کشی کردم. این کار مطمئناً هنگام نمونه سازی با یک تخته نان آسان تر است. همچنین میزان استفاده فعلی را هنگام بیدار بودن دستگاه اندازه گیری کردم:

  • خواب عمیق: 144.5uA
  • بیدار: 45 میلی آمپر
  • وای فای فعال است: 150 میلی آمپر

با فرض استفاده از دستگاه دو بار در هفته ، زمانهای زیر را برای مدت زمانی که سنسور در هر حالت سپری می کند برآورد کردم:

  • خواب عمیق: 604090 ثانیه (~ 1 هفته)
  • بیدار شدن: 720 ثانیه (12 دقیقه)
  • وای فای فعال است: 10 ثانیه

با استفاده از این ارقام ، می توانیم مدت زمان دوام باتری را تخمین بزنیم. من از این ماشین حساب دستی برای مصرف متوسط توان 0.2 میلی آمپر استفاده کردم. عمر تخمینی باتری 201 روز یا حدود 6 ماه است! در حقیقت متوجه شده ام که دستگاه پس از حدود 2 ماه از کار می افتد ، بنابراین ممکن است در اندازه گیری ها یا ظرفیت باتری اشتباهاتی رخ دهد.

مرحله 4: اندازه گیری سطح باتری

اندازه گیری سطح باتری
اندازه گیری سطح باتری
اندازه گیری سطح باتری
اندازه گیری سطح باتری

من فکر کردم اگر دستگاه بتواند به من بگوید که شارژ باتری چگونه است به من بگوید تا بدانم چه موقع آن را شارژ کنم ، خوب است. برای اندازه گیری این مقدار ، باید ولتاژ باتری را اندازه گیری کنیم. محدوده ولتاژ باتری 4.3V - 2.2V (حداقل ولتاژ کار ESP32) است. متأسفانه ، محدوده ولتاژ پایه های ADC ESP32 0-3.3V است. این بدان معناست که ما باید ولتاژ باتری را از حداکثر 4.3 به 3.3 کاهش دهیم تا از بار اضافی ADC جلوگیری کنیم. این را می توان با تقسیم ولتاژ انجام داد. به سادگی دو مقاومت را با مقادیر مناسب از باتری تا زمین سیم کشی کرده و ولتاژ وسط را اندازه گیری کنید.

متأسفانه ، یک مدار تقسیم ولتاژ ساده ، حتی زمانی که ولتاژ اندازه گیری نمی شود ، از باتری تخلیه می کند. شما می توانید با استفاده از مقاومتهای با ارزش بالا این امر را کاهش دهید ، اما نکته منفی این است که ADC ممکن است نتواند جریان کافی را برای اندازه گیری دقیق بکشد. من تصمیم گرفتم از مقاومت هایی با مقادیر 100kΩ و 330kΩ استفاده کنم که طبق فرمول تقسیم ولتاژ 4.3V تا 3.3V کاهش می یابد. با توجه به مقاومت کلی 430kΩ ، ما انتظار داریم که جریان فعلی 11.6uA (با استفاده از قانون اهم) جلب شود. با توجه به مصرف فعلی خواب عمیق ما 144uA ، این افزایش قابل ملاحظه ای قابل توجه است.

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

با نصب مدار فوق ، از کد شبه زیر برای بدست آوردن مقدار درصد باتری استفاده می کنم:

درصد باتری():

# فعال کردن مدار ولتاژ باتری تقسیم کننده از مقاومتهای 100k/330k اهم # 4.3V -> 3.223 ، 2.4 -> 1.842 مورد انتظار = max 4.3*330/(100+330) expect_min = 2.4*330/(100+330) battery_level = (adc_voltage -expect_min)/(expect_max -expected_min) battery_level * 100.0

مرحله 5: آن را زیبا تر کنید

آن را زیباتر کنید
آن را زیباتر کنید
آن را زیباتر کنید
آن را زیباتر کنید
آن را زیباتر کنید
آن را زیباتر کنید

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

شاید مشکل ترین قسمت این بود که تمام اجزای مدار ولتاژ باتری را بر روی فضای کوچک کنار Lolin32 نصب کرد. خوشبختانه با کمی تندخویی و اتصالات مناسب ایجاد شده با لحیم ، مدار به خوبی تطبیق می یابد. همچنین ، از آنجا که Wemos Lolin32 دارای پین برای نمایش پایانه مثبت باتری نیست ، مجبور شدم سیم را از اتصال باتری به صفحه پین لحیم کنم.

همچنین یک LED اضافه کردم که وقتی دستگاه حرکت را تشخیص می دهد چشمک می زند.

مرحله ششم: پایان لمس

Image
Image
لمس های نهایی
لمس های نهایی
لمس های نهایی
لمس های نهایی

من 4 آهنربای نئودیمیوم 6 میلی متری 4 میلی متری را به پایه جعبه چسباندم که به آن اجازه می دهد محکم به قسمت بالای فلزی ماشین لباسشویی بچسبد.

جعبه پروژه در حال حاضر دارای یک سوراخ کوچک برای دسترسی کابل ها است. خوشبختانه ، من توانستم برد ESP32 را نزدیک این سوراخ قرار دهم تا به اتصال USB micro دسترسی پیدا کنم. پس از بزرگ کردن سوراخ با چاقوی دستی ، کابل کاملاً مناسب است تا امکان شارژ آسان باتری را فراهم کند.

اگر به هر یک از جزئیات این پروژه علاقه دارید ، لطفاً نظر خود را بنویسید. اگر می خواهید کد را ببینید ، لطفاً آن را در Github بررسی کنید:

github.com/alexspurling/washingmachine

توصیه شده: