فهرست مطالب:
- مرحله 1: تجهیزات
- مرحله 2: راه اندازی رزبری پای
- مرحله 3: تنظیم کد نمونه
- مرحله 4: یک گواهی SSL خود امضا ایجاد کنید
- مرحله 5: اتصال سخت افزار
- مرحله 6: کد سمت سرور
- مرحله 7: کد وب سایت
- مرحله 8: در نهایت
تصویری: Disco-pi: 8 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این دستورالعمل نحوه استفاده از 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: تجهیزات
- Raspberry Pi - من از Raspberry Pi 2B که در اطراف آن قرار داشتم استفاده کردم ، اما شما می توانید یک Raspberry Pi 3 Starter Kit با قیمت حدود 100 CAD تهیه کنید
- WS2811 LED Strip - من با ALITOVE 16.4ft 150 Pixels WS2811 بازی می کردم. این دستگاه دارای یک کنترلر و منبع تغذیه حدود 45-50 CAD است
- Barrel Jack Connector - من یکی از مغازه لوازم الکترونیکی محلی خود را خریدم ، چیزی شبیه به این. فقط مطمئن شوید که منبع تغذیه شما مناسب است یا خیر
- اتصالات بلوز / سیم - من تعدادی کابل اتصال زن و مرد و تعدادی سیم سنج 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: در نهایت
شما باید 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
برای اعمال این تغییر ، راه اندازی مجدد مورد نیاز است
توصیه شده:
قابل حمل Disco V2 -LED های کنترل صدا: 11 مرحله (همراه با تصاویر)
LED های قابل حمل Disco V2 -Sound Controlled LEDs: من از زمانی که اولین دیسکو قابل حمل خود را ساخته ام ، راه زیادی را در سفر با وسایل الکترونیکی طی کرده ام. در ساخت اولیه ، من یک مدار روی نمونه اولیه را هک کردم و موفق شدم یک دیسکو جیبی مرتب و کوچک بسازم. این بار من PCB خودم را طراحی کردم و
چگونه: نصب Raspberry PI 4 Headless (VNC) با Rpi-imager و تصاویر: 7 مرحله (همراه با تصاویر)
چگونه: نصب Raspberry PI 4 Headless (VNC) با Rpi-imager و تصاویر: من قصد دارم از این Rapsberry PI در چندین پروژه سرگرم کننده در وبلاگم استفاده کنم. به راحتی آن را بررسی کنید. من می خواستم دوباره به استفاده از Raspberry PI بپردازم ، اما در مکان جدیدم صفحه کلید یا موس نداشتم. مدتی بود که من یک تمشک راه اندازی کردم
نمایش اسلاید تصاویر تعطیلات خود را با لمس سحر و جادو!: 9 مرحله (همراه با تصاویر)
نمایش اسلاید تصاویر خود را با لمس جادو! برای مطابقت با پرچم و موضوع کشوری که من از آن دیدن می کنم (در این مورد ، سیسیل). تی
Disco Desktop Organizer: 8 مرحله (همراه با تصاویر)
Disco Desktop Organizer: مواد: سه تایی ، ضخامت: 3 میلیمتر چند صفحه چوبی بستگی به اندازه لیزر برش شما دارد … فایل را روی حداکثر اندازه صفحه چوبی خود تنظیم کنید … شاید به بیش از 1 بشقاب نیاز دارید (این را در نظر داشته باشید). 6 عدد LED فلاش (من از LED های فلش 7 رنگی استفاده کردم) ava
تطبیق یک گوشی تلفن همراه با تلفن همراه: 7 مرحله (همراه با تصاویر)
انطباق یک گوشی تلفن همراه با یک تلفن همراه: توسط بیل ریو ([email protected]) اقتباس شده برای دستورالعمل ها توسط موس ([email protected]) سلب مسئولیت: روش شرح داده شده در اینجا ممکن است برای شما کارساز نباشد گرفتن. اگر کار نمی کند ، یا اگر چیزی را خراب می کنید ، m نیست