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

الضوء الليلي للضوضاء البيضاء: 11 خطوة (بالصور)
الضوء الليلي للضوضاء البيضاء: 11 خطوة (بالصور)

فيديو: الضوء الليلي للضوضاء البيضاء: 11 خطوة (بالصور)

فيديو: الضوء الليلي للضوضاء البيضاء: 11 خطوة (بالصور)
فيديو: ضوضاء بيضاء - White Noise (نوم هادىء للاطفال) 2024, يوليو
Anonim
ضوء ليلي ضوضاء بيضاء
ضوء ليلي ضوضاء بيضاء
ضوء ليلي ضوضاء بيضاء
ضوء ليلي ضوضاء بيضاء

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

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

الخطوة 1: قائمة الأجزاء

قائمة الاجزاء
قائمة الاجزاء
قائمة الاجزاء
قائمة الاجزاء
قائمة الاجزاء
قائمة الاجزاء

1. Raspberry Pi Zero W

2. نوع من الحالات (لقد استخدمت هذه الحالة من Amazon)

3. Blinkt من Pimoroni

4. مكبر الصوت Phat من Pimoroni (يمكنك أيضًا استخدام بعض DAC الأخرى مع مكبرات صوت رخيصة)

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

5. [اختياري] كبل USB الصغير المثبت على اللوحة - من Adafruit

6. بعض الأسلاك أو وصلات العبور

هذا كل شيء!

الخطوة 2: احرق Raspbian وربط الألواح

احرق Raspbian وربط الألواح
احرق Raspbian وربط الألواح

أنا أستخدم Raspian Stretch lite لهذا البناء. لذا احرق ذلك على بطاقة microSD بأي أداة تناسبك ، ثم أطلق النار. إذا كنت بحاجة إلى مساعدة في الحصول على جهاز pi مقطوع الرأس للاتصال بشبكة wifi في منزلك وتمكين ssh ، فهناك الكثير من البرامج التعليمية عبر الإنترنت التي يمكن أن توضح لك كيفية القيام بذلك ، ولكن ستحتاج إلى التأكد من قيامك بذلك لبقية هذا. للعمل.

باستخدام https://pinout.xyz يمكنك سحب كلتا اللوحتين والحصول على pinouts الخاص بهما على هذا الموقع. تتطلب لوحات Blinkt 4 توصيلات فقط ، بينما يحتاج مكبر الصوت Phat إلى 9.

يجب أن تبدو مثل الصورة عند الانتهاء. الآن نحن بحاجة إلى اختبار أن كل شيء يعمل.

الخطوة الثالثة: تثبيت البرنامج المطلوب

الآن بعد أن أصبحنا متصلين ، سنحتاج إلى تثبيت البرنامج المطلوب لتشغيل لوحتي Blinkt و Speaker Phat. SSH في pi ، وستجد نفسك في الدليل الرئيسي. أدخل التالي:

حليقة https://get.pimoroni.com/blinkt | سحق

وبعد ذلك بمجرد اكتمال ذلك ، هذا:

curl -sS https://get.pimoroni.com/speakerphat | سحق

سيؤدي ذلك إلى تثبيت كل ما هو مطلوب لكل من لوحات Pimoroni. إذا قمت بإدخال الأمر ls ، يجب أن ترى دليل Pimoroni. لنكتب الآن بعض التعليمات البرمجية ونختبر لوحة Blinkt.

الخطوة 4: كتابة بعض التعليمات البرمجية واختبارها

أنشئ دليلًا يسمى "scripts" عن طريق كتابة البرامج النصية mkdir وسنحتفظ بكل ما نحتاجه للتشغيل هناك. لذا فإن البرامج النصية للأقراص المدمجة للحصول على نفسك في هذا المجلد.

الآن ، ما نريده هو أضواء حمراء خافتة ليلا ، وأضواء صفراء خافتة لوقت اللعب الهادئ ، وأضواء خضراء أكثر سطوعًا عندما يكون من المناسب الخروج. بالنسبة لي ، كنت أرغب في الحصول على أضواء حمراء من الساعة 7:30 مساءً إلى 6:15 صباحًا ، وفي الساعة 6:15 صباحًا سيتحول لونها إلى اللون الأصفر لمدة ساعة ، ثم أخيرًا في الساعة 7:15 صباحًا. كنت أرغب أيضًا في إيقاف تشغيلهم في الساعة 8:30 صباحًا عندما لا يحتمل وجود أي شخص في الغرفة.

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

لذا ، لنبدأ بالنص الأحمر. اكتب touch red.py ، ثم nano red.py. ثم أدخل الرمز التالي.

#! / usr / bin / env python

استيراد blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.3) blinkt.set_pixel (3 ، 128 ، 0 ، 0) blinkt.set_pixel (4 ، 128 ، 0 ، 0) #sets pixels 3 and 4 to red blinkt.show ()

افعل نفس الشيء مع yellow.py و green.py.

yellow.py:

#! / usr / bin / env python

استيراد blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.2) blinkt.set_pixel (2 ، 128 ، 128 ، 0) blinkt.set_pixel (3 ، 128 ، 128 ، 0) blinkt.set_pixel (4 ، 128 ، 128 ، 0) blinkt.set_pixel (5 ، 128 ، 128 ، 0) # مجموعات البكسل 2 ، 3 ، 4 ، و 5 إلى اللون الأصفر blinkt.show ()

green.py:

#! / usr / bin / env python

استيراد وميض blinkt.set_clear_on_exit (False)

وأخيرًا ، نريد برنامج نصي يمسح Blinkt عندما لا يكون مطلوبًا (lightout.py):

#! / usr / bin / env python

استيراد blinkt blinkt.set_clear_on_exit (صواب) blinkt.set_brightness (0.1) blinkt.set_all (0 ، 0 ، 0) # تعيين كافة وحدات البكسل لإيقاف تشغيل blinkt.show ()

هذا كل شيء. لاختبار نوع python red.py ومعرفة ما إذا كانت وحدات البكسل الوسطى تضيء باللون الأحمر. ثم اكتب بيثون lightout.py لمسحه. هذا كل شيء! بعد ذلك ، سيتعين علينا تعيين تلك الموجودة في علامة تبويب cron حتى يتم تشغيلها عندما نريدها.

الخطوة 5: إضافة تلك البرامج النصية إلى Cron

في محطة SSH اكتب crontab -e

قم بالتمرير إلى نهاية الملف وقم بإضافة الأسطر التالية:

15 6 * * * python /home/pi/scripts/yellow.py15 7 * * * python /home/pi/scripts/green.py 30 8 * * * python /home/pi/scripts/lightsout.py 30 19 * * * python /home/pi/scripts/red.py

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

هذا كل شيء لضوء الليل! سهل للغاية. الآن دعنا ننتقل إلى إعداد جزء الضوضاء البيضاء من هذا التصميم.

الخطوة 6: اختبار السماعة Phat

أسهل طريقة (في رأيي) لاختبار Speaker Phat هي تثبيت sox وتشغيل بعض العناصر الثابتة من سطر الأوامر.

sudo apt-get install sox

بمجرد تثبيت ذلك ، يمكننا تجربة بعض أوامر التشغيل النموذجية. يجب أن يكون هذا الصوت مثل الموجات.

بلاي-ان سينث براون نويز سينث بينك نويز ميكس سينث 0 0 0 10 10 40 شبه منحرف آمود 0.1 30

كيف الاسترخاء! Ctrl + c سيوقفها. لكن ما هذا؟ توجد مجموعة من مصابيح LED على وجه مكبر الصوت Phat ، ولا يمكننا أن نتداخل مع مصابيح Blinkt الخاصة بنا. لذلك دعونا نطفئ هؤلاء.

للقيام بذلك ، سنحتاج إلى تعديل ملف /etc/asound.conf وإزالة المكوِّن الإضافي لمقياس VU ، لذلك لن يحاول حتى تشغيل مصابيح LED في المقام الأول. فعلت هذا ببساطة عن طريق إعادة تسميته. اكتب هذا الأمر mv /etc/asound.conf /etc/asound.conf.bak لقد وجدت هذا من خلال القليل من Googling ، لذلك قد تكون هناك طريقة أفضل.

يعمل Sox ، وهذا رائع ، لكنني خططت لاستخدام بعض ملفات MP3 القابلة للتكرار لجزء الضوضاء البيضاء من هذا الجهاز ، لذلك كنت بحاجة إلى مشغل مختلف ، ويفضل أن يكون شيئًا خفيف الوزن حقًا. mpg123 هو ما استقرت عليه. قم بتثبيت ذلك الآن باستخدام sudo apt-get install mpg123

حسنًا ، بعد أن علمنا أن مكبر الصوت Phat يعمل كما هو متوقع ، حان الوقت لإنشاء الواجهة والبرامج النصية المقابلة.

الخطوة 7: إعداد خادم ويب صغير وتطبيق Webapp

Flask هو إطار عمل ويب صغير مكتوب بلغة Python. يوفر جميع الوظائف التي نحتاجها لخادم الويب (الذي سيعمل كتطبيق). قم بتثبيته بالأمر التالي:

تثبيت القارورة pip3

سيستغرق ذلك بعض الوقت ، لذا انتظر. بمجرد اكتماله ، سنحتاج إلى إنشاء المجلدات التي سنحتاج إلى سحبها عند تشغيل موقع الويب ، وهذه المجلدات لها أسماء محددة. لنبدأ بمكان لاستضافة الموقع. من الدليل الرئيسي ، قم بإنشاء دليل جديد يسمى www مع mkdir www. الآن cd www في ذلك الدليل. هنا نحتاج إلى دليلين آخرين ، أحدهما يسمى ثابت والآخر يسمى القوالب.

نحتاج أيضًا إلى مكان لوضع ملفات MP3 القابلة للحلقات. لقد قمت بعمل دليل في الدليل الرئيسي يسمى "أصوات" لهذا الغرض. لقد وجدت ملفات MP3 الخاصة بي من خلال البحث عن ملفات MP3 البيضاء القابلة للتكرار على Google. الكثير من الأماكن الحرة للانسحاب منها. لقد استخدمت WinSCP لتحميل الملفات.

قد ترغب في اختبارها باستخدام الأمر omxplayer أدناه باللعب بجزء --vol - ### للاتصال بمستوى الصوت المناسب لغرفتك. مرة أخرى ، سيوقف Ctrl + C اللاعب.

الآن بعد أن أصبح لدينا كل هؤلاء في مكانهم ، فلنكتب بعضًا من لغة python للوقوف على خادم الويب عند بدء تشغيل pi. ارجع إلى دليل www وابدأ ملفًا جديدًا يسمى webapp.py (nano webapp.py) وأدخل الكود التالي

webbapp.py:

#! / usr / bin / python

من flask import Flask، render_template، request، redirect import os app = Flask (_ name_) @ app.route ('/') def index (): return render_template ('index.html') @ app.route ('/ rain' ، طرق = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~ / scripts / sounds / rain.mp3") إرجاع إعادة التوجيه ('/') @ app.route ('/ wave'، methods = ['POST']) def wave (): os.system ("mpg123 -f 20500 --loop -1 ~ / scripts / sound / wave.mp3") يعيد التوجيه ('/') @ app.route ('/ whitenoise'، features = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~ / scripts / sound / whitenoise.mp3") يعيد التوجيه (' / ') @ app.route (' / stop '، methods = [' POST ']) def stop (): os.system ("killall mpg123") إرجاع إعادة التوجيه (' / ') إذا _name_ ==' _main_ ': app.run (التصحيح = صحيح ، المضيف = '0.0.0.0')

كما ترى ، سيحتوي تطبيق الويب هذا على 5 صفحات ، واحدة للفهرس ، و 3 لكل 3 أصوات مختلفة (موجة ، مطر ، أبيض) وواحدة أخرى للتوقف. تعيد جميع الصفحات غير المفهرسة الأربع توجيهها مرة أخرى إلى الفهرس ('/') بعد تنفيذ الأمر المرسل إلى omxplayer ، لذلك نحتاج فقط إلى إنشاء index.html واحد ، ولا شيء آخر. أنا أستخدم killall هنا كدالة توقف ، لأنني لم أجد طريقة أفضل لإرسال أمر "stop" إلى omxplayer. إذا كنت تعرف طريقة أفضل للقيام بذلك ، فأنا أحب أن أسمع ذلك!

الآن دعنا نجمع index.html.

الخطوة الثامنة: بناء الموقع

بناء الموقع
بناء الموقع
بناء الموقع
بناء الموقع
بناء الموقع
بناء الموقع
بناء الموقع
بناء الموقع

هذه هي الصور التي استخدمتها في بنائي ، لكن لا تتردد في صنعها بنفسك. يجب حفظها جميعًا في المجلد الثابت الذي أنشأناه سابقًا. يجب أن يكون ملف index.html الذي سننشئه هنا في مجلد النماذج. هذا مهم جدًا ، وإلا فلن يعمل أي منها. هذا هو الكود الخاص بي index.html (مرة أخرى ، هذا مجرد html بسيط ، لذا قم بتعديله بأي طريقة تناسبك).

نظرًا لأن Instructables لن تسمح لي بنشر HTML خام ، فإليك رابط للملف كما هو موجود في Dropbox الخاص بي:

www.dropbox.com/s/n5xf2btftk5sz9b/index.ht…

ولكن في حالة وفاة ذلك ، فإن ملف HTML هو مجرد بعض CSS رائع ، وجدول بسيط 2 × 2 به هذه الرموز الأربعة كأزرار بقيم نشر مثل:

عمل الشكل = "طريقة whitenoise" = "post"

input src = "/ static / whitenoise.png" value = "White Noise"

يجب أن يكون من السهل أن تجعل نفسك واحدًا.

الخطوة الأخيرة هي التأكد من تشغيل webapp.py عند بدء التشغيل ، ومرة أخرى ، قمت بذلك عن طريق إضافته إلى crontab. لذا اكتب crontab -e مرة أخرى وأضف ما يلي في النهاية:

reboot python3 /home/pi/www/webapp.py

ثم أعد تشغيل pi ، وقم بتوجيه المستعرض على جهاز آخر (هاتفك) إلى IP الخاص بـ pi (الأفضل إذا كان بإمكانك جعل هذا ثابتًا) ومعرفة ما إذا كان يعمل. انقر فوق الأزرار وشاهد ما إذا كنت تحصل على ضوضاء.

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

الخطوة 9: مربى كل شيء في علبة

مربى كل شيء في علبة
مربى كل شيء في علبة
مربى كل شيء في علبة
مربى كل شيء في علبة
مربى كل شيء في علبة
مربى كل شيء في علبة

الآن بعد أن تم اختبار كل شيء وعمله ، حان الوقت لملء كل شيء في علبة.

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

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

الخطوة 10: هذا كل شيء

هذا هو!
هذا هو!

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

بعض التعديلات التي أجريتها لاحقًا:

أضفت 4 صفحات أخرى إلى ملفات webapp.py و index.html. هؤلاء الأربعة هم "أحمر" و "أصفر" و "أخضر" و "إيقاف تشغيل". جميلة تفسيرية. كنت أرغب في تحويله من اللون الأخضر إلى الأصفر إذا شعرت أنا والزوجة بالتعب الشديد ولم نرغب في إزعاجنا.

@ app.route ('/ red'، methods = ['POST']) def red (): os.system ("python ~ / scripts / red.py") إعادة توجيه ('/')

في الأساس ، 4 مرات ، تشغيل 4 برامج نصية مختلفة ، ثم بعض الأزرار في الفهرس التي تستدعي تلك الصفحات.

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

إذا أجريت أي تعديلات إضافية ، فسأكون متأكدًا من العودة إلى هنا وسردها.

الخطوة 11: إضافة

بعد بناء هذا ، أدركت أن زوجتي وأنا نترك هواتفنا كثيرًا في الطابق السفلي عند وضع الطفل في السرير أو قيلولة. لذلك أضفت زر ضغط لحظيًا إلى رقم التعريف الشخصي 36 ، وقمت بتضمين الكود التالي (أسميته button.py) للتشغيل عند بدء التشغيل في rc.local:

#! / usr / bin / env python

استيراد RPi. GPIO مثل استيراد وقت استيراد GPIO واستيراد عملية استيراد نظام التشغيل واستيراد العملية الفرعية re GPIO.setmode (GPIO. BOARD) # استخدام زر مخطط ترقيم رقم التعريف الشخصي الفعلي = 36 # الزر متصل بالمنفذ المادي 16 GPIO.setup (زر ، GPIO. IN ، pull_up_down = GPIO. ["ps"، "ax"]، stdout = subprocess. PIPE) لـ x في s.stdout: if re.search ("mpg123"، x): returnprocess = True if returnprocess == False: os.system ("mpg123" --loop -1 /home/pi/scripts/sounds/whitenoise.mp3 & ") os.system (" python /home/pi/scripts/red.py ") else: os.system (" killall mpg123 ") os.system ("python /home/pi/scripts/lightsout.py")

كما ترون ، لقد تحولت أيضًا إلى mpg123 من omxplayer لأنه خفيف الوزن وسهل الاستخدام.

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

موصى به: