جدول المحتويات:

تتابع إنذار الفريزر: 5 خطوات
تتابع إنذار الفريزر: 5 خطوات

فيديو: تتابع إنذار الفريزر: 5 خطوات

فيديو: تتابع إنذار الفريزر: 5 خطوات
فيديو: لو الديب فريزر مبيتلجش هعرفك ازاي تصلحيه بنفسك بدون شحن او صيانه ديب فريزر كريازي 2024, يوليو
Anonim
تتابع إنذار الفريزر
تتابع إنذار الفريزر

يوجد الفريزر الخاص بنا في غرفة مرافق معزولة عن مساحة المعيشة لدينا. من حين لآخر لا يغلق باب المجمد بشكل صحيح وينطلق الإنذار. المشكلة هي أننا لا نستطيع سماعها إذا كنا في مكان معيشتنا. كيف نحصل على رسالة مفادها أن باب الفريزر مفتوح؟ هذه مشكلة شائعة ، لدينا أجهزة في منازلنا تتحدث إلينا ، ولكن ماذا يحدث إذا لم نتمكن من سماعها لأي سبب من الأسباب. لقد بدأت هذا كنوع من المرح ، لكنه قد يكون مفيدًا في تطبيق أكثر جدية.

هناك جزءان من هذه المشكلة ، نحتاج إلى طريقة لاكتشاف انطفاء الإنذار وطريقة لنقل هذه الحقيقة إلى مكان معيشتنا. كان التصميم الذي استقرت عليه هو استخدام 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" أو ما شابه. هذا يستخدم uPNP للتواصل. على جهاز كمبيوتر يعمل بنظام Windows ، حدد ملف mp3 و "Cast to Device". إذا ظهر جهازك وكان بإمكانك تشغيل الملف ، فأنت على ما يرام.

لقد قسمت البرنامج إلى نصي برمجي من نوع python ، checkFreezer.py للتحقق مما إذا كان قد تم تشغيل تنبيه المجمد و liftAlarm.py لإطلاق الإنذار. يمكن تطوير هذه البرامج النصية واختبارها بشكل منفصل ويمكن بسهولة تكييفها أو استبدالها بطرق تنبيه الميكروفونات المختلفة.

اللوازم

  • البرمجيات -https://github.com/wapringle/freezer-alarm
  • Raspberry PI Zero W
  • شاهد ReSpeaker 2-Mics Pi HAT
  • راديو يدعم uPNP

الخطوة 1: تصميم الكاشف

عندما يُترك باب الفريزر مفتوحًا وترتفع درجة الحرارة ، يصدر الفريزر إنذارًا مسموعًا "بيب بيب". تشترك مع معظم أصوات التنبيه الإلكترونية ، هذا هو تردد واحد. الفكرة هي أخذ عينات من مدخلات الصوت ، وإجراء تحويل فورييه السريع (FFT) الذي يحول إشارة قائمة على الوقت إلى إشارة قائمة على التردد ، وبعبارة أخرى ، يكسر الإشارة لعرض الترددات المختلفة في الإشارة. شاهد محلل الطيف Raspberry Pi القابل للتوجيه مع شريط RGB LED يمكننا البحث عن ذروة تردد الجرس وإطلاق الإنذار عندما يكون الجرس نشطًا لبعض الوقت.

هذا الكاشف له متطلبان

  • يجب أن يكتشف الجرس ، حتى في وجود ضوضاء محيطة (إزالة السلبية الزائفة)
  • لا ينبغي أن تحدث بسبب الضوضاء المحيطة (تخلص من الإيجابية الزائفة)

قررت أن تشغيل Hoover في غرفة المرافق سيكون اختبارًا جيدًا. لا ينبغي أن يطلق الإنذار ، ويجب أن ينطلق الإنذار عندما ينطلق جرس المجمد ويعمل Hoover.

الخطوة 2: تكوين الكاشف

تكوين الكاشف
تكوين الكاشف
تكوين الكاشف
تكوين الكاشف
تكوين الكاشف
تكوين الكاشف

باستخدام هاتفي ، أخذت عينات صوتية كملفات WAV لجهاز الجرس المجمد وحده ، مع خلفية صاخبة ، ومع تشغيل Hoover. لقد قمت بتكييف الكود لأداء FFT من المنشور قراءة دفق الصوت لـ FFT (عندما تكون في شك ، انتحال) واستخدمت البرنامج النصي fourierTest.py لرسم عينات أولية ومحولة من الجرس في خلفيات هادئة وصاخبة وصاخبة للغاية. يظهر الارتفاع في المستوى عند التردد 645 في المخطط الأول ولا يزال مهمًا مع خلفية صاخبة جدًا.

الخطوة الثالثة: إنشاء الكاشف

تجميع الكاشف

بسيط جدا. يأتي Pi W مزودًا بشبكة Wifi مدمجة ويتم توصيل HAT مباشرة بدبابيس GPIO على Pi. تكوين البرنامج يتطلب الخطوات

  • قم بتثبيت توزيعة raspbian على Raspberry Pi. هناك الكثير من الأدلة حول هذا التي يمكن أن تشرحها بشكل أفضل بكثير.
  • قم بإعداد Wifi (كما سبق أعلاه)
  • يحتاج إلى تثبيت حزمة alsa

sudo apt-get install libasound-dev

تثبيت برنامج pyalsaaudio

  • قم بتوصيل HAT بـ Raspberry PI
  • اتبع التعليمات الموجودة على موقع الويب الذي تمت رؤيته لتثبيت برامج التشغيل الخاصة بـ HAT.
  • قم بتشغيل التشخيصات التي تمت رؤيتها للتحقق من عمل HAT وتكوينه بشكل صحيح.

يقوم برنامج الكاشف بقراءة كتلة من البيانات كعينة من الميكروفون ، ويقوم بعمل FFT ويقرر ما إذا كان قد اكتشف الجرس في العينة أم لا. حاولت جعل الكتلة أطول فترة ممكنة عن طريق خفض معدل عينة الصوت إلى 16 كيلو هرتز واستخدام أكبر مخزن مؤقت يقبله القارئ. كنت قلقًا من أن حساب FFT قد يتسبب في إسقاط الإطارات ، لكن هذا لم يحدث.

إن وجود عينات مسجلة مسبقًا على هاتفي جعل بناء الكاشف أسهل بكثير حيث يمكنني القيام بالبناء الكامل على المنضدة قبل الاختبار في الموقع بواسطة المجمد.

تدريب الكاشف

تم تدريب الكاشف عن طريق مسح كل عينة عندما تم تشغيل تسجيل WAV للجرس على الكاشف. يقوم البرنامج بإخراج الموضع في طيف FFT بأعلى مستوى طاقة (تردد الذروة) ، جنبًا إلى جنب مع مستوى تردد الذروة هذا. كان من السهل العثور على تردد الجرس ومستوى الطاقة الذي ينبعث منه.

توجد طريقتان لاكتشاف ما إذا كان صوت الصفير قد صدر: -

  1. هل كان تردد الجرس هو ذروة التردد في العينة؟
  2. أم أن مستوى الطاقة عند تردد الجرس أعلى من عتبة؟

نجحت كلتا الطريقتين في عينة هادئة ، لكن الطريقة الثانية كانت أفضل مع عينة صاخبة ، لذلك استخدمت ذلك.

في بعض الأحيان غطت العينة صوتًا ، وأحيانًا كانت بين الصفير ، وبعد كل 3 أصوات طنين ، كان هناك توقف طويل قبل الصفير التالي. لاكتشاف أن مجموعة من الأصوات قد صدرت بشكل موثوق ، كان لكل عينة تصويت مؤيد إذا تم اكتشاف صوت تنبيه وتصويت معارِض إذا لم يكن كذلك. تم ترجيح هذه الأصوات لتعيين العد الذي من شأنه أن يصطدم بعينة صفير ويتلاشى ببطء بين الأوقات. بمجرد وصول العد إلى الحد الأدنى ، يمكن إطلاق الإنذار. إذا تم الكشف عن ضوضاء عشوائية كعينة صفير ، فإن العد سينجرف إلى الصفر.

نحتاج بعد ذلك إلى أوزان التصويت المؤيّد والتصويت السلبي مع العتبة. فعلت هذا مع التجربة والخطأ على عدد من العينات. لم أكن بحاجة إلى تحديد تردد الجرس الفعلي ، لقد بحثت فقط عن التردد المميز في طيف التردد.

الخطوة 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 الذي يعمل على جهاز كمبيوتر يعمل بنظام windows لإلغاء اختيار تسلسل الرسائل عند تشغيل ملف عينة من جهاز الكمبيوتر الخاص بي على الراديو الخاص بي ، وبعد قليل من العبث حصلت على تسلسل أوامر يعمل. هذا هو

  • قم بتشغيل خادم ويب منبثق لخدمة رسالة التحذير عندما يطلب الراديو ذلك
  • اضبط مستوى الصوت على LOUD (يجب أن تجذب رسائل التحذير انتباه الجميع)
  • قم بتمرير uri الخاص برسالة التحذير إلى الراديو
  • استطلع رأي الراديو حتى تكون الحالة الحالية "متوقفة"
  • احصل على الراديو "لتشغيل" uri
  • كرر الخطوتين الأخيرتين حتى تصبح الحالة الحالية "لا توجد وسائط" ، مما يعني أنه تم التعرف على الإنذار عن طريق إيقاف تشغيل الراديو
  • أخيرًا أغلق خادم الويب واخرج.

هذا هو البرنامج النصي liftAlarm.py

الخطوة 5: افعلها بنفسك

تفعل ذلك بنفسك
تفعل ذلك بنفسك

نموذج "الكاشف" و "الإنذار التلقائي" ليس فقط للمجمدات ، بل يمكن أن يكون مفيدًا في أي مكان يحتاج فيه الإنذار الآلي إلى النقل عبر وسيط آخر. إذا كان هذا مثيرًا للاهتمام ، فلا تتردد في المحاولة.

إعداد PI Zero W ، بما في ذلك الميكروفون

  • قم بتجميع الأجهزة كما في الخطوة 3
  • قم بتنزيل البرامج النصية لإنذار المجمد من Instructable ، أو من مستودع git الذي يتضمن بعض المسارات الإضافية

استنساخ git $

تحتاج أيضًا إلى تثبيت البرنامج لاستخدام مصابيح 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 - الحد الأدنى = 500

تردد الذروة الجاهز 645 تم تشغيل مستوى الزناد 581؟ تردد الذروة الحقيقي 645 أثار مستوى الزناد 798؟ تردد الذروة الحقيقي 645 المشغل بمستوى الزناد 521؟ حقيقي

اختبر ذلك مقابل بضع عينات صاخبة ويجب أن تكون قادرًا على تحديد قيمة حدية تميز بين صوت الصفير والضوضاء المحيطة. يجب أن ترى أيضًا مؤشر LED يتحول إلى اللون الأحمر عند تشغيل تسجيل الصفير لبضع ثوان. إذا كان الأمر سريعًا / بطيئًا في القدوم ، فقم بتحرير الإعدادات في البرنامج النصي

الاتصال بالراديو

لتكوين البرامج النصية للإعداد الخاص بك ، تحتاج إلى العثور على عنوان IP ورقم المنفذ الذي يستخدمه جهازك لخدمات UPnP. يجب أن يوفر إعداد الراديو هذه. رقم المنفذ الافتراضي هو 8080 وسيكون مفاجأة إذا كان مختلفًا.

لقد قدمت رسالة تنبيه افتراضية ، freezer.mp3. لا تتردد في استبدال رسالتك الخاصة.

قم بتحرير البرنامج النصي باستخدام عناوين IP المناسبة وقم بتشغيل البرنامج النصي.

بيثون $ liftAlarm.py

إذا كان كل شيء على ما يرام ، فسوف تنطلق رسالة التنبيه بصوت عالٍ ومزعج من الراديو حتى يتم إيقاف تشغيل الراديو ، مما يؤدي إلى إلغاء التنبيه.

أثناء تشغيل البرنامج النصي ، يتم تشغيل خادم ويب صغير لخدمة التنبيه بتنسيق mp3 للراديو ، وربما تكون مشكلة أمنية ، ولكنها نشطة فقط أثناء تشغيل رسالة التنبيه.

البث المباشر

قم بإزالة علامة التدريب "-t" ، وقم بتشغيل checkFreezer بقيمك الخاصة ، على سبيل المثال

$ python checkFreezer.py - Trigger = 645 - الحد الأدنى = 200

لجعله يبدأ عند إعادة التشغيل ، أضف إلى /etc/rc.local ،

cd / home / pi / freezer-alarm

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

سيضيء مؤشر LED الأخضر وأنت جاهز للعمل. قم بتشغيل تسجيل صوت التنبيه الخاص بك وبعد بضع ثوانٍ سيتحول مؤشر LED إلى اللون الأحمر وسيتم تشغيل رسالة التنبيه على الراديو الخاص بك.

أخيرا

ضع PI في مكان قريب من المجمد ، بعيدًا عن الطريق وبواسطة مصدر طاقة. شغّل الطاقة وسيضيء المصباح الأخضر. اختبر إطلاق الإنذار عن طريق ترك الباب مفتوحًا. يجب أن يتحول الضوء إلى اللون الأحمر ويتم تشغيل رسالة التنبيه على الراديو.

النجاح !! لقد فعلتها. دلل نفسك بتناول مشروب طويل مع الثلج من الفريزر ، لكن لا تنسى إغلاق باب الفريزر!

موصى به: