Mündəricat:
- Addım 1: Avadanlıq
- Addım 2: Raspberry Pi qurmaq
- Addım 3: Nümunə Kodunun Qurulması
- Addım 4: Öz imzalı SSL Sertifikatı yaradın
- Addım 5: Avadanlıqların birləşdirilməsi
- Addım 6: Server Yan Kod
- Addım 7: Veb sayt kodu
- Addım 8: Nəhayət
Video: Disko-pi: 8 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Bu təlimat, veb brauzerdən çalınan musiqiyə əsaslanaraq rəngli bir LED şeridini idarə etmək üçün Raspberry Pi -dən necə istifadə olunacağını göstərir.
HTTPS üzərindən Node.js istifadə edərək əsas veb saytının necə yaradılacağını və WSS (Secure Websocket) üzərindən socket.io istifadə etməyi göstərir.
Veb saytın çox sadə bir quruluşa malik tək səhifəsi var. Veb səhifə, serverdəki ictimai/audio qovluğunda yerləşən musiqi faylları ilə açılan siyahını doldurur. Siyahıdan bir seçim seçsəniz, HTML 5 audio elementindən istifadə edərək veb səhifədəki musiqi faylını oxuyursunuz. Musiqi faylı çalınarkən, veb səhifəsi musiqini təhlil etmək üçün AudioContext interfeysindən istifadə edir və daha sonra etibarlı bir veb yuvası bağlantısı ilə serverə göndərilir.
Bir Raspberry Pi üzərində işləyən server, veb yuvası vasitəsilə göndərilən məlumatlara əsaslanaraq, WS2811 LED şeridindəki LED -lərin rənglərini dəyişdirmək üçün Node RPI WS281x Native kitabxanasını (Jeremy Garff -un WS281X kitabxanasını bağlamaq) istifadə edir.
Nümunə kodunu burada tapa bilərsiniz: disco-pi
Addım 1: Avadanlıq
- Raspberry Pi - Ətrafımda qoyduğum bir Raspberry Pi 2B istifadə etdim, ancaq CAD 100 ətrafında Raspberry Pi 3 Başlanğıc dəsti əldə edə bilərsiniz.
- WS2811 LED Strip - ALITOVE 16.4ft 150 Piksel WS2811 ilə oynayırdım. Bu, bir nəzarətçi və təxminən CAD 45-50 üçün bir enerji təchizatı ilə gəlir
- Barrel Jack Connector - Yerli elektronika mağazamdan belə bir şey aldım. Yalnız enerji təchizatına uyğun olub olmadığını yoxlayın
- Jumper Konnektorları / Tel - Məndə bəzi Dişi -Kişi konnektoru kabelləri və ətrafda uzanan 22 Ölçü Qatı Bağlayıcı tel var idi
Addım 2: Raspberry Pi qurmaq
Əməliyyat sistemi
Adətən ən son Raspbian quruluşundan istifadə edirəm. Şəkli yükləyin və SD karta yazın. Windows kompüterindən istifadə edirsinizsə, şəkli SD Karta yazmaq üçün Win32 Disk Imager istifadə edə bilərsiniz.
Node.js
Node.js -in son versiyasını quraşdırın. Yazı zamanı 8.9.1 istifadə edirəm
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get nodejs quraşdırın
Git quraşdırın
sudo apt-get install git
Addım 3: Nümunə Kodunun Qurulması
Nümunə kodunu klonlayın
1. Qurmaq üçün bir əsas qovluq qurun
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Misal git deposunu klonlaşdırın
git klonu https://github.com/haydockjp/disco-pi.git"
və ya
git clone [email protected]: haydockjp/disco-pi.git
3. Asılılıqları quraşdırın
cd diskoteka
npm quraşdırın
Bu 2-3 dəqiqə çəkə bilər
Addım 4: Öz imzalı SSL Sertifikatı yaradın
1. Şəxsi açar faylı yaradın
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa-diskoteka-pi-key.pem 2048
2. CSR (Sertifikat İmza İstəyi) yaradın
openssl req -yeni -key diskoteka-pi-key.pem -çıxış diskotekası-pi-csr.pem
Bu nöqtədə sertifikat sorğusu üçün bəzi məlumatlar istənəcək. Bu öz -özünə imzalanmış bir sertifikat olduğu üçün detalları nə qədər düzgün doldurmağınız sizə bağlıdır. Burada bir nümunə var
Ölkə Adı (2 hərf kodu) [AU]: CA
Əyalət və ya İl Adı (tam adı) [Bəzi Ştatlar]: British Columbia Yer Adı (məsələn, şəhər) : Vancouver Təşkilatının Adı (məsələn, şirkət) [Internet Widgits Pty Ltd]: Disco Pi Təşkilat Biriminin Adı (məsələn, bölmə)) : Ümumi Ad (məsələn, server FQDN və ya SİZİN adınız) : disco-pi E-poçt ünvanı : [email protected] Çağırış parol : İsteğe bağlı bir şirkət adı :
Bu nümunədə, çağırış parolunu boş buraxmaq üçün geri qayıtmaq kifayətdir
3. Sertifikatı yaradın
openssl x509 -req -günlər 1095 -diskoda-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Əlavə təhlükəsizlik üçün bir Diffie Hellman Parameters faylı da yaradacağıq
openssl dhparam -dh_2048.pem 2048
Bu 15-20 dəqiqə çəkə bilər
Addım 5: Avadanlıqların birləşdirilməsi
LED şeridini gücləndirmək
LED şeridi 12 volt gücündədir. Raspberry Pi yalnız 3.3v və ya 5v çıxış gücünə malikdir və bu qədər LED idarə etmək üçün lazım olan amper yaxınlığında heç bir yerdə çıxış edə bilməz.
12 voltluq enerji mənbəyini Raspberry Pi -yə bağlamamaq vacibdir.
Zolağımın hər iki ucunda da zolağa bağlı əlavə elektrik naqilləri vardı. Təklif edirəm ki, digər avadanlıqlarınızla təmas etməsinlər.
Növbəti addımları öz riskiniz altında edin. Səhv ola biləcək heç bir şeyə görə məsuliyyət daşımıram.
LED şeridi
LED şeridimdə üç tel var:
QIRMIZI - +12 volt
QARA - Zəmin
GREEN - Məlumat
QEYD: Din və Dout var - Məlumat Daxil və Məlumat Çıxar. Din yazan LED şeridin ucu ilə işlədiyinizə əmin olun.
Barel Cekinin enerji təchizatına bağlı olmadığını təmin etmək
1. LED şeridindəki Qırmızı teli Barrel Jakının + tərəfinə bağlayın.
Ağ 22 ölçülü bir tel bağladım.
Teli barrel yuvasındakı + yuvasına qoyun və vidalayın.
Telin digər ucunu LEDdəki yuvaya itələyin. Qırmızı tellə bağladığınızdan əmin olun.
2. Qara teli LED şeridindən Barrel Jakının yan tərəfinə bağlayın.
Qara bir 22 ölçülü tel bağladım.
Teli lülə yuvasındakı yuvaya yerləşdirin. Eyni zamanda, bağlayıcı kabellərdən birinin (ucundakı qəhvəyi tel) ucunu eyni çuxura yerləşdirin və hər ikisini yerində vidalayın.
Qara telin digər ucunu LED -in yuvasına itələyin.
Qara tellə bağladığınızdan əmin olun.
3. Yaşıl teli LED şeridindən bağlayın
Dişi -kişi bağlayıcı kabellərdən birini götürün. Şəkillərimdə bu yaşıl teldir.
Kişi ucunu yaşıl tel ilə LED yuvasına yerləşdirin.
Bu məlumat kabelidir.
Moruq Pi
1. Yaşıl bağlayıcı kabelini götürün və Raspberry Pi GPIO -ya qoşun.
PCM_CLK -ya (Pin 12 / GPIO 18) bağlamalısınız.
2. Qara bağlayıcı kabelini götürün və Raspberry Pi GPIO -ya qoşun.
Bunu əsaslardan birinə bağlamalısınız. 14 pin istifadə etməyi təklif edirəm, ancaq 6, 9, 20, 25, 30, 34 və ya 39 pinlərindən də istifadə edə bilərsiniz.
DİQQƏT: bunun üçün LED enerji mənbəyi ilə Raspberry Pi -nin ortaq bir zəmini olmalıdır. Həm də unutmayın ki, 12 Volt + (Qırmızı tel) Raspberry Pi -yə qoşmamalısınız.
LED Gücü
12 voltluq enerji təchizatını barel jakına qoşa bilməməlisiniz
LED şeridinizdəki bütün LEDlər indi BEYAZ yanmalıdır
Addım 6: Server Yan Kod
Server tərəfi kodunu işə salın
cd /opt/com.jonhaydock/disco-pi
sudo npm başlayın
Bu veb serveri işə salacaq və HTTPS və WSS sorğularını dinləməyə başlayacaq.
Varsayılan liman 443 -dir, ancaq kodu işə salmadan əvvəl mühit dəyişənini təyin edərək bunu ləğv edə bilərsiniz. Misal üçün
ixrac DISCO_PI_PORT = 1443
Mənim LED şeridimdə 150 LED var. Bunlar üç qrup halında idarə olunur. Bu o deməkdir ki, hər bir LED -i ayrı -ayrılıqda idarə edə bilmirəm və 50 -ni idarə etmək üçün kifayət qədər məlumat göndərməliyəm.
LED -iniz az və ya çox olarsa, işə salmaq üçün bir parametrə keçərək nəzarət etdiyiniz LED sayını ləğv edə bilərsiniz. Məsələn, yalnız 10 LED -i idarə edə bilsəniz
sudo npm 10 -da başlayın
Əsas server kodunu app.js faylında tapa bilərsiniz. Bu fayl HTTPS veb serverini işə salır və eyni portdakı webocket istəklərini dinləmək üçün socket.io -ya əlavə edir.
Veb sayta daxil olmaq üçün əsas kompüterinizdə bir veb brauzeri açmalısınız (bunu yalnız Chrome -da sınamışam) və Raspberry Pi -nin IP ünvanını istifadə etməlisiniz.
10.0.1.2/
IP ünvanınızı Raspberry Pi əmr satırından öyrənə bilərsiniz.
ifconfig
Veb serveri, ümumi qovluqdakı hər hansı bir məzmuna xidmət edəcək. Varsayılan olaraq index.html səhifəsini göstərir.
Bir API son nöqtəsi var - /api /audio. Bu son nöqtə ictimai/audio qovluğunun altındakı hər hansı bir faylı axtarır və siyahını qaytarır. Misal üçün
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This is For You For For (feat. Rihanna).mp3"]
Seçim olaraq musiqi əlavə etmək üçün faylları bu qovluğa kopyalayın. Mən şəxsən ssh üzərində Filezilla'dan istifadə edirəm. Fayl əlavə etmək istədiyiniz qovluq /opt/com.jonhaydock/disco-pi/public/audio
Addım 7: Veb sayt kodu
Veb sayta daxil olanda belə bir şey görməlisən.
Təhlükəsizlik xəbərdarlığı görürsünüzsə, bunun səbəbi öz-özünə imzalanmış SSL sertifikatı istifadə etməyimizdir. İstisna olaraq bunu göz ardı edə və ya əlavə edə bilərsiniz.
Bir fayl adı seçərkən, HTML 5 audio elementinin mənbəyi. həmin fayla təyin olunacaq. Hazır olduqdan sonra musiqi çalmağa başlayacaq. Mahnı bitdikdən sonra musiqi dayanacaq.
Yox seçimini seçsəniz, musiqi çalınmayacaq.
Musiqi faylı çalınarkən, veb səhifəsi musiqini təhlil etmək üçün AudioContext interfeysindən istifadə edir və daha sonra etibarlı bir veb yuvası bağlantısı ilə serverə göndərilir.
Mesaj, serverdəki socket.io -nun "ws2811" sözünü dinləmək üçün qurulduğu tipdir. 0 ilə 255 arasında olan 50 elementdən ibarət bir sıra ehtiva edir.
"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 yuvası vasitəsilə göndərilən məlumatlara əsaslanaraq, WS2811 LED şeridindəki LED -lərin rənglərini dəyişdirmək üçün Node RPI WS281x Native kitabxanasından (Jeremy Garffun WS281X kitabxanasını bükməklə) istifadə edir.
Addım 8: Nəhayət
Veb səhifədə edilən Fast Fourier Transform analizinə əsaslanaraq, zolaqdakı LED -lərin musiqi ilə birlikdə rəng dəyişdiyini görməlisiniz.
Ümid edirəm bundan zövq alırsınız. Bununla nə etdiyinizi mənə bildirin!
QEYD: Hər hansı bir probleminiz varsa
Bu kitabxana və göyərtədəki Raspberry Pi audioboth PWM -dən istifadə etdikləri üçün birlikdə istifadə edilə bilməz.
İlə /etc/modprobe.d/snd-blacklist.conf faylını yaradaraq Broadcom audio kernel modulunu qara siyahıya salmalı ola bilərsiniz.
qara siyahı snd_bcm2835
Qara siyahıdan sonra səs cihazı hələ də yüklənirsə, onu /etc /modules faylında da şərh etməyiniz lazım ola bilər. Başsız sistemlərdə səsi hdmi vasitəsi ilə məcbur etmək də lazım ola bilər
Config.txt faylını redaktə edin və əlavə edin:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Bu dəyişikliyin qüvvəyə minməsi üçün yenidən başlatma tələb olunur
Tövsiyə:
Portativ Disko V2 -Səs İdarə Edilən LEDlər: 11 Addım (Şəkillərlə birlikdə)
Portativ Disko V2 -Səsli İdarə Edilən LEDlər: İlk portativ diskotekamdan bəri elektronika səyahətimlə uzun bir yol qət etdim. Orijinal quruluşda, prototip lövhəsində bir dövrə vurdum və səliqəli, kiçik bir cib diskotekası qurmağı bacardım. Bu dəfə öz PCB -ni hazırladım
Light-Up Disko Masası: 27 Addım (Şəkillərlə birlikdə)
İşıqlandırıcı Disko Masası: Hər mənzilin möhtəşəm mebellərə ehtiyacı var, bəs niyə özünüz hazırlamırsınız? Bu sehpa, müxtəlif özelleştirilebilir naxışlara və rənglərə işıq saçan LED şeritləri ehtiva edir. İşıqlar bir Arduino və gizli düymə ilə idarə olunur və hər şey
Disko Masaüstü Təşkilatçısı: 8 addım (şəkillərlə)
Disko Masaüstü Təşkilatçısı: Materiallar: tripleks, qalınlığı: 3mm Neçə taxta lövhə, lazer kəsicinizin nə qədər böyük olduğuna bağlıdır … faylı maksimum ölçüdə taxta lövhəyə düzəldin … bəlkə də 1 -dən çox boşqaba ehtiyacınız var (bunu unutmayın). 6 x flaş led (7 rəngli flaş led istifadə etdim)
Sonsuz Disko: 6 addım (şəkillərlə)
Sonsuz Disko: Bu layihədə, səsə reaksiya verən bir dodecahedrona əsaslanan bir sonsuz güzgü hazırladım
Kavanozda LED Disko İşıq!: 11 addım (şəkillərlə)
Bir Kavanozda LED Disko İşıq !: Bu, Gəlin Parlasın! Müsabiqə. LEDlər, lehimləmə və elektronika ilə başlayan hər kəs üçün gözəl, sadə bir təlimatdır. Əsas hissələrdən istifadə edir, mikrokontroller və ya taymerlərlə heç bir əlaqəsi yoxdur (bu qədər əyləncəli