Mundarija:

Disko-pi: 8 qadam (rasmlar bilan)
Disko-pi: 8 qadam (rasmlar bilan)

Video: Disko-pi: 8 qadam (rasmlar bilan)

Video: Disko-pi: 8 qadam (rasmlar bilan)
Video: BUKA BUKA 2 !!! BU BOLA SINDIRIB QOYDIKU BU RAQSDI 2024, Noyabr
Anonim
Disko-pi
Disko-pi

Bu yo'riqnoma veb -brauzerda ijro etilgan musiqaga asoslangan Raspberry Pi -ni rangli LED tasmasini boshqarish uchun ishlatishni ko'rsatadi.

U HTTPS orqali Node.js yordamida asosiy veb -saytni yaratish va WSS (Secure Websocket) orqali socket.io -dan qanday foydalanishni ko'rsatadi.

Veb -sayt juda oddiy tuzilishga ega bo'lgan bitta sahifaga ega. Veb -sahifa serverdagi ommaviy/audio papkasida joylashgan musiqa fayllari bilan ochiladigan ro'yxatni to'ldiradi. Ro'yxatdagi variantni tanlash HTML 5 audio elementi yordamida veb -sahifadagi musiqa faylini ijro etadi. Musiqa faylini ijro etayotganda, veb -sahifa musiqani tahlil qilish uchun AudioContext interfeysidan foydalanadi va u serverga xavfsiz tarmoqli ulanish orqali yuboriladi.

Raspberry Pi -da ishlaydigan server veb -rozetka orqali yuborilgan ma'lumotlarga asoslanib, WS2811 LED tasmasidagi LEDlarning ranglarini o'zgartirish uchun Node RPI WS281x Native kutubxonasidan (Jeremi Garffning WS281X kutubxonasini o'rash) foydalanadi.

Misol kodini bu erda topish mumkin: disco-pi

1 -qadam: uskunalar

  1. Raspberry Pi - Men o'zim qo'ygan Raspberry Pi 2B -dan foydalandim, lekin siz SAPR 100 uchun Raspberry Pi 3 boshlang'ich to'plamini olishingiz mumkin.
  2. WS2811 LED chizig'i - Men ALITOVE 16.4ft 150 pikselli WS2811 bilan o'ynardim. Bu 45-50 SAPR uchun nazoratchi va quvvat manbai bilan birga keladi
  3. Barrel Jek ulagichi - Men mahalliy elektronika do'konidan shunday sotib oldim. Faqat quvvat manbaiga mos kelishiga ishonch hosil qiling
  4. Jumper ulagichlari / simlari - Menda bir nechta Ayol -Erkak konnektorli kabellar va 22 ta qattiq o'lchagichli simlar bor edi

2 -qadam: Raspberry Pi -ni sozlash

Operatsion tizim

Men odatda eng yangi Raspbian tuzilmasidan foydalanaman. Rasmni yuklab oling va SD -kartaga yozing. Agar siz Windows kompyuteridan foydalansangiz, tasvirni SD -kartaga yozish uchun Win32 Disk Imager -dan foydalanishingiz mumkin.

Node.js

Node.js -ning so'nggi versiyasini o'rnating. Yozish paytida men 8.9.1 dan foydalanmoqdaman

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

sudo apt-get nodejs ni o'rnating

Git o'rnatish

sudo apt-get install git

3 -qadam: Misol kodini o'rnatish

Misol kodini klonlang

1. O'rnatish uchun asosiy papkani o'rnating

cd /opt

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

2. Git omborini misolini klonlang

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

yoki

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

3. Qarama -qarshiliklarni o'rnating

CD disk disklari

npm o'rnatish

Bu 2-3 daqiqa davom etishi mumkin

4 -qadam: O'z -o'zidan imzolangan SSL sertifikatini yarating

1. Maxsus kalit faylini yarating

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

openssl genrsa-diskoteka-pi-key.pem 2048 yil

2. CSR yaratish (sertifikatga imzo chekish so'rovi)

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

Bu vaqtda sizdan sertifikat so'rovi uchun ba'zi ma'lumotlar so'raladi. Bu o'z -o'zidan imzolangan sertifikat bo'lib, tafsilotlarni qanchalik to'g'ri to'ldirish sizga bog'liq. Mana bir misol

Mamlakat nomi (2 harfli kod) [AU]: CA

Shtat yoki viloyat nomi (to'liq nomi) [Ba'zi shtatlar]: Britaniya Kolumbiyasi mahalliy nomi (masalan, shahar) : Vankuver tashkilotining nomi (masalan, kompaniya) [Internet Widgits Pty Ltd]: Disko Pi tashkilotining nomi (masalan, bo'lim) : Umumiy ism (masalan, server FQDN yoki SIZNING ismingiz) : disco-pi elektron pochta manzili : [email protected] qiyin parol : kompaniyaning ixtiyoriy nomi :

Bu misolda, parolni bo'sh qoldirish uchun Qaytish -ni bosing

3. Sertifikatni yarating

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

4. Qo'shimcha xavfsizlik uchun biz Diffie Hellman Parameters faylini ham yaratamiz

openssl dhparam -dh_2048.pem 2048

Bu 15-20 daqiqa davom etishi mumkin

5 -qadam: uskunani ulash

Uskunani ulash
Uskunani ulash
Uskunani ulash
Uskunani ulash
Uskunani ulash
Uskunani ulash
Uskunani ulash
Uskunani ulash

LED tasmasini quvvatlantirish

LED tasmasi 12 voltdan quvvatlanadi. Raspberry Pi faqat 3,3v yoki 5v kuchlanishiga ega va juda ko'p LEDlarni haydash uchun zarur bo'lgan amper yaqinida chiqara olmaydi.

12 voltli quvvat manbasini Raspberry Pi -ga ulamaslik muhim.

Mening chizig'imning ikkala uchida ham tarmoqqa ulangan qo'shimcha quvvat simlari bor edi. Men sizga boshqa uskunalar bilan aloqa qilmasligi uchun ularni yopishtirishni taklif qilaman.

Keyingi qadamlarni o'zingizning xavfingiz ostida bajaring. Men noto'g'ri bo'lishi mumkin bo'lgan narsa uchun javobgarlikni o'z zimmamga olmayman.

LED tasmasi

Mening LED chizig'imda uchta sim bor:

QIZIL - +12 volt

Qora - er

Yashil - ma'lumotlar

QAYD: Din va Dout bor - Ma'lumotlarni kiritish va chiqarish. LED chizig'ining oxiri bilan ishlayotganingizga ishonch hosil qiling.

Barrel Jek quvvat manbaiga ulanmaganligini ta'minlash

1. LED tasmasidan Qizil simni Barrel Jekning + tomoniga ulang.

Men oq 22 o'lchovli simni ishlatardim.

Simni bochkadagi + uyasiga joylashtiring va joyiga burab qo'ying.

Telning boshqa uchini LED dagi rozetkaga suring. Qizil sim bilan ulanganingizga ishonch hosil qiling.

2. Qora simni LED tasmasidan Barrel Jekning yon tomoniga ulang.

Men qora 22 o'lchagichli simni ishlatardim.

Simni bochkaning uyasidagi teshikka joylashtiring. Shu nuqtada, ulagich kabellaridan birining erkak uchini (rasmdagi jigarrang sim) bir teshikka joylashtiring va ikkalasini joyiga burab qo'ying.

Qora simning boshqa uchini LED dagi rozetkaga suring.

Qora sim bilan ulanganingizga ishonch hosil qiling.

3. LED tasmasidan yashil simni ulang

Ayol va erkak konnektor kabellaridan birini oling. Mening fotosuratlarimda bu yashil sim.

Erkak uchini yashil simli LED rozetkaga joylashtiring.

Bu ma'lumot kabeli.

Raspberry Pi

1. Yashil ulagich kabelini oling va uni Raspberry Pi GPIO -ga ulang.

Siz uni PCM_CLK ga ulashingiz kerak (Pin 12 / GPIO 18)

2. Qora ulagich kabelini oling va uni Raspberry Pi GPIO -ga ulang.

Siz uni maydonlardan biriga ulashingiz kerak. Men sizga 14 -pinni ishlatishni maslahat beraman, lekin siz 6, 9, 20, 25, 30, 34 yoki 39 -pinlardan ham foydalanishingiz mumkin.

ESLATMA: buning uchun LED quvvat manbai va Raspberry Pi umumiy asosga ega bo'lishi kerak. Shuni ham unutmangki, siz 12 volt + (qizil sim) ni Raspberry Pi ga ulashingiz shart emas.

LED quvvati

Siz 12 voltli quvvat manbaini barrel uyasiga ulay olmasligingiz kerak

Sizning LED tasmangizdagi barcha LEDlar oq rangda yonishi kerak

6 -qadam: Server tomoni kodi

Server tomoni kodini ishga tushirish

cd /opt/com.jonhaydock/disco-pi

sudo npm boshlang

Bu veb -serverni ishga tushiradi va HTTPS va WSS so'rovlarini tinglashni boshlaydi.

Standart port - 443, lekin siz kodni ishga tushirishdan oldin muhit o'zgaruvchisini o'rnatish orqali buni bekor qilishingiz mumkin. Masalan

eksport DISCO_PI_PORT = 1443

Mening LED chizig'imda 150 ta LED mavjud. Bular uchta guruhda nazorat qilinadi. Bu shuni anglatadiki, men har bir LEDni alohida nazorat qila olmayman va 50 -ni boshqarish uchun etarli ma'lumotni yuborishim kerak.

Agar sizda LED ko'p yoki kamroq bo'lsa, siz parametrni ishga tushirishga o'tish orqali boshqariladigan LEDlar sonini bekor qilishingiz mumkin. Masalan, agar siz faqat 10 ta LEDni boshqara olsangiz

sudo npm 10 boshlang

Asosiy server kodini app.js faylida topish mumkin. Bu fayl HTTPS veb -serverini ishga tushiradi, shuningdek, o'sha portdagi veb -soket so'rovlarini tinglash uchun socket.io -ga qo'shiladi.

Veb -saytga kirish uchun siz asosiy kompyuteringizda veb -brauzerni ochishingiz kerak (men buni faqat Chrome -da sinab ko'rdim) va Raspberry Pi -ning IP -manzilidan foydalaning, masalan.

10.0.1.2/

Siz IP -manzilingizni Raspberry Pi buyruq satridan bilib olishingiz mumkin.

ifconfig

Veb -server har qanday kontentni umumiy papkaga joylashtiradi. U index.html sahifasini ko'rsatishi kerak.

U bitta API tugatish nuqtasiga ega - /api /audio. Bu oxirgi nuqta umumiy/audio papkasida joylashgan fayllarni qidiradi va ro'yxatni qaytaradi. Masalan

["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "All Free Free.mp3", "This is You For For For (feat. Rihanna).mp3"]

Variant sifatida musiqa qo'shish uchun fayllarni ushbu papkaga nusxalash. Men shaxsan ssh orqali Filezilla -dan foydalanaman. Fayllarni qo'shmoqchi bo'lgan papka /opt/com.jonhaydock/disco-pi/public/audio

7 -qadam: veb -sayt kodi

Veb -sayt kodi
Veb -sayt kodi

Veb -saytga kirganingizda, shunga o'xshash narsani ko'rishingiz kerak.

Agar siz xavfsizlik ogohlantirishini ko'rsangiz, bu o'z-o'zidan imzolangan SSL sertifikatidan foydalanganligimiz bilan bog'liq. Siz buni e'tiborsiz qoldirishingiz yoki istisno sifatida qo'shishingiz mumkin.

Fayl nomini tanlashda HTML 5 audio elementining manbai. bu faylga o'rnatiladi. Tayyor bo'lgach, musiqa yangray boshlaydi. Qo'shiq tugagach, musiqa to'xtaydi.

Agar siz None variantini tanlasangiz, musiqa to'xtaydi.

Musiqa faylini ijro etayotganda, veb -sahifa musiqani tahlil qilish uchun AudioContext interfeysidan foydalanadi va u serverga xavfsiz tarmoqli ulanish orqali yuboriladi.

Xabar - bu serverdagi socket.io "ws2811" ni tinglash uchun sozlangan. U 0 dan 255 gacha bo'lgan 50 ta elementni o'z ichiga oladi.

"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}

Server veb -rozetka orqali yuborilgan ma'lumotlarga asoslanib, WS2811 LED tasmasidagi LEDlarning ranglarini o'zgartirish uchun Node RPI WS281x Native kutubxonasidan (Jeremi Garffning WS281X kutubxonasini o'rash) foydalanadi.

8 -qadam: Nihoyat

Image
Image

Veb -sahifada o'tkazilgan Fast Fourier Transform tahliliga asoslanib, chiziqdagi LEDlar musiqa bilan rangini o'zgartirishi kerak.

Umid qilamanki, bu sizga yoqadi. Bu bilan nima qilayotganingizni menga ayting!

QAYD: Agar sizda biron bir muammo bo'lsa

Ushbu kutubxona va Raspberry Pi bortidagi audiobut PWMdan foydalanganligi uchun ularni birgalikda ishlatish mumkin emas.

Siz /etc/modprobe.d/snd-blacklist.conf faylini yaratish orqali Broadcom audio yadro modulini qora ro'yxatga kiritishingiz kerak bo'lishi mumkin.

qora ro'yxat snd_bcm2835

Agar audio ro'yxat qora ro'yxatga kirgandan keyin ham yuklanayotgan bo'lsa, uni /etc /modules faylida ham izohlashingiz kerak bo'ladi. Boshsiz tizimlarda, shuningdek, hdmi orqali ovozni majburlash kerak bo'lishi mumkin

Config.txt -ni tahrirlang va qo'shing:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

Ushbu o'zgartirish kuchga kirishi uchun qayta yuklash talab qilinadi

Tavsiya: