Mündəricat:

Disko-pi: 8 addım (şəkillərlə)
Disko-pi: 8 addım (şəkillərlə)

Video: Disko-pi: 8 addım (şəkillərlə)

Video: Disko-pi: 8 addım (şəkillərlə)
Video: Pərdə arxası #2 - Fahişə həyatı - uşaqlar baxmasın 2024, Noyabr
Anonim
Disko-pi
Disko-pi

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

  1. 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.
  2. 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
  3. 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
  4. 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

Avadanlıq Bağlanması
Avadanlıq Bağlanması
Avadanlıq Bağlanması
Avadanlıq Bağlanması
Avadanlıq Bağlanması
Avadanlıq Bağlanması
Avadanlıq Bağlanması
Avadanlıq Bağlanması

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 sayt kodu
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

Image
Image

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ə: