فهرست مطالب:

نور شب نویز سفید: 11 مرحله (همراه با تصاویر)
نور شب نویز سفید: 11 مرحله (همراه با تصاویر)

تصویری: نور شب نویز سفید: 11 مرحله (همراه با تصاویر)

تصویری: نور شب نویز سفید: 11 مرحله (همراه با تصاویر)
تصویری: سه نشانه اصلی مست شدن زن که بسیاری از مرد ها نمیدانند . 2024, جولای
Anonim
نور شب نویز سفید
نور شب نویز سفید
نور شب نویز سفید
نور شب نویز سفید

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

این یک پروژه واقعاً آسان است و از آنجا که من قبلاً کد را نوشته ام ، شاید در مقیاس سختی 1 از 5 باشد. اگر بچه های نوپایی دارید که خیلی زود شما را اذیت می کنند ، باید یکی از آنها را تهیه کنید.

مرحله 1: لیست قطعات

فهرست قطعات
فهرست قطعات
فهرست قطعات
فهرست قطعات
فهرست قطعات
فهرست قطعات

1. Raspberry Pi Zero W

2. یک نوع مورد (من از این مورد از آمازون استفاده کردم)

3. Blinkt از Pimoroni

4. بلندگوی Phat از Pimoroni (همچنین می توانید از DAC دیگر با بلندگوهای ارزان قیمت استفاده کنید)

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

5. [اختیاری] کابل میکرو USB پانل - از Adafruit

6. برخی از سیم های اتصال دهنده یا جهنده

خودشه!

مرحله 2: Raspbian را بسوزانید و تخته ها را وصل کنید

رسپبیان را بسوزانید و تخته ها را وصل کنید
رسپبیان را بسوزانید و تخته ها را وصل کنید

من برای این ساخت از Raspian Stretch lite استفاده می کنم. بنابراین آن را روی microSD با هر ابزاری که برای شما کار می کند بسوزانید ، سپس pi را روشن کنید. اگر برای اتصال به وای فای خانه خود و فعال کردن ssh به کمک pi بدون سر نیاز دارید ، آموزش های زیادی در اینترنت وجود دارد که می تواند نحوه انجام این کار را به شما نشان دهد ، اما باید بقیه موارد را نیز انجام دهید. برای کار.

با استفاده از https://pinout.xyz می توانید هر دو برد را بکشید و pinouts آنها را در این سایت دریافت کنید. صفحات Blinkt فقط به 4 اتصال و Speaker Phat به 9 اتصال نیاز دارد.

پس از اتمام باید شبیه عکس باشد. اکنون باید آزمایش کنیم که همه چیز در حال کار است.

مرحله 3: نصب نرم افزار مورد نیاز

اکنون که متصل شده ایم ، باید نرم افزار مورد نیاز برای اجرای بردهای Blinkt و Speaker Phat را نصب کنیم. SSH را به pi وارد کنید و خود را در فهرست اصلی پیدا کنید. زیر را وارد کنید:

پیچ خوردن https://get.pimoroni.com/blinkt | خراب کردن

و پس از اتمام ، این:

curl -sS https://get.pimoroni.com/speakerphat | خراب کردن

با این کار همه چیز مورد نیاز برای هر دو تخته Pimoroni نصب می شود. اگر دستور ls را وارد می کنید ، باید یک دایرکتوری Pimoroni را مشاهده کنید. بنابراین اکنون اجازه دهید کمی کد بنویسیم و برد Blinkt را آزمایش کنیم.

مرحله 4: نوشتن مقداری کد و آزمایش آن

با تایپ کردن اسکریپت های mkdir یک دایرکتوری به نام "اسکریپت" ایجاد کنید و ما همه چیزهایی را که برای اجرا نیاز داریم در آنجا نگه می داریم. بنابراین اسکریپت های cd برای وارد شدن به آن پوشه.

در حال حاضر ، آنچه ما می خواهیم چراغهای کم نور قرمز برای شب ، چراغهای کم نور زرد برای زمان بازی آرام و چراغهای سبز روشن تر در هنگام بیرون آمدن مشکلی نیست. برای من ، من از ساعت 7:30 بعد از ظهر تا 6:15 صبح چراغ قرمز می خواستم و در 6:15 صبح آنها به مدت یک ساعت زرد می شدند و در نهایت در 7:15 صبح سبز می شدند. من همچنین می خواستم آنها را در ساعت 8:30 صبح خاموش کنند در حالی که به احتمال زیاد هیچ کس در اتاق نبود.

دو راه برای انجام این کار وجود دارد. اولین (روشی که من برای انجام آن انتخاب کردم) با چهار اسکریپت مختلف است که از cron jobs اجرا می شود. راه دیگر برای انجام این کار ، یک اسکریپت است که شامل یک تابع زمان است که در هنگام راه اندازی اجرا می شود. من در واقع اسکریپت را نوشتم تا این کار را ابتدا انجام دهم ، اما به نظر می رسید کارایی آن کمتر از انجام آن بر اساس cron باشد ، بنابراین آن را تغییر دادم. اگر روش "یک اسکریپت" را می خواهید ، به من اطلاع دهید و می توانم آن را در نظرات ارسال کنم.

بنابراین ، بیایید با اسکریپت قرمز شروع کنیم. عبارت touch.py و سپس nano red.py را تایپ کنید. سپس کد زیر را وارد کنید.

#!/usr/bin/env پایتون

وارد کردن 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) #پیکسل های 3 و 4 را به blinkt.show قرمز ()

همین کار را برای yellow.py و green.py انجام دهید.

yellow.py:

#!/usr/bin/env پایتون

واردات 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 پایتون

واردات blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.2) blinkt.set_all (0، 128، 0) #همه پیکسل ها را به رنگ سبز blinkt.show () تنظیم می کند

و سرانجام ، ما می خواهیم یک اسکریپت برای پاک کردن Blinkt در مواقع مورد نیاز (lightout.py):

#!/usr/bin/env پایتون

واردات blinkt blinkt.set_clear_on_exit (True) blinkt.set_brightness (0.1) blinkt.set_all (0، 0، 0) #همه پیکسل ها را به حالت خاموش blinkt.show () تنظیم می کند

خودشه. برای آزمایش نوع python red.py و ببینید آیا دو پیکسل وسط قرمز روشن می شوند یا خیر. سپس python lightsout.py را تایپ کنید تا پاک شود. خودشه! در مرحله بعد باید موارد موجود در تب cron را طوری تنظیم کنیم که در زمان دلخواه اجرا شوند.

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

در ترمینال 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

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

همین برای نور شب! فوق العاده آسان. اکنون بیایید به راه اندازی بخش White Noise این بیلد بپردازیم.

مرحله 6: آزمایش Phat بلندگو

ساده ترین راه (به نظر من) برای آزمایش Speaker Phat این است که sox را نصب کرده و مقداری static را از خط فرمان اجرا کنید.

sudo apt-get install sox

پس از نصب ، می توانیم چند دستور بازی نمونه را امتحان کنیم. این یکی باید مثل موج به نظر برسد.

play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapezium amod 0.1 30

چقدر آرامش بخش! Ctrl+c آن را متوقف می کند. اما ، آن چیست؟ تعدادی LED در قسمت جلوی اسپیکر Phat روشن شده است و ما نمی توانیم با چراغ های Blinkt مان تداخل داشته باشیم. بنابراین اجازه دهید آنها را خاموش کنیم.

برای انجام این کار ، ما باید فایل /etc/asound.conf را اصلاح کرده و افزونه VU meter را حذف کنیم ، بنابراین حتی در وهله اول سعی نمی کند LED ها را هدایت کند. من این کار را فقط با تغییر نام آن انجام دادم. این دستور را تایپ کنید mv /etc/asound.conf /etc/asound.conf.bak من این را با کمی جستجوی گوگل پیدا کردم ، بنابراین ممکن است راه بهتری وجود داشته باشد.

Sox کار می کند ، و این عالی است ، اما من قصد داشتم از MP3 های حلقه ای برای قسمت نویز سفید این دستگاه استفاده کنم ، بنابراین به یک پخش کننده متفاوت ، ترجیحاً چیزی واقعاً سبک نیاز داشتم. mpg123 چیزی است که من بر آن توافق کردم. آن را با sudo apt-get install mpg123 نصب کنید

خوب ، اکنون که می دانیم Speaker Phat طبق انتظار کار می کند ، زمان ساختن رابط و اسکریپت های مربوطه فرا رسیده است.

مرحله 7: راه اندازی وب سرور کوچک و Webapp

Flask یک چارچوب میکرو وب است که به زبان پایتون نوشته شده است. این برنامه تمام قابلیت های مورد نیاز ما برای وب سرور (که قرار است به عنوان یک برنامه عمل کند) را ارائه می دهد. با دستور زیر آن را نصب کنید:

فلاسک نصب pip3

این کار کمی طول می کشد ، پس منتظر باشید. پس از اتمام کار ، ما باید پوشه هایی را ایجاد کنیم که باید هنگام راه اندازی وب سایت از آنها خارج شویم و این پوشه ها دارای نام های خاصی هستند. بیایید با مکانی برای میزبانی وب سایت شروع کنیم. از فهرست اصلی ، یک فهرست جدید به نام www با mkdir www ایجاد کنید. در حال حاضر cd www به آن فهرست. در اینجا ما به دو فهرست دیگر نیاز داریم ، یکی به نام static و دیگری به نام templates.

ما همچنین به مکانی برای قرار دادن MP3 های قابل حل خود نیاز داریم. من یک دایرکتوری در فهرست اصلی به نام "sounds" برای این کار ایجاد کردم. من MP3 های خود را با جستجوی MP3 های سفید رنگ سفید در گوگل پیدا کردم. بسیاری از مکان های رایگان برای بیرون کشیدن. من از WinSCP برای بارگذاری فایل ها استفاده کردم.

ممکن است بخواهید آنها را با دستور omxplayer زیر که با قسمت --vol -### بازی می کنید آزمایش کنید تا در سطح صدای مناسب اتاق خود شماره گیری کنید. دوباره Ctrl+C پخش کننده را متوقف می کند.

اکنون که همه آن ها را در اختیار داریم ، اجازه دهید مقداری پایتون بنویسیم تا وقتی pi شروع به کار می کند ، وب سرور بایستد. به فهرست www بازگردید و یک فایل جدید با نام webapp.py (nano webapp.py) شروع کرده و کد زیر را وارد کنید

webbapp.py:

#!/usr/bin/python

from flask import Flask، render_template، request، redirect import os app = Flask (_ name_) @app.route ('/') def index (): render_template ('index.html') @app.route ('/rain') ، Methods = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") redirect ('/') @app.route ('/waves'، Methods = ['POST']) def waves (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") redirect ('/) @app.route ('/whitenoise'، Methods = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") برگشت هدایت () /') @app.route ('/stop '، Methods = [' POST ']) def stop (): os.system ("killall mpg123") redirect redirect ('/') if _name_ ==' _main_ ': app.run (اشکال زدایی = درست ، میزبان = '0.0.0.0')

همانطور که مشاهده می کنید ، این webapp دارای 5 صفحه ، یکی برای فهرست ، 3 صفحه برای 3 صدای مختلف (موج ، باران و سفید شدن) و 1 صفحه دیگر برای توقف خواهد بود. هر 4 صفحه غیر نمایه پس از اجرای دستور ارسال شده به omxplayer به index ('/') تغییر مسیر می دهند ، بنابراین ما فقط باید یک index.html ایجاد کنیم ، و هیچ چیز دیگر. من از killall در اینجا به عنوان تابع توقف استفاده می کنم ، زیرا راه بهتری برای ارسال دستور "stop" به omxplayer پیدا نکردم. اگر راه بهتری برای این کار می دانید ، خوشحال می شوم آن را بشنوم!

حالا بیایید index.html را کنار هم قرار دهیم.

مرحله 8: ساخت وب سایت

ساخت وب سایت
ساخت وب سایت
ساخت وب سایت
ساخت وب سایت
ساخت وب سایت
ساخت وب سایت
ساخت وب سایت
ساخت وب سایت

اینها تصاویری هستند که من برای ساخت خود استفاده کردم ، اما با خیال راحت عکسهای خود را بسازید. همه آنها باید در پوشه ایستا که قبلاً ساخته ایم ذخیره شوند. فایل index.html که قرار است در اینجا ایجاد کنیم باید در پوشه templates باشد. این بسیار مهم است ، در غیر این صورت ، هیچ یک از آنها کار نمی کند. در اینجا کد index.html من آمده است (دوباره ، این فقط یک html ساده است ، بنابراین آن را به هر روشی که برای شما کار می کند اصلاح کنید).

از آنجا که Instructables به من اجازه نمی دهد HTML خام ارسال کنم ، در اینجا پیوندی به فایل موجود در Dropbox من آمده است:

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

اما در صورت از بین رفتن ، فایل HTML فقط یک CSS فانتزی است و یک جدول ساده 2x2 با آن 4 نماد به عنوان دکمه هایی با مقادیر پست مانند:

form action = "/whitenoise" method = "post"

ورودی src = "/static/whitenoise.png" value = "نویز سفید"

باید بسیار آسان باشد که خود را یکی کنید.

آخرین مرحله این است که مطمئن شوید webapp.py در هنگام راه اندازی اجرا می شود ، دوباره این کار را با افزودن آن به crontab انجام دادم. بنابراین یکبار دیگر crontab -e را تایپ کنید و موارد زیر را به انتها اضافه کنید:

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

سپس pi را راه اندازی مجدد کنید ، یک مرورگر را روی دستگاه دیگر (تلفن خود) به IP pi نشان دهید (اگر می توانید این حالت را ثابت کنید) و ببینید آیا کار کرده است یا خیر. روی دکمه ها کلیک کنید و ببینید آیا نویز به شما می رسد.

در تلفن اندرویدی می توانید یک وب سایت را روی صفحه اصلی خود نشانک گذاری کنید ، این کاری است که من با آن انجام دادم تا ظاهری شبیه به یک برنامه داشته باشد. اگر واقعاً می خواهید ظاهر آن "حرفه ای" باشد ، یک فایل.ico مناسب پیدا کنید یا ایجاد کنید و نماد اختصاصی وب سایت را به آن بدهید که در صفحه اصلی تلفن شما ظاهر می شود و بیشتر شبیه یک برنامه است. بسیاری از آموزش های آنلاین نحوه افزودن نماد (favicon) به یک وب سایت.

مرحله 9: همه چیز را در یک مورد قرار دهید

همه چیز را در یک مورد قرار دهید
همه چیز را در یک مورد قرار دهید
همه چیز را در یک مورد قرار دهید
همه چیز را در یک مورد قرار دهید
همه چیز را در یک مورد قرار دهید
همه چیز را در یک مورد قرار دهید

اکنون که همه چیز آزمایش شده است و کار می کند ، وقت آن است که همه چیز را در یک مورد قرار دهیم.

من با استفاده از پلاستیک باقی مانده ای که در خانه داشتم یک پایه ایستاده برای Raspberry Pi Zero ساختم. سپس من چند سوراخ برای اتصال پنل میکرو USB ایجاد کردم و با استفاده از برخی از فایل های طلا و جواهر از سوراخ استفاده کردم. کابل نصب پنل کمی سفت است ، بنابراین ممکن است در آینده در آینده یک آداپتور زاویه دار برای پورت micro USB روی Pi بخرم.

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

مرحله 10: همین

خودشه!
خودشه!

آن را وصل کنید و کار تمام است. اینجا مال من درست بعد از 8 شب اجرا می شود. LED سبز رنگ روی pi به اندازه ای که این عکس نشان می دهد روشن نیست.

چند ویرایش بعدی که انجام دادم:

4 صفحه دیگر به فایل های webapp.py و index.html اضافه کردم. آن 4 "قرمز" ، "زرد" ، "سبز" و "خاموش" هستند. کاملا خود توضیحی اگر من و همسر احساس خستگی مضاعف می کردیم و نمی خواستیم مزاحم شویم ، می توانم آن را از سبز به زرد تغییر دهم.

@app.route ('/red'، Methods = ['POST']) def red (): os.system ("python ~/scripts/red.py") return redirect ('/')

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

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

اگر اصلاحات اضافی انجام دهم ، حتماً به اینجا برمی گردم و آنها را لیست می کنم.

مرحله 11: الحاقیه

بعد از ساختن این موضوع متوجه شدم که من و همسرم هر دو هنگام خواباندن بچه برای خواب یا چرت زدن ، تلفن های خود را مرتباً در طبقه پایین می گذاریم. بنابراین من یک دکمه فشاری لحظه ای را به پایه فیزیکی 36 اضافه کردم و کد زیر (که آن را button.py نامیدم) برای اجرا در هنگام راه اندازی در rc.local اضافه کردم:

#!/usr/bin/env پایتون

واردات RPi. GPIO به عنوان GPIO زمان واردات واردات زیرپرداز واردات مجدد GPIO.setmode (GPIO. BOARD) # استفاده از دکمه طرح شماره گذاری فیزیکی پین = 36 # دکمه به پین فیزیکی 16 GPIO.setup متصل است (دکمه ، GPIO. IN ، pull_up_down = GPIO. PUD_UP) # دکمه را ورودی کنید ، Pull UP Resistor را فعال کنید True: ["ps"، "ax"]، stdout = subprocess. PIPE) برای x در s.stdout: if re.search ("mpg123"، x): returnprocess = True if returnprocess == غلط: os.system ("mpg123 --loop -1 /home/pi/scripts/sounds/whitenoise.mp3 & ") os.system (" python /home/pi/scripts/red.py ") دیگری: os.system (" killall mpg123 ") os.system ("python /home/pi/scripts/lightsout.py")

همانطور که می بینید ، من از omxplayer به mpg123 تغییر کردم زیرا بسیار سبک تر و ساده تر است.

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

توصیه شده: