الإعلانات

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

إليك ما ستحتاج إليه

ربما يكون الجزء الوحيد الذي ليس لديك بالفعل هو مستشعر الحركة ، وهو جزء صغير وغير مكلف يجب أن تتمكن من العثور عليه في Microcenter المحلي أو Maplin.

  • Raspberry Pi (أي نموذج سيفعل).
  • مستشعر الحركة (~ $ 3).
  • أسلاك التوصيل.
  • مكبر صوت سلكي (سيكون لدى معظم مكبرات صوت Bluetooth خيار استخدام الخط).
  • كابل استريو مقاس 3.5 ملم ، ذكر لذكر.

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

اعداد

نحن نستخدم Raspbian Jessie Lite و Python 2.7 ، ولكن أي توزيعة Linux تعمل على Pi يجب أن تكون جيدة. لقد تركتها على اسم المضيف القياسي "raspberrypi.local" ، لذا ابدأ بتسجيل الدخول عن بُعد باستخدام SSH (افتح نافذة طرفية إذا كنت تستخدم نظام التشغيل Mac. هنا

instagram viewer
كيفية القيام بنفس الشيء في Windows 4 طرق سهلة لاستخدام SSH في WindowsSSH هو الحل الفعلي للوصول بأمان إلى المطاريف البعيدة على Linux وأنظمة أخرى شبيهة بـ UNIX. إذا كان لديك خادم SSH بعيد تريد الوصول إليه ، فسيتعين عليك تنزيل عميل SSH ... اقرأ أكثر ) - أو إذا اخترت استخدام Raspbian كامل مع واجهة المستخدم الرسومية لسطح المكتب ، فلا تتردد في التخطي إلى التحديث.

ssh [email protected]. (أدخل التوت مثل كلمة المرور) sudo apt-get update. sudo apt-get تثبيت بيثون بيب. sudo pip تثبيت gpiozero. 

يقوم هذا بتثبيت مكتبة بسيطة للعمل مع دبابيس GPIO في Python مع العديد من أنواع أجهزة الاستشعار والأزرار المدمجة. قم بتوصيل المستشعر الخاص بك باستخدام دبوس الإشارة على GPIO4 ، و VCC متصل بـ 5V ، و GND متصل بـ GND. قد يختلف هذا وفقًا لنموذجك بالضبط ، لذا تأكد من خلال رسم تخطيطي دقيق.

مخطط التوت بي GPIO
حقوق الصورة: raspberrypi.org

من المفيد ، أن حالتي Pi 2 من Pimoroni تحتوي على رسم تخطيطي دقيق محفور بالليزر مباشرة عليه.

حالة التوت بي المسمى

الآن دعنا نصنع كشف الحركة.

nano motion.py. 

لصق في:

من gpiozero استيراد MotionSensor pir = MotionSensor (4) بينما True: if pir.motion_detected: print ("Motion كشف!") آخر: print ("No motion")

اضغط CTRL-X ثم Y للحفظ والخروج ، ثم قم بتشغيل:

python motion.py. 

يجب أن تشاهد رسالة "عدم الحركة" مكررة على الشاشة حتى تلوح بيدك أمام المستشعر ، عندما ستبقى على "Motion Detected!"

تم الكشف عن الحركة في المحطة

إذا لم تتغير الرسالة على الإطلاق ، فقد أخطأت في توصيلها.

إذا كنت مهتمًا بمعرفة المزيد حول مكتبة GPIOZero البسيطة ، فألق نظرة عليها ورقة الغش الرائعة هذه.

تشغيل الصوت

قم بتوصيل مكبر الصوت المحمول وتأكد من تشغيله إذا لزم الأمر. سنستخدم Pygame مكتبة لتشغيل الأصوات ، لذا امض قدمًا وثبتها:

sudo apt-get install python-pygame. 

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

إذا كنت تتصل عن بعد وتستخدم سطر الأوامر فقط ، فإننا نواجه صعوبة أكبر في بعض المواقع ، منذ wget قد لا يمسك الأمر الملف الفعلي. بدلاً من ذلك ، يمكننا تنزيله محليًا على سطح المكتب واستخدام scp (نسخة آمنة) للنسخ عبر سطر الأوامر. يمكنك معرفة المزيد حول scp هنا ، ولكن الآن ، افتح علامة تبويب Terminal جديدة واكتب:

scp thunder.ogg [email protected]: 

أعد تسمية thunder.ogg حسب الاقتضاء ، ولكن لا تنسى ذلك النهائي : (سيكتمل الأمر بدونه ، لكنه لن يفعل ما نريده أن يفعله). بشكل افتراضي ، سيؤدي هذا إلى نقل الملف إلى دليل الصفحة الرئيسية لمستخدم Pi.

الآن دعنا نقوم بتعديل البرنامج النصي لتشغيل الصوت. ابدأ باستيراد بعض الوحدات الجديدة:

استيراد pygame.mixer. من pygame.mixer استيراد الصوت. 

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

pygame.init () pygame.mixer.init () # تحميل ملف صوتي ، في الدليل الرئيسي لمستخدم Pi (بدون ملفات mp3) الرعد = pygame.mixer. صوت ("/ home / pi / thunder.ogg") بينما True: thunder.play () sleep (10) thunder.stop ()

لاحظ أنه عندما جربت هذه العملية في الأصل ، رفض الصوت اللعب ونقر فقط بدلاً من ذلك. كان حجم الملف أو معدل البت هو الجاني: كان 24 بت وأكثر من 5 ميغابايت لمقطع 15 ثانية. إن تغيير ذلك إلى 16 بت باستخدام المحول الذي ربطته بالأعلى جعل كل شيء يعمل بشكل جيد ، وتم تقليل الحجم إلى 260 كيلوبايت فقط!

إذا لاحظت هسهسة سيئة من مكبرات الصوت أثناء تشغيل تطبيق Python ، ولكن ليس خلاف ذلك ، اكتب:

sudo nano /boot/config.txt. 

ونضيف هذا السطر في النهاية:

disable_audio_dither = 1. 

أعد تشغيل التغييرات لتصبح سارية المفعول. أو لا تهتم ، لأن الأمر بدا لي كالمطر على أي حال.

أخيرًا ، دعنا نعدل حلقة فحص الحركة الرئيسية لتشغيل الصوت عند اكتشاف الحركة. سنستخدم تأخيرًا مدته 15 ثانية حتى يمكن تشغيل الحلقة بالكامل ، والعمل كمخزن مؤقت للرسائل غير المرغوب فيها عندما يكون هناك الكثير من الحركة بدون توقف.

بينما True: if pir.motion_detected: print ("Motion Detection!") thunder.play () # تضمن أن التشغيل قد تم الانتهاء قبل استئناف الكشف عن الحركة ، يمنع "سبام" من النوم الصوتي (15) thunder.stop () آخر: طباعة ("لا اقتراح")

ابدأ تلقائيًا

ربما نرغب في إعداد هذا في مكان ما مع بطارية وبدون اتصال بالإنترنت ، لذلك يحتاج البرنامج النصي إلى التشغيل عند إعادة التشغيل دون الحاجة إلى فتح سطر أوامر. للقيام بذلك ، سنستخدم أبسط طريقة ممكنة: crontab كيفية جدولة المهام في لينكس مع Cron و Crontabتعد القدرة على أتمتة المهام واحدة من تلك التقنيات المستقبلية الموجودة هنا بالفعل. يمكن لكل مستخدم Linux الاستفادة من نظام الجدولة ومهام المستخدم ، وذلك بفضل cron ، وهي خدمة خلفية سهلة الاستخدام. اقرأ أكثر . اكتب:

sudo crontab -e. 

إذا كانت هذه هي المرة الأولى التي يعمل فيها هذا الأمر ، فسيبدأ بسؤالك عن المحرر الذي تريد استخدامه. لقد اخترت الخيار 2 ، للنانو. سيتم تشغيله في المحرر الذي اخترته ، لذا أضف السطر التالي:

reboot python /home/pi/motion.py &

هذا يعني أن البرنامج النصي motion.py الخاص بك سيتم تشغيله عند كل بدء تشغيل ، ويقوم بذلك بصمت (لذلك سيتم تجاهل أي إخراج من البرنامج النصي). أعد التشغيل لتجربته.

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

أضف المزيد من الأصوات

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

قم بتعديل الرمز بحيث بدلاً من تحديد واحد pygame.mixer. صوت المتغير ، نحن في الواقع إنشاء مجموعة مصفوفة من الأصوات. هذا الأمر بسيط مع Python ، فقط قم بإحاطة قائمة مفصولة بفواصل بينها بأقواس مربعة ، كما يلي:

الأصوات = [pygame.mixer. الصوت ("home / pi / thunder.ogg") ، pygame.mixer. الصوت ("/ home / pi / scary_scream.ogg") ، pygame.mixer. الصوت ("/ home / pi / girl_scream.ogg") ، pygame.mixer. الصوت ("/ home / pi / psycho_scream.ogg")]

بعد ذلك ، قم باستيراد المكتبة العشوائية إلى ملفك ، مع:

استيراد عشوائي. 

قم الآن بتعديل حلقة استشعار الحركة الرئيسية كما يلي:

أثناء True: if pir.motion_detected: print ("Motion كشف!") playSound = random.choice (الأصوات) playSound.play () # تأكد من أن التشغيل تم إكماله بالكامل قبل استئناف الكشف عن الحركة ، ويمنع "سبام" من النوم الصوتي (15) playSound.stop () آخر: طباعة ("لا اقتراح")

لاحظ التغيير الطفيف: بدلاً من تشغيل متغير الصوت الواحد ، فإننا نستخدم اختيار عشوائي وظيفة لاختيار صوت عشوائي من مجموعة الأصوات لدينا ، ثم تشغيل ذلك.

إليك الشفرة الكاملة في حالة مواجهة مشكلات:

استيراد القزم. من pygame.mixer استيراد الصوت. من gpiozero استيراد MotionSensor. من وقت استيراد النوم. استيراد pygame.init عشوائي () pygame.mixer.init () #load ملف صوتي ، نفس الدليل مثل الأصوات (لا mp3s) الأصوات = [pygame.mixer. الصوت ("home / pi / thunder.ogg") ، pygame.mixer. الصوت ("/ home / pi / scary_scream.ogg") ، pygame.mixer. الصوت ("/ home / pi / girl_scream.ogg") ، pygame.mixer. الصوت ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) أثناء True: if pir.motion_detected: print ("Motion كشف!") playSound = random.choice (الأصوات) playSound.play () # تأكد من أن التشغيل تم إكماله بالكامل قبل استئناف الكشف عن الحركة ، ويمنع "سبام" من النوم الصوتي (15) playSound.stop () آخر: طباعة ("لا اقتراح")

مع وجود أربع عينات فقط ، هناك احتمال كبير للتكرار في كل مرة ، ولكن يمكنك إضافة المزيد من العينات إذا كان ذلك مزعجًا.

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

إخلاء المسؤولية: MakeUseOf ليست مسؤولة عن أي إصابة شخصية قد تنتج عن استخدامك لهذا المشروع!

هل ستقوم بعمل صندوق الصوت المنشط للحركة لتخويف الخدع أو المعالجات المحلية؟ هل قمت بإعداد أي تأثيرات مخيفة مع Raspberry Pi في عيد الهالوين؟ يرجى إعلامنا بذلك في التعليقات أدناه!

جيمس حاصل على درجة البكالوريوس في الذكاء الاصطناعي ، وهو حاصل على شهادة CompTIA A + و Network +. وهو المطور الرئيسي لـ MakeUseOf ، ويقضي وقت فراغه في لعب كرة الطلاء VR وألعاب الطاولة. لقد كان يبني أجهزة الكمبيوتر منذ أن كان طفلاً.