فهرست مطالب:

Disco-pi: 8 مرحله (همراه با تصاویر)
Disco-pi: 8 مرحله (همراه با تصاویر)

تصویری: Disco-pi: 8 مرحله (همراه با تصاویر)

تصویری: Disco-pi: 8 مرحله (همراه با تصاویر)
تصویری: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, نوامبر
Anonim
دیسکو-پی
دیسکو-پی

این دستورالعمل نحوه استفاده از Raspberry Pi برای کنترل نوار LED رنگی را بر اساس موسیقی پخش شده از مرورگر وب نشان می دهد.

این نحوه ایجاد یک وب سایت اساسی با استفاده از Node.js از طریق HTTPS و استفاده از socket.io روی WSS (Secure Websocket) را نشان می دهد.

این وب سایت دارای یک صفحه واحد است که دارای چیدمانی بسیار اساسی است. صفحه وب یک لیست کشویی با فایل های موسیقی را که در پوشه عمومی/صوتی سرور قرار دارند ، پر می کند. با انتخاب یک گزینه در لیست ، فایل موسیقی موجود در صفحه وب با استفاده از عنصر صوتی HTML 5 پخش می شود. هنگام پخش فایل موسیقی ، صفحه وب از رابط AudioContext برای تجزیه و تحلیل موسیقی استفاده می کند ، که سپس از طریق اتصال امن شبکه به سرور ارسال می شود.

سروری که روی Raspberry Pi کار می کند ، از کتابخانه Node RPI WS281x Native (بسته بندی کتابخانه WS281X Jeremy Garff) برای تغییر رنگ LED ها بر روی یک نوار LED WS2811 ، بر اساس داده های ارسال شده از طریق شبکه ، استفاده می کند.

کد نمونه را می توانید در اینجا پیدا کنید: disco-pi

مرحله 1: تجهیزات

  1. Raspberry Pi - من از Raspberry Pi 2B که در اطراف آن قرار داشتم استفاده کردم ، اما شما می توانید یک Raspberry Pi 3 Starter Kit با قیمت حدود 100 CAD تهیه کنید
  2. WS2811 LED Strip - من با ALITOVE 16.4ft 150 Pixels WS2811 بازی می کردم. این دستگاه دارای یک کنترلر و منبع تغذیه حدود 45-50 CAD است
  3. Barrel Jack Connector - من یکی از مغازه لوازم الکترونیکی محلی خود را خریدم ، چیزی شبیه به این. فقط مطمئن شوید که منبع تغذیه شما مناسب است یا خیر
  4. اتصالات بلوز / سیم - من تعدادی کابل اتصال زن و مرد و تعدادی سیم سنج 22 سنج محکم در اطراف داشتم

مرحله 2: راه اندازی رزبری پای

سیستم عامل

من معمولاً از جدیدترین بیلد Raspbian استفاده می کنم. تصویر را بارگیری کرده و روی کارت SD بنویسید. اگر از رایانه Windows استفاده می کنید ، می توانید از Win32 Disk Imager برای نوشتن تصویر بر روی کارت SD استفاده کنید.

Node.js

آخرین نسخه Node.js. را نصب کنید. در زمان نوشتن من از 8.9.1 استفاده می کنم

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get nodejs install

git را نصب کنید

sudo apt-get git install

مرحله 3: تنظیم کد نمونه

کد نمونه را کلون کنید

1. یک پوشه اصلی برای نصب در آن تنظیم کنید

cd /opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. مخزن نمونه git را کلون کنید

git clone https://github.com/haydockjp/disco-pi.git"

یا

git clone [email protected]: haydockjp/disco-pi.git

3. وابستگی ها را نصب کنید

سی دی دیسکو-پی

npm نصب کنید

این ممکن است 2-3 دقیقه طول بکشد

مرحله 4: یک گواهی SSL خود امضا ایجاد کنید

1. یک فایل کلید خصوصی ایجاد کنید

cd /opt/com.jonhaydock/disco-pi/certs

openssl genrsa -out disco-pi-key.pem 2048

2. ایجاد CSR (درخواست امضای گواهینامه)

openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem

در این مرحله از شما اطلاعاتی در مورد درخواست گواهی درخواست می شود. از آنجا که این یک گواهی خود امضاء شده است ، این به شما بستگی دارد که چگونه اطلاعات را دقیق وارد کنید. به عنوان مثال

نام کشور (کد 2 حرف) [AU]: CA

نام ایالت یا استان (نام کامل) [برخی ایالت]: نام منطقه بریتیش کلمبیا (به عنوان مثال ، شهر) : نام سازمان ونکوور (به عنوان مثال ، شرکت) [Internet Widgits Pty Ltd]: نام واحد سازمانی Disco Pi (به عنوان مثال ، بخش) : نام مشترک (به عنوان مثال سرور FQDN یا نام شما) : آدرس ایمیل disco-pi : [email protected] رمز عبور چالشی : نام شرکت اختیاری :

در این مثال ، فقط بازگشت را فشار دهید تا رمز چالش خالی بماند

3. تولید گواهینامه

openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem

4. برای امنیت بیشتر ما همچنین یک فایل پارامترهای Diffie Hellman ایجاد می کنیم

openssl dhparam -out dh_2048.pem 2048

این می تواند 15-20 دقیقه طول بکشد

مرحله 5: اتصال سخت افزار

اتصال سخت افزار
اتصال سخت افزار
اتصال سخت افزار
اتصال سخت افزار
اتصال سخت افزار
اتصال سخت افزار
اتصال سخت افزار
اتصال سخت افزار

تغذیه نوار LED

نوار LED از 12 ولت تغذیه می کند. رزبری پای تنها دارای توان خروجی 3.3 ولت یا 5 ولت است و قادر به خروجی در نزدیکی آمپرهای مورد نیاز برای رانندگی LED های زیاد نیست.

مهم است که منبع تغذیه 12 ولت را به رزبری پای وصل نکنید.

نوار من همچنین سیمهای برق اضافی متصل به نوار را در هر دو طرف داشت. پیشنهاد می کنم اینها را چسب بزنید تا با سایر تجهیزات شما تماس نگیرند.

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

نوار LED

نوار LED من دارای سه سیم است:

قرمز - +12 ولت

سیاه - زمین

سبز - داده ها

توجه: یک Din و یک Dout وجود دارد - Data In و Data Out. اطمینان حاصل کنید که با انتهای نوار LED که روی آن نوشته شده Din کار می کنید.

اطمینان حاصل کنید که جک بشکه به منبع تغذیه وصل نیست

1. سیم قرمز را از نوار LED به + سمت جک بشکه وصل کنید.

من از سیم قلاب 22 سنج سفید استفاده کردم.

سیم را در شکاف + در جک بشکه قرار دهید و آن را در محل خود پیچ کنید.

سر دیگر سیم را به سوکت روی LED فشار دهید. مطمئن شوید که با سیم قرمز در حال اتصال هستید.

2. سیم سیاه را از نوار LED به طرف جک بشکه وصل کنید.

من از سیم قلاب 22 درجه مشکی استفاده کردم.

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

سر دیگر سیم مشکی را به سوکت روی LED فشار دهید.

مطمئن شوید که با سیم مشکی در حال اتصال هستید.

3. سیم سبز را از نوار LED وصل کنید

یکی از کابل های اتصال زن به مرد را بگیرید. در عکس های من این سیم سبز است.

انتهای نر را با سیم سبز در سوکت LED قرار دهید.

این کابل داده است.

تمشک پای

1. کابل اتصال سبز را بردارید و آن را به Raspberry Pi GPIO وصل کنید.

باید آن را به PCM_CLK وصل کنید (پین 12 / GPIO 18)

2. کابل اتصال مشکی را بردارید و آن را به Raspberry Pi GPIO وصل کنید.

شما باید آن را به یکی از زمینه ها وصل کنید. من پیشنهاد می کنم از پین 14 استفاده کنید ، اما می توانید از پین 6 ، 9 ، 20 ، 25 ، 30 ، 34 یا 39 نیز استفاده کنید.

توجه: برای کارکردن منبع تغذیه LED و رزبری پای باید زمینه مشترکی داشته باشند. همچنین توجه داشته باشید که نباید 12 ولت + (سیم قرمز) را به رزبری پای وصل کنید.

قدرت LED

شما نباید بتوانید منبع تغذیه 12 ولت خود را به جک بشکه وصل کنید

همه LED های نوار LED شما باید سفید روشن شوند

مرحله 6: کد سمت سرور

اجرای کد سمت سرور

cd /opt/com.jonhaydock/disco-pi

شروع sudo npm

با این کار سرور وب راه اندازی می شود و گوش دادن به درخواست های HTTPS و WSS شروع می شود.

پورت پیش فرض 443 است ، اما می توانید با تنظیم یک متغیر محیط قبل از شروع کد ، این مورد را نادیده بگیرید. مثلا

صادر DISCO_PI_PORT = 1443

نوار LED من دارای 150 LED است. اینها در گروه های سه نفره کنترل می شوند. این بدان معناست که من نمی توانم هر LED را به صورت جداگانه کنترل کنم و باید اطلاعات کافی را برای کنترل 50 ارسال کنم.

اگر LED شما کم یا زیاد است ، می توانید با عبور یک پارامتر به هنگام راه اندازی ، تعداد LED هایی را که کنترل می کنید لغو کنید. به عنوان مثال ، اگر فقط می توانید 10 LED را کنترل کنید

sudo npm شروع 10

کد سرور اصلی را می توان در فایل app.js یافت. این فایل وب سرور HTTPS را راه اندازی می کند و همچنین socket.io را اضافه می کند تا به درخواست های شبکه در همان پورت گوش دهد.

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

10.0.1.2/

می توانید آدرس IP خود را از خط فرمان Raspberry Pi بیابید.

ifconfig

سرور وب هر محتوایی را در پوشه عمومی ارائه می دهد. به طور پیش فرض صفحه index.html نمایش داده می شود.

دارای یک نقطه پایان API - /api /audio. این نقطه پایانی به دنبال هر پرونده ای در پوشه public/audio می باشد و لیست را برمی گرداند. مثلا

["GYAKO.mp3" ، "Havana (feat. Young Thug).mp3" ، "Queen_Bohemian_Rhapsody.mp3" ، "Set It All Free.mp3" ، "This Is What You Came For You (feat. Rihanna).mp3"]

برای افزودن موسیقی به عنوان یک گزینه ، فایل ها را در این پوشه کپی کنید. من شخصاً از Filezilla روی ssh استفاده می کنم. پوشه ای که می خواهید فایل ها را به آن اضافه کنید /opt/com.jonhaydock/disco-pi/public/audio است

مرحله 7: کد وب سایت

کد وب سایت
کد وب سایت

وقتی وارد وب سایت می شوید باید چیزی شبیه به این را ببینید.

اگر هشدار امنیتی مشاهده کردید به این دلیل است که ما از گواهی SSL خود امضا استفاده می کنیم. می توانید آن را نادیده بگیرید یا آن را به عنوان یک استثنا اضافه کنید.

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

اگر گزینه None را انتخاب کنید ، پخش موسیقی متوقف می شود.

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

این پیام از نوعی است که socket.io روی سرور برای گوش دادن به "ws2811" تنظیم شده است. این شامل یک آرایه از 50 عنصر است که بین 0 تا 255 هستند.

"ws2811" ، {"0": 251 ، "1": 252 ، "2": 241 ، "3": 217 ، "4": 193 ، "5": 164 ، "6": 148 ، "7": 139 ، "8": 110 ، "9": 96 ، "10": 81 ، "11": 67 ، "12": 72 ، "13": 66 ، "14": 60 ، "15": 60 ، "16": 63 ، "17": 54 ، "18": 37 ، "19": 30 ، "20": 31 ، "21": 26 ، "22": 13 ، "23": 3 ، " 24 ": 10 ،" 25 ": 7 ،" 26 ": 6 ،" 27 ": 0 ،" 28 ": 0 ،" 29 ": 0 ،" 30 ": 1 ،" 31 ": 8 ،" 32 ": 12 ، "33": 3 ، "34": 2 ، "35": 2 ، "36": 0 ، "37": 0 ، "38": 0 ، "39": 0 ، "40": 0 ، "41": 0 ، "42": 0 ، "43": 0 ، "44": 0 ، "45": 0 ، "46": 0 ، "47": 0 ، "48": 0 ، " 49 ": 0}

سرور از کتابخانه Node RPI WS281x Native (در حال بسته بندی کتابخانه WS281X Jeremy Garff) برای تغییر رنگ LED ها بر روی یک نوار LED WS2811 ، بر اساس داده های ارسال شده از طریق پورت شبکه استفاده می کند.

مرحله 8: در نهایت

Image
Image

شما باید LED های روی نوار را با موسیقی تغییر دهید ، بر اساس تجزیه و تحلیل Fast Fourier Transform که در صفحه وب انجام شده است.

امیدوارم از این کار لذت ببرید. به من بگو که با آن چه می کنی!

توجه: اگر مشکلی دارید

از آنجا که این کتابخانه و هر دو دستگاه صوتی رزبری پای از PWM استفاده می کنند ، نمی توان آنها را با هم استفاده کرد.

ممکن است لازم باشد ماژول هسته صوتی Broadcom را با ایجاد یک فایل /etc/modprobe.d/snd-blacklist.conf با

لیست سیاه snd_bcm2835

اگر دستگاه صوتی پس از لیست سیاه هنوز بارگیری می شود ، ممکن است لازم باشد آن را در فایل ماژول های /etc /توضیح دهید. در سیستم های بدون سر نیز ممکن است لازم باشد صدا را از طریق hdmi مجبور کنید

config.txt را ویرایش کرده و اضافه کنید:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

برای اعمال این تغییر ، راه اندازی مجدد مورد نیاز است

توصیه شده: