Mundarija:
- 1 -qadam: uskunalar
- 2 -qadam: Raspberry Pi -ni sozlash
- 3 -qadam: Misol kodini o'rnatish
- 4 -qadam: O'z -o'zidan imzolangan SSL sertifikatini yarating
- 5 -qadam: uskunani ulash
- 6 -qadam: Server tomoni kodi
- 7 -qadam: veb -sayt kodi
- 8 -qadam: Nihoyat
Video: Disko-pi: 8 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
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
- 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.
- 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
- Barrel Jek ulagichi - Men mahalliy elektronika do'konidan shunday sotib oldim. Faqat quvvat manbaiga mos kelishiga ishonch hosil qiling
- 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
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 -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
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:
Portativ Disko V2 -Ovozli boshqariladigan LEDlar: 11 qadam (rasmlar bilan)
Portativ Disko V2 -Ovozli boshqariladigan LEDlar: Men birinchi portativ diskotekani yaratganimdan buyon elektronika sohasida uzoq yo'lni bosib o'tdim. Asl qurilishda men prototip taxtasida sxemani sindirdim va toza, kichik cho'ntak diskotekasini qurishga muvaffaq bo'ldim. Bu safar men o'z shaxsiy PCB -ni ishlab chiqdim
Led Disko qutisi: 7 qadam (rasmlar bilan)
Led diskoteka qutisi: O'zingizning Led diskotekangizni qanday qilish kerak
Disko ish stoli tashkilotchisi: 8 qadam (rasmlar bilan)
Disko ish stoli tashkilotchisi: Materiallar: tripleks, qalinligi: 3 mm Qancha yog'och plitalar sizning lazer kesgichingizning qanchalik katta ekanligiga bog'liq … faylni maksimal o'lchamdagi yog'och plastinka ustiga o'rnating … balki sizga 1 ta plastinkadan ko'proq kerak bo'lishi mumkin (buni yodda saqlang). 6 x chiroqlar (men 7 ta rangli chiroqlar) ishlatganman
Disko ichimliklar qirg'og'i: 4 qadam (rasmlar bilan)
Disco Drinks Coaster: Garchi biz Buyuk Britaniyaning Kembrij tashqarisida yashasak -da, xotinim fojiali tarzda Las -Vegasdagi hamma narsaga qaram bo'lgan. So'nggi tashrifimizdan qariyb olti oy o'tdi, u yorqin chiroqlar va kokteyllar uchun yig'iladi. Ba'zi narsalar ichimlikni boshqalarga qaraganda yoqimli qiladi
Vaqt o'tishi bilan rasmlar uchun kamera osonlashtirildi: 22 qadam (rasmlar bilan)
Vaqt o'tishi bilan suratga olish uchun kamera osonlashtirildi. Men boshqa ko'rsatmalarni vaqtni tez suratga olish filmlarini suratga olishni tekshirib ko'rdim. U kino qismini juda yaxshi yoritgan. U filmlar yaratish uchun yuklab olishingiz mumkin bo'lgan bepul dasturiy ta'minot haqida gapirib berdi. Men o'z -o'zimga aytdim, men o'ylaymanki, agar men qila olsam