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

ديسكو بي: 8 خطوات (بالصور)
ديسكو بي: 8 خطوات (بالصور)

فيديو: ديسكو بي: 8 خطوات (بالصور)

فيديو: ديسكو بي: 8 خطوات (بالصور)
فيديو: نقل صور وفيديوهات من الهاتف الي الفلاشه 2024, يوليو
Anonim
ديسكو بي
ديسكو بي

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

يوضح كيفية إنشاء موقع ويب أساسي باستخدام Node.js عبر HTTPS واستخدام socket.io عبر WSS (مقبس ويب آمن).

يحتوي موقع الويب على صفحة واحدة ذات تصميم أساسي للغاية. تملأ صفحة الويب قائمة منسدلة بملفات الموسيقى الموجودة في المجلد العام / الصوت على الخادم. يؤدي تحديد خيار في القائمة إلى تشغيل ملف الموسيقى في صفحة الويب باستخدام عنصر صوت HTML 5. أثناء تشغيل ملف الموسيقى ، تستخدم صفحة الويب واجهة AudioContext لتحليل الموسيقى ، والتي يتم إرسالها بعد ذلك إلى الخادم عبر اتصال مقبس ويب آمن.

يستخدم الخادم الذي يعمل على Raspberry Pi مكتبة Node RPI WS281x الأصلية (تغلف مكتبة Jeremy Garff's WS281X) لتغيير ألوان مصابيح LED على شريط WS2811 LED ، بناءً على البيانات المرسلة عبر مقبس الويب.

يمكن العثور على رمز المثال هنا: disco-pi

الخطوة 1: المعدات

  1. Raspberry Pi - لقد استخدمت Raspberry Pi 2B الذي كنت أضعه حوله ، ولكن يمكنك الحصول على Raspberry Pi 3 Starter Kit مقابل حوالي 100 دولار كندي
  2. WS2811 LED Strip - كنت ألعب مع ALITOVE 16.4ft 150 بكسل WS2811. يأتي هذا مع وحدة تحكم ومصدر طاقة لحوالي 45-50 دولارًا كنديًا
  3. موصل برميل جاك - اشتريت واحدًا من متجر الإلكترونيات المحلي الخاص بي ، شيء من هذا القبيل. فقط تأكد مما إذا كان يناسب مصدر الطاقة الخاص بك
  4. موصلات / سلك الطائر - كان لدي بعض كبلات الموصل من أنثى إلى ذكر وبعض الأسلاك الصلبة قياس 22 ملقاة حولها

الخطوة 2: إعداد Raspberry Pi

نظام التشغيل

عادةً ما أستخدم أحدث إصدار من 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 install nodejs

قم بتثبيت git

sudo apt-get install git

الخطوة 3: إعداد رمز المثال

استنساخ رمز المثال

1. قم بإعداد مجلد أساسي للتثبيت فيه

cd / opt

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

2. استنساخ مثال مستودع git

استنساخ بوابة 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

opensl genrsa -out disco-pi-key.pem 2048.apk

2. إنشاء CSR (طلب توقيع الشهادة)

opensl req -جديد-key disco-pi-key.pem -out disco-pi-csr.pem

في هذه المرحلة ، سيُطلب منك بعض المعلومات لطلب الشهادة. نظرًا لأن هذه شهادة موقعة ذاتيًا ، فالأمر متروك لك في مدى دقة ملئ التفاصيل. هنا مثال

اسم البلد (رمز مكون من حرفين) [أستراليا]: CA

اسم الولاية أو المقاطعة (الاسم الكامل) [Some-State]: اسم المنطقة المحلية في كولومبيا البريطانية (على سبيل المثال ، المدينة) : اسم مؤسسة فانكوفر (على سبيل المثال ، الشركة) [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 Parameters

opensl dhparam -out dh_2048.pem 2048

قد يستغرق هذا من 15 إلى 20 دقيقة

الخطوة 5: توصيل الجهاز

توصيل الجهاز
توصيل الجهاز
توصيل الجهاز
توصيل الجهاز
توصيل الجهاز
توصيل الجهاز
توصيل الجهاز
توصيل الجهاز

تشغيل شريط LED

يتم تشغيل شريط LED بجهد 12 فولت. إن Raspberry Pi قادر فقط على إخراج 3.3 فولت أو 5 فولت وليس قادرًا على الإخراج في أي مكان بالقرب من الأمبيرات اللازمة لتشغيل العديد من مصابيح LED.

من المهم عدم توصيل مصدر طاقة 12 فولت بـ Raspberry Pi.

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

نفذ الخطوات التالية على مسؤوليتك الخاصة. أنا لا أتحمل أي مسؤولية عن أي شيء قد يحدث خطأ.

شريط LED

يحتوي شريط LED الخاص بي على ثلاثة أسلاك:

أحمر - +12 فولت

أسود - أرضي

الأخضر - البيانات

ملاحظة: يوجد Din و Dout - Data In and Data Out. تأكد من أنك تعمل مع نهاية شريط LED المكتوب عليه Din.

التأكد من أن قابس الأسطوانة غير متصل بمصدر الطاقة

1. قم بتوصيل السلك الأحمر من شريط LED بالجانب + لمقبس البرميل.

لقد استخدمت سلك ربط قياس 22 أبيض.

ضع السلك في الفتحة + في مقبس البرميل وثبته في مكانه.

ادفع الطرف الآخر من السلك في المقبس الموجود في مؤشر LED. تأكد من أنك متصل بالسلك الأحمر.

2. قم بتوصيل السلك الأسود من شريط LED إلى جانب قابس الأسطوانة.

لقد استخدمت سلك ربط قياس 22 أسود.

ضع السلك في الفتحة الموجودة في مقبس البرميل. في هذه المرحلة أيضًا ، ضع الطرف الذكري لأحد كبلات الموصل (السلك البني في الصورة) في نفس الفتحة وثبتهما في مكانهما.

ادفع الطرف الآخر من السلك الأسود في المقبس الموجود على مؤشر LED.

تأكد من أنك متصل بالسلك الأسود.

3. قم بتوصيل السلك الأخضر من شريط LED

خذ أحد كابلات الموصل من أنثى إلى ذكر. في صوري هذا هو السلك الأخضر.

ضع الطرف الذكر في مقبس LED بالسلك الأخضر.

هذا هو كابل البيانات.

فطيرة التوت

1. خذ كابل الموصل الأخضر وقم بتوصيله بـ Raspberry Pi GPIO.

تحتاج إلى توصيله بـ PCM_CLK (Pin 12 / GPIO 18)

2. خذ كابل الموصل الأسود وقم بتوصيله بـ Raspberry Pi GPIO.

تحتاج إلى توصيله بأحد الأسباب. أقترح عليك استخدام الدبوس 14 ، ولكن يمكنك أيضًا استخدام الدبوس 6 أو 9 أو 20 أو 25 أو 30 أو 34 أو 39.

ملاحظة: لكي يعمل هذا ، يجب أن يكون لمصدر طاقة LED و Raspberry Pi أرضية مشتركة. لاحظ أيضًا أنه يجب عليك عدم توصيل 12 فولت + (السلك الأحمر) بـ Raspberry Pi.

طاقة LED

يجب ألا تكون قادرًا على توصيل مصدر الطاقة 12 فولت بمقبس البرميل

يجب أن تضيء جميع مصابيح LED الموجودة على شريط LED الآن باللون الأبيض

الخطوة 6: الكود الجانبي للخادم

تشغيل الكود الجانبي للخادم

cd /opt/com.jonhaydock/disco-pi

بدء sudo npm

سيؤدي ذلك إلى بدء تشغيل خادم الويب والبدء في الاستماع إلى طلبات HTTPS و WSS.

المنفذ الافتراضي هو 443 ، ولكن يمكنك تجاوز ذلك بتعيين متغير بيئة قبل بدء الكود. على سبيل المثال

تصدير DISCO_PI_PORT = 1443

يحتوي شريط LED الخاص بي على 150 مصباحًا. يتم التحكم في هذه في مجموعات من الثلاثات. هذا يعني أنه لا يمكنني التحكم في كل مؤشر LED على حدة ، وأحتاج إلى إرسال معلومات كافية للتحكم في 50.

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

بدء sudo npm 10

يمكن العثور على رمز الخادم الرئيسي في ملف app.js. يبدأ هذا الملف خادم الويب HTTPS ويضيف أيضًا على socket.io للاستماع إلى طلبات websocket على نفس المنفذ.

للوصول إلى موقع الويب ، يجب عليك فتح متصفح ويب على جهاز الكمبيوتر الرئيسي (لقد اختبرت هذا فقط في Chrome) واستخدام عنوان IP الخاص بـ Raspberry Pi ، على سبيل المثال

10.0.1.2/

يمكنك معرفة عنوان IP الخاص بك من سطر أوامر Raspberry Pi.

ifconfig

سيقدم خادم الويب أي محتوى ضمن المجلد العام. يتم عرض صفحة index.html افتراضيًا.

لديها نقطة نهاية API - / api / audio. تبحث نقطة النهاية هذه عن أي ملفات ضمن المجلد العام / المجلد الصوتي وتعيد القائمة. على سبيل المثال

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

لإضافة الموسيقى كخيار ، انسخ الملفات إلى هذا المجلد. أنا شخصيا أستخدم Filezilla على ssh. المجلد الذي تريد إضافة الملفات إليه هو /opt/com.jonhaydock/disco-pi/public/audio

الخطوة 7: كود الموقع

كود الموقع
كود الموقع

عندما تضغط على موقع الويب ، يجب أن ترى شيئًا كهذا.

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

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

إذا حددت خيار بلا ، فسيتوقف تشغيل الموسيقى.

أثناء تشغيل ملف الموسيقى ، تستخدم صفحة الويب واجهة 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 الأصلية (تغلف مكتبة WS281X الخاصة بـ Jeremy Garff) لتغيير ألوان مصابيح LED على شريط WS2811 LED ، بناءً على البيانات المرسلة عبر مقبس الويب.

الخطوة 8: أخيرًا

Image
Image

يجب أن ترى مصابيح LED على الشريط تتغير لونها مع الموسيقى ، بناءً على تحليل Fast Fourier Transform الذي تم إجراؤه في صفحة الويب.

أتمنى أن تستمتع بهذا. دعني اعرف ماذا تفعل به

ملاحظة: إذا كان لديك أي مشاكل

نظرًا لأن هذه المكتبة وكلاهما الصوتي الموجود على متن Raspberry Pi يستخدمان PWM ، فلا يمكن استخدامهما معًا.

قد تحتاج إلى إدراج وحدة نواة الصوت من Broadcom في القائمة السوداء عن طريق إنشاء ملف /etc/modprobe.d/snd-blacklist.conf باستخدام

القائمة السوداء snd_bcm2835

إذا استمر تحميل جهاز الصوت بعد وضعه في القائمة السوداء ، فقد تحتاج أيضًا إلى التعليق عليه في ملف / etc / modules. في الأنظمة مقطوعة الرأس ، قد تحتاج أيضًا إلى فرض الصوت عبر HDMI

قم بتحرير config.txt وإضافة:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

يلزم إعادة التشغيل حتى يسري هذا التغيير

موصى به: