فهرست مطالب:

رله دزدگیر فریزر: 5 مرحله
رله دزدگیر فریزر: 5 مرحله

تصویری: رله دزدگیر فریزر: 5 مرحله

تصویری: رله دزدگیر فریزر: 5 مرحله
تصویری: تنظیمات سنسور بیسیم و رله دزدگیر سایلکس SG8 2024, جولای
Anonim
رله دزدگیر فریزر
رله دزدگیر فریزر

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

این مشکل 2 بخش دارد ، ما به روشی برای تشخیص خاموش شدن زنگ هشدار و روشی برای انتقال این واقعیت به فضای زندگی نیاز داریم. طرحی که من برای آن تصمیم گرفتم این بود که از Raspberry Pi برای گوش دادن به زنگ هشدار فریزر استفاده کنم و سپس یک پیام زنگ هشدار قابل شنیدن به رادیوی داخلی خود ارسال کنم که uPNP فعال است. Universal Plug and Play (UpnP) استانداردی است برای کشف و تعامل با خدمات ارائه شده توسط دستگاه های مختلف در شبکه ، از جمله سرورهای رسانه ای و پخش کننده ها ، اگرچه من فکر نمی کنم که فریزرها هنگام توسعه استاندارد پیش بینی شده باشند. پیام هشدار با صدای بلند و تحریک کننده ساخته شد و تا خاموش شدن رادیو بی وقفه تکرار می شود.

من انتخاب کردم که زنگ هشدار را با Raspberry Pi Zero W و Seeed ReSpeaker 2-Mics Pi HAT تشخیص دهم Raspberry PI Zero یک نسخه ارزان قیمت از Raspberry Pi است و گزینه W دارای WiFi داخلی است ، در حالی که Seeed Pi HAT برای کمتر از 10 دلار ، دارای LED های داخلی و دکمه کاربر است. Pi HAT کارتهای افزونه ای هستند که مستقیماً به Raspberry Pi متصل می شوند و یک روش مونتاژ بسیار ساده را ایجاد می کنند. هر گونه نسخه Pi بیش از حد برای کار مناسب است و میکروفون انتخاب شده را می توان جایگزین کرد ، اگرچه من از LED های داخلی در این ساخت استفاده کردم.

به راحتی می توان بررسی کرد که آیا رادیو یا تلویزیون برای شما کار می کند یا خیر. به احتمال زیاد "DLNA enabled" یا مشابه آن توصیف می شود. این از uPNP برای برقراری ارتباط استفاده می کند. در رایانه Windows ، یک فایل mp3 و "Cast to Device" را انتخاب کنید. اگر دستگاه شما ظاهر می شود و می توانید فایل را پخش کنید ، پس خوب است.

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

تدارکات

  • نرم افزار -https://github.com/wapringle/freezer-alarm
  • Raspberry PI Zero W
  • ReSpeaker 2-Mics Pi HAT را مشاهده کرد
  • رادیو را با uPNP فعال کنید

مرحله 1: طراحی آشکارساز

هنگامی که درب فریزر باز می ماند و دما افزایش می یابد ، فریزر هشدار "بوق بوق" قابل شنیدن را می دهد. به طور معمول با اکثر بوق های الکترونیکی ، این فرکانس تک است. ایده این است که از ورودی صدا نمونه برداری کنید ، یک Fast Fourier Transform (FFT) انجام دهید که یک سیگنال مبتنی بر زمان را به یک فرکانس تبدیل می کند ، به عبارت دیگر یک سیگنال را برای نمایش فرکانس های مختلف در سیگنال تجزیه می کند. مشاهده طیف قابل تجزیه و تحلیل تمشک پای با نوار LED RGB ما می توانیم به دنبال اوج فرکانس زنگ باشیم و هنگامی که زنگ برای مدتی فعال شده است ، زنگ هشدار را فعال کنیم.

این آشکارساز دارای 2 الزام است

  • باید زنگ را تشخیص دهد ، حتی در صورت وجود نویز محیط (حذف منفی کاذب)
  • نباید با سر و صدای محیط ایجاد شود (حذف مثبت کاذب)

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

مرحله 2: پیکربندی آشکارساز

پیکربندی آشکارساز
پیکربندی آشکارساز
پیکربندی آشکارساز
پیکربندی آشکارساز
پیکربندی آشکارساز
پیکربندی آشکارساز

با تلفن خود ، نمونه های صوتی را به عنوان فایلهای WAV از زنگ فریزر به تنهایی ، با پس زمینه پر سر و صدا و در حال کار هوور برداشتم. من کد را برای اجرای FFT از پست Reading Audio Stream برای FFT (در صورت شک ، plagarise) اقتباس کردم و از اسکریپت fourierTest.py برای ترسیم نمونه های خام و Fourier Transformed از زنگ در زمینه های آرام ، پر سر و صدا و بسیار پر سر و صدا استفاده کردم. افزایش سطح در فرکانس 645 در اولین نمودار تلفظ می شود و هنوز هم با یک پس زمینه بسیار پر سر و صدا قابل توجه است.

مرحله 3: ساخت آشکارساز

مونتاژ آشکارساز

بسیار ساده. Pi W مجهز به Wifi داخلی است و HAT به طور مستقیم به پین های GPIO در Pi متصل می شود. پیکربندی نرم افزار نیاز به مراحل دارد

  • توزیع raspbian را روی Raspberry Pi نصب کنید. تعداد زیادی راهنما در این مورد وجود دارد که می تواند آن را بهتر از من توضیح دهد.
  • راه اندازی Wifi (همینطور در بالا)
  • نیاز به نصب بسته alsa دارد

$ sudo apt-get install libasound-dev

$ pip pyalsaaudio را نصب کنید

  • HAT را به PI تمشک وصل کنید
  • برای نصب درایورهای HAT ، دستورالعمل های موجود در وب سایت مشاهده شده را دنبال کنید.
  • برای بررسی عملکرد HAT و پیکربندی صحیح ، تشخیص های مشاهده شده را اجرا کنید.

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

داشتن نمونه های از پیش ضبط شده بر روی تلفن من ساخت آشکارساز را بسیار ساده تر کرد ، زیرا من می توانم قبل از آزمایش در محل فریزر ، روی نیمکت کامل کار کنم.

آموزش آشکارساز

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

دو روش برای تشخیص وجود بوق وجود دارد:-

  1. آیا فرکانس وزوز فرکانس اوج در نمونه بود؟
  2. یا سطح قدرت در فرکانس زنگ بیش از یک آستانه بود؟

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

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

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

مرحله 4: ارسال پیام به رادیو

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

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ این یک نمای کلی از چگونگی تطابق همه چیز با هم دارد
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

من از Wireshark که روی رایانه شخصی ویندوز اجرا می شود برای برداشتن دنباله پیام هنگام باز کردن نمونه فایل از رایانه خود در رادیو استفاده کردم ، و پس از کمی مکث به دنباله فرمان دست یافتم. این هست

  • هنگامی که رادیو از شما درخواست می کند ، یک وب سرور بازشو برای ارائه پیام هشدار راه اندازی کنید
  • سطح صدا را روی LOUD تنظیم کنید (پیام هشدار دهنده باید توجه همه را به خود جلب کند)
  • uri پیام هشدار را به رادیو منتقل کنید
  • نظرسنجی از رادیو تا حالت فعلی "STOPPED"
  • رادیو را به "PLAY" uri برسانید
  • 2 مرحله آخر را تکرار کنید تا وضعیت فعلی "NO MEDIA PRESENT" است ، به این معنی که با خاموش کردن رادیو زنگ خطر تشخیص داده شده است
  • سرانجام وب سرور را ببندید و خارج شوید.

این اسکریپت raiseAlarm.py است

مرحله 5: خودتان این کار را انجام دهید

انجام این کار توسط خودتان
انجام این کار توسط خودتان

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

راه اندازی PI Zero W ، از جمله میکروفون

  • سخت افزار را مانند مرحله 3 مونتاژ کنید
  • اسکریپت های فریزر زنگ را از این دستورالعمل یا از مخزن git که شامل چند آهنگ جایزه است بارگیری کنید

$ git clone

شما همچنین باید نرم افزار را برای استفاده از LED های APA102 روی صفحه نصب کنید. من یک کپی از apa102.py را در فهرست کار git قرار داده ام

آشکارساز خود را آموزش دهید

من یک گزینه آموزشی به اسکریپت checkFreezer.py اضافه کرده ام. این دستگاه به تنهایی اجرا می شود و عیب یابی را در خط فرمان چاپ می کند ، اما ابتدا باید چند نمونه از زنگ هشدار را در محیطی آرام به صورت فایل های WAV ضبط کنید و همین کار را در یک محیط پر سر و صدا انجام دهید. برای تکمیل آموزش ، ابتدا باید فرکانس FFT را با بالاترین سطح ("فرکانس اوج") و سپس یک سطح آستانه برای آن فرکانس برای تعیین ماشه پیدا کنید. برای این کار ، checkFreezer اسکریپت را در حالت آموزش ، با گزینه ‘-t’ اجرا کرده و ضبط زنگ را پخش کنید.

$ python checkFreezer.py -t

این اسکریپت را در حالت آموزش اجرا می کند. هنگامی که HAT اره شده اولیه می شود و LED سبز می شود ، "آماده" چاپ می شود ، سپس یک خط برای هر نویز بی اهمیتی که می شنود ، به عنوان مثال

$ python checkFreezer.py -t

آیا اوج فرکانس 55 ماشه سطح 1 آغاز شده است؟ فرکانس پیک کاذب 645 سطح ماشه 484 فعال شده است؟ فرکانس پیک کاذب 645 سطح ماشه 380 فعال شد؟ کاذب

حداکثر فرکانس ، در این مورد 645 است و این فرکانس ماشه می شود. حالا برای به دست آوردن سطح ماشه ، checkFreezer را مجدداً اجرا کرده و ماشه را تنظیم کنید

$ python checkFreezer.py -t --trigger = 645

اوج فرکانس 645 سطح ماشه 1273 آماده است؟ فرکانس پیک کاذب 645 سطح ماشه 653 فعال شد؟ فرکانس پیک کاذب 645 سطح ماشه 641 فعال شد؟ فرکانس پیک کاذب 645 سطح ماشه 616 فعال شد؟ کاذب

سرانجام ما به یک آستانه ماشه نیاز داریم که با تشخیص یک بوق روشن می شود ، اما به عنوان مثال نویز را نادیده می گیرد

$ python checkFreezer.py -t --trigger = 645 --threshold = 500

اوج فرکانس 645 سطح ماشه 581 فعال است؟ فرکانس پیک واقعی 645 سطح ماشه 798 فعال شد؟ فرکانس اوج واقعی 645 سطح ماشه 521 فعال شده است؟ درست است، واقعی

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

اتصال به رادیو

برای پیکربندی اسکریپت ها برای تنظیمات خود ، باید آدرس IP و شماره پورت دستگاه خود را برای خدمات UPnP پیدا کنید. تنظیمات رادیویی باید این موارد را ارائه دهد. شماره پورت پیش فرض 8080 است و اگر متفاوت باشد شگفت انگیز خواهد بود.

من یک پیام هشدار پیش فرض ، freezer.mp3 ارائه کرده ام. با خیال راحت پیام خود را جایگزین کنید.

اسکریپت را با آدرس های IP مناسب ویرایش کرده و اسکریپت را اجرا کنید.

$ python raiseAlarm.py

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

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

در حال پخش زنده

پرچم آموزشی '-t' را بردارید و checkFreezer را با مقادیر خود اجرا کنید ، به عنوان مثال

$ python checkFreezer.py --trigger = 645 --threshold = 200

برای شروع راه اندازی مجدد ، به /etc/rc.local اضافه کنید ،

cd/home/pi/freezer-alarm

(python checkFreezer.py --trigger = 645 --threshold = 200> /tmp /freezer 2> /tmp /freezererror &) و خروج 0

چراغ سبز روشن می شود و شما آماده عمل هستید. ضبط صدای بوق زنگ خود را پخش کنید و پس از چند ثانیه LED قرمز می شود و پیام زنگ در رادیوی شما پخش می شود.

سرانجام

PI را در مکانی نزدیک فریزر ، خارج از راه و منبع تغذیه قرار دهید. روشن و LED سبز باید روشن شود. با باز گذاشتن درب ، راه اندازی زنگ را آزمایش کنید. چراغ باید قرمز شود و پیام زنگ در رادیو پخش شود.

موفقیت !! شما آن را انجام داده اید خودتان را با یک نوشیدنی طولانی همراه با یخ از فریزر میل کنید ، اما فراموش نکنید که در فریزر را ببندید!

توصیه شده: