Përmbajtje:

Disco-pi: 8 hapa (me fotografi)
Disco-pi: 8 hapa (me fotografi)

Video: Disco-pi: 8 hapa (me fotografi)

Video: Disco-pi: 8 hapa (me fotografi)
Video: Cllevio Serbiano - Edi Rama 44 2024, Korrik
Anonim
Disko-pi
Disko-pi

Ky udhëzues tregon se si të përdorni një Raspberry Pi për të kontrolluar një shirit LED me ngjyrë, bazuar në muzikën e luajtur nga një shfletues uebi.

Ajo tregon se si të krijoni një uebfaqe bazë duke përdorur Node.js mbi HTTPS dhe përdorni socket.io mbi WSS (Secure Websocket).

Faqja e internetit ka një faqe të vetme e cila ka një paraqitje shumë themelore. Faqja e internetit mbush një listë zbritëse me skedarë muzikorë, të cilët gjenden në dosjen publike/audio në server. Përzgjedhja e një opsioni në listë luan skedarin muzikor në faqen e internetit duke përdorur elementin audio HTML 5. Ndërsa luani skedarin muzikor, faqja në internet përdor ndërfaqen AudioContext për të analizuar muzikën, e cila më pas i dërgohet serverit përmes një lidhjeje të sigurt websocket.

Serveri që funksionon në një Raspberry Pi përdor bibliotekën Node RPI WS281x Native (duke mbështjellur bibliotekën e Jeremy Garff WS281X) për të ndryshuar ngjyrat e LED -ve në një shirit LED WS2811, bazuar në të dhënat e dërguara përmes rrjetit në internet.

Kodi shembull mund të gjendet këtu: disko-pi

Hapi 1: Pajisjet

  1. Raspberry Pi - Kam përdorur një Raspberry Pi 2B që e kisha vendosur, por ju mund të merrni një Kit Raspberry Pi 3 Starter për rreth 100 CAD
  2. WS2811 LED Rrip - Unë isha duke luajtur me ALITOVE 16.4ft 150 Pixel WS2811. Kjo vjen me një kontrollues dhe një furnizim me energji elektrike për rreth 45-50 CAD
  3. Barrel Jack Connector - Bleva një nga dyqani im elektronik lokal, diçka si kjo. Vetëm sigurohuni nëse i përshtatet furnizimit tuaj me energji elektrike
  4. Lidhës Jumper / Wire - Unë kisha disa kabllo lidhës Femër në Mashkull dhe disa tela të lidhur 22 matës të fortë të shtrirë përreth

Hapi 2: Vendosja e Raspberry Pi

Sistemi Operativ

Unë zakonisht përdor ndërtimin më të fundit Raspbian. Shkarkoni imazhin dhe shkruani atë në kartën SD. Nëse jeni duke përdorur një kompjuter Windows, mund të përdorni Win32 Disk Imager për të shkruar imazhin në Kartën SD.

Nyja.js

Instaloni versionin më të fundit të Node.js. Në kohën e shkrimit unë jam duke përdorur 8.9.1

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

sudo apt-get instaloni nodejs

Instaloni git

sudo apt-get install git

Hapi 3: Vendosja e Kodit Shembull

Klononi kodin shembull

1. Krijoni një dosje bazë për tu instaluar

cd /opt

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

2. Klononi depon e shembullit git

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

ose

git klon [email protected]: haydockjp/disko-pi.git

3. Instaloni varësitë

cd disko-pi

instaloni npm

Kjo mund të zgjasë 2-3 minuta

Hapi 4: Krijoni një Certifikatë SSL të Vetë -Nënshkruar

1. Krijoni një skedar privat të çelësit

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

openssl genrsa -out disco-pi-key.pem 2048

2. Krijoni një CSR (Kërkesë për nënshkrimin e certifikatës)

openssl req -i ri-kyç disko-pi-kyç.pem-jashtë disko-pi-csr.pem

Në këtë pikë do t'ju kërkohet disa informacione për kërkesën e certifikatës. Meqenëse kjo është një certifikatë e vetë -nënshkruar, varet nga ju se sa saktësisht i plotësoni detajet. Këtu është një shembull

Emri i Shtetit (kodi me 2 shkronja) [AU]: CA

Emri i Shtetit ose Provincës (emri i plotë) [Disa Shtete]: Emri i Lokalitetit të British Columbia (p.sh., qyteti) : Emri i Organizatës Vancouver (p.sh., kompania) [Internet Widgits Pty Ltd]: Emri i Njësisë Organizative Disco Pi (p.sh., seksioni) : Emri i zakonshëm (p.sh. serveri FQDN ose emri YT) : disko-pi Adresa e emailit : [email protected] Një fjalëkalim sfidues : Një emër opsional i kompanisë :

Në këtë shembull, thjesht shtypni kthimin për ta lënë fjalëkalimin e sfidës bosh

3. Gjeneroni certifikatën

openssl x509 -req -ditë 1095 -në disko-pi-csr.pem -signkey disko-pi-key.pem -out disko-pi-cert.pem

4. Për siguri shtesë ne gjithashtu do të krijojmë një skedar Diffie Hellman Parameters

openssl dhparam -jashtë dh_2048.pem 2048

Kjo mund të zgjasë 15-20 minuta

Hapi 5: Lidhja e harduerit

Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit

Fuqizimi i shiritit LED

Shiriti LED mundësohet nga 12 volt. Raspberry Pi është vetëm me kapacitet 3.3v ose 5v dhe nuk është i aftë të dalë diku pranë amperit të nevojshëm për të drejtuar kaq shumë LED.

Isshtë e rëndësishme të mos lidhni furnizimin me energji 12 volt me Raspberry Pi.

Shiriti im gjithashtu kishte tela shtesë të energjisë të lidhur me shiritin në të dyja anët. Unë sugjeroj që t'i lidhni ato në mënyrë që të mos kontaktojnë me ndonjë nga pajisjet tuaja të tjera.

Kryeni hapat e ardhshëm në rrezikun tuaj. Unë nuk mbaj përgjegjësi për asgjë që mund të shkojë keq.

Rrip LED

Shiriti im LED ka tre tela:

KUQ - +12 Volt

E ZE - Tokë

GREEN - Të dhënat

SH NOTNIM: ka një Din dhe një Dout - Të dhënat në dhe të dhëna jashtë. Sigurohuni që jeni duke punuar me fundin e shiritit LED që thotë Din.

Sigurohuni që kapaku i fuçisë të mos jetë i lidhur me furnizimin me energji elektrike

1. Lidhni telin e Kuq nga shiriti LED në anën + të kapëses së fuçisë.

Kam përdorur një tela të bardhë me 22 matës.

Vendoseni telin në çarë + në folenë e fuçisë dhe vidhoseni në vend.

Shtyjeni skajin tjetër të telit në prizë në LED. Sigurohuni që jeni duke u lidhur me tela të kuq.

2. Lidhni telin e Zi nga shiriti LED në anën e kapëses së fuçisë.

Kam përdorur një tel të zi me 22 matës.

Vendoseni telin në vrimën - në prizën e fuçisë. Në këtë pikë vendosni edhe skajin mashkullor të njërit prej kabllove lidhës (tela ngjyrë kafe në foto) në të njëjtën vrimë dhe vidhosini të dy në vend.

Shtyjeni skajin tjetër të telit të zi në prizë në LED.

Sigurohuni që jeni duke u lidhur me tela të zezë.

3. Lidhni tela jeshile nga shiriti LED

Merrni një nga kabllot lidhëse femërore në mashkullore. Në fotot e mia kjo është tela jeshile.

Vendoseni skajin mashkullor në prizën LED me tela të gjelbër.

Ky është kablloja e të dhënave.

Raspberry Pi

1. Merrni kabllon e gjelbër të lidhësit dhe lidheni atë me Raspberry Pi GPIO.

Ju duhet ta lidhni atë me PCM_CLK (Pin 12 / GPIO 18)

2. Merrni kabllon e zezë të lidhësit dhe lidheni atë me Raspberry Pi GPIO.

Ju duhet ta lidhni atë në një nga bazat. Unë sugjeroj që të përdorni pin 14, por gjithashtu mund të përdorni pin 6, 9, 20, 25, 30, 34 ose 39.

SH NOTNIM: që kjo të funksionojë burimi i energjisë LED dhe Raspberry Pi duhet të kenë një bazë të përbashkët. Gjithashtu vini re se nuk duhet të lidhni 12 Volt + (tela të Kuq) me Raspberry Pi.

Fuqia LED

Ju nuk duhet të jeni në gjendje të lidhni furnizimin me energji 12 volt në prizën e fuçisë

Të gjitha LED -të në shiritin tuaj LED tani duhet të ndizen të BARDH

Hapi 6: Kodi nga ana e serverit

Ekzekutimi i kodit nga ana e serverit

cd /opt/com.jonhaydock/disco-pi

sudo npm fillimi

Kjo do të fillojë serverin në internet dhe do të fillojë të dëgjojë kërkesat HTTPS dhe WSS.

Porta e paracaktuar është 443, por ju mund ta anashkaloni këtë duke vendosur një ndryshore të mjedisit para fillimit të kodit. Për shembull

eksporto DISCO_PI_PORT = 1443

Shiriti im LED ka 150 LED. Këto kontrollohen në grupe tresh. Kjo do të thotë që unë nuk mund të kontrolloj çdo LED individualisht, dhe më duhet të dërgoj informacione të mjaftueshme për të kontrolluar 50.

Nëse LED juaj ka pak a shumë ju mund të anashkaloni numrin e LED -ve që po kontrolloni duke kaluar në një parametër për fillimin. Për shembull, nëse mund të kontrolloni vetëm 10 LED

sudo npm fillimi 10

Kodi kryesor i serverit mund të gjendet në skedarin app.js. Ky skedar fillon serverin e uebit HTTPS dhe gjithashtu shton në socket.io për të dëgjuar kërkesat e websocket në të njëjtën port.

Për të hyrë në faqen e internetit, duhet të hapni një shfletues uebi në kompjuterin tuaj kryesor (këtë e kam testuar vetëm në Chrome) dhe të përdorni adresën IP të Raspberry Pi, p.sh.

10.0.1.2/

Ju mund të zbuloni adresën tuaj IP nga rreshti i komandës Raspberry Pi.

ifconfig

Serveri i uebit do të shërbejë çdo përmbajtje nën dosjen publike. Deshtë e paracaktuar të shfaqet faqja index.html.

Ka një pikë përfundimtare API - /api /audio. Kjo pikë përfundimtare kërkon çdo skedar nën dosjen publike/audio dhe kthen listën. Për shembull

["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"]

Për të shtuar muzikë si opsion, kopjoni skedarët në këtë dosje. Unë personalisht përdor Filezilla mbi ssh. Dosja në të cilën dëshironi të shtoni skedarë është /opt/com.jonhaydock/disco-pi/public/audio

Hapi 7: Kodi i faqes në internet

Kodi i faqes në internet
Kodi i faqes në internet

Kur të hyni në faqen e internetit, duhet të shihni diçka të tillë.

Nëse shihni një paralajmërim sigurie, kjo ndodh sepse ne po përdorim një certifikatë SSL të vetë-nënshkruar. Mund ta injoroni ose ta shtoni si përjashtim.

Me zgjedhjen e një emri skedari, burimi për elementin audio HTML 5. do të vendoset në atë skedar. Pasi të jetë gati, muzika do të fillojë të luajë. Pasi kënga të ketë mbaruar muzika do të ndalet.

Nëse zgjidhni opsionin Asnjë, muzika do të ndalojë së luajturi.

Ndërsa luani skedarin muzikor, faqja në internet përdor ndërfaqen AudioContext për të analizuar muzikën, e cila më pas i dërgohet serverit përmes një lidhjeje të sigurt websocket.

Mesazhi është lloji që socket.io në server është konfiguruar për të dëgjuar "ws2811". Ai përmban një grup prej 50 elementësh, të cilët janë midis 0 dhe 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}

Serveri përdor bibliotekën Node RPI WS281x Native (duke mbështjellur bibliotekën e Jeremy Garff WS281X) për të ndryshuar ngjyrat e LED -ve në një shirit LED WS2811, bazuar në të dhënat e dërguara përmes uebfaqes.

Hapi 8: Së fundi

Image
Image

Ju duhet të shihni që LED -të në shirit të ndryshojnë ngjyrën me muzikën, bazuar në analizën e Shndërrimit të Fourier Fast të bërë në faqen e internetit.

Shpresoj që ta shijoni këtë. Më tregoni se çfarë bëni me të!

SH NOTNIM: Nëse keni ndonjë problem

Meqenëse kjo bibliotekë dhe audiobotat Raspberry Pi në bord përdorin PWM, ato nuk mund të përdoren së bashku.

Ju mund të keni nevojë të vendosni në listën e zezë modulin e kernelit audio Broadcom duke krijuar një skedar /etc/modprobe.d/snd-blacklist.conf me

lista e zezë snd_bcm2835

Nëse pajisja audio është ende duke u ngarkuar pas listës së zezë, mund t'ju duhet gjithashtu ta komentoni atë në skedarin /etc /modules. Në sistemet pa kokë ju gjithashtu mund të keni nevojë të detyroni audio përmes hdmi

Ndryshoni config.txt dhe shtoni:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

Kërkohet një rindezje që ky ndryshim të hyjë në fuqi

Recommended: