جدول المحتويات:
- الخطوة 1: المعدات
- الخطوة 2: إعداد Raspberry Pi
- الخطوة 3: إعداد رمز المثال
- الخطوة 4: إنشاء شهادة SSL موقعة ذاتيًا
- الخطوة 5: توصيل الجهاز
- الخطوة 6: الكود الجانبي للخادم
- الخطوة 7: كود الموقع
- الخطوة 8: أخيرًا
فيديو: ديسكو بي: 8 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
يوضح هذا التوجيه كيفية استخدام 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: المعدات
- Raspberry Pi - لقد استخدمت Raspberry Pi 2B الذي كنت أضعه حوله ، ولكن يمكنك الحصول على Raspberry Pi 3 Starter Kit مقابل حوالي 100 دولار كندي
- WS2811 LED Strip - كنت ألعب مع ALITOVE 16.4ft 150 بكسل WS2811. يأتي هذا مع وحدة تحكم ومصدر طاقة لحوالي 45-50 دولارًا كنديًا
- موصل برميل جاك - اشتريت واحدًا من متجر الإلكترونيات المحلي الخاص بي ، شيء من هذا القبيل. فقط تأكد مما إذا كان يناسب مصدر الطاقة الخاص بك
- موصلات / سلك الطائر - كان لدي بعض كبلات الموصل من أنثى إلى ذكر وبعض الأسلاك الصلبة قياس 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: أخيرًا
يجب أن ترى مصابيح 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
يلزم إعادة التشغيل حتى يسري هذا التغيير
موصى به:
خوذة ديسكو ثلاثية الأبعاد قابلة للطباعة!: 11 خطوة (بالصور)
خوذة ديسكو ثلاثية الأبعاد قابلة للطباعة!: مستوحاة من خوذة Daft Punk 'Thomas' الكلاسيكية. أضيء الغرفة وكن موضع حسد جميع أصدقائك مع خوذة الديسكو المذهلة هذه التي تعمل بالطاقة من Arduino! ستحتاج إلى الوصول إلى طابعة ثلاثية الأبعاد ومكواة لحام لإكمال هذا المشروع. إذا كنت تريد
صندوق ديسكو LED: 7 خطوات (مع صور)
صندوق ديسكو LED: كيفية صنع صندوق ديسكو Led خاص بك
منظم سطح المكتب ديسكو: 8 خطوات (بالصور)
منظم سطح المكتب ديسكو: المواد: ثلاثي ، السماكة: 3 مم كم عدد الألواح الخشبية يعتمد على حجم lasercutter الخاص بك … اضبط الملف على لوحة الخشب ذات الحجم الأقصى … ربما تحتاج إلى أكثر من لوحة واحدة (ضع ذلك في الاعتبار). 6 مصابيح LED فلاشية (استخدمت 7 مصابيح فلاش ملونة) أفا
ديسكو لانهائي: 6 خطوات (بالصور)
Infinite Disco: في هذا المشروع ، صنعت مرآة لا متناهية تعتمد على ثنائي السطوح يتفاعل مع الصوت
ضوء ديسكو LED في جرة: 11 خطوة (بالصور)
ضوء ديسكو LED في جرة!: هذا واحد من إدخالاتي لـ Let It يتوهج! منافسة. إليك إرشادات لطيفة وبسيطة لأي شخص بدأ للتو في استخدام مصابيح LED واللحام والإلكترونيات. إنها تستخدم الأجزاء الأساسية ، دون أي تلاعب بالميكروكونترولر أو المؤقتات (ممتعة مثل تلك