Kazalo:

Disco-pi: 8 korakov (s slikami)
Disco-pi: 8 korakov (s slikami)

Video: Disco-pi: 8 korakov (s slikami)

Video: Disco-pi: 8 korakov (s slikami)
Video: Если бы сладости были людьми! 2024, November
Anonim
Disko-pi
Disko-pi

Ta navodila kažejo, kako z Raspberry Pi upravljati barvni LED trak na podlagi glasbe, ki se predvaja iz spletnega brskalnika.

Prikazuje, kako ustvarite osnovno spletno mesto z uporabo Node.js prek HTTPS in uporabite socket.io prek WSS (Secure Websocket).

Spletno mesto ima eno samo stran z zelo osnovno postavitvijo. Spletna stran na spustnem seznamu vsebuje glasbene datoteke, ki se nahajajo v javni/zvočni mapi na strežniku. Izbira možnosti na seznamu predvaja glasbeno datoteko na spletni strani z zvočnim elementom HTML 5. Med predvajanjem glasbene datoteke spletna stran uporablja vmesnik AudioContext za analizo glasbe, ki se nato pošlje strežniku prek zaščitene povezave websocket.

Strežnik, ki deluje na Raspberry Pi, uporablja knjižnico Node RPI WS281x Native (zavijanje knjižnice WS281X Jeremyja Garffa) za spreminjanje barv LED na traku LED WS2811 na podlagi podatkov, poslanih prek spletnega vtičnice.

Primer kode najdete tukaj: disco-pi

1. korak: Oprema

  1. Raspberry Pi - Uporabil sem Raspberry Pi 2B, ki sem ga imel naokoli, vendar lahko dobite Raspberry Pi 3 Starter Kit za približno 100 CAD
  2. WS2811 LED trak - igral sem se z ALITOVE 16,4ft 150 Pixels WS2811. Priložen je krmilnik in napajalnik za približno CAD 45-50
  3. Barrel Jack Connector - kupil sem ga v lokalni trgovini z elektroniko, nekaj takega. Prepričajte se, ali ustreza vašemu napajalniku
  4. Povezovalni priključki / žica - imel sem nekaj priključnih kablov ženski na moški in nekaj 22 -palčne trdne priključne žice, ki je ležala naokoli

2. korak: Nastavitev Raspberry Pi

Operacijski sistem

Običajno uporabljam najnovejšo različico Raspbian. Prenesite sliko in jo zapišite na kartico SD. Če uporabljate računalnik z operacijskim sistemom Windows, lahko z zapisovalnikom diskov Win32 zapišete sliko na kartico SD.

Node.js

Namestite najnovejšo različico Node.js. V času pisanja uporabljam 8.9.1

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

sudo apt-get install nodejs

Namestite git

sudo apt-get install git

3. korak: Nastavitev vzorčne kode

Klonirajte vzorčno kodo

1. Nastavite osnovno mapo za namestitev

cd /opt

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

2. Klonirajte primer skladišča git

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

ali

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

3. Namestite odvisnosti

cd disco-pi

npm install

To lahko traja 2-3 minute

4. korak: Ustvarite samopodpisan SSL certifikat

1. Ustvarite datoteko zasebnega ključa

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

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

2. Ustvarite CSR (zahteva za podpis certifikata)

openssl req -novo -key disco-pi-key.pem -out disco-pi-csr.pem

Na tej točki boste morali vnesti nekaj informacij za zahtevo za potrdilo. Ker je to samopodpisano potrdilo, je od vas odvisno, kako natančno izpolnite podatke. Tukaj je primer

Ime države (dvočrkovna koda) [AU]: CA

Ime države ali province (polno ime) [Nekaj držav]: Ime kraja Britanska Kolumbija (npr. Mesto) : Ime organizacije Vancouver (npr. Podjetje) [Internet Widgits Pty Ltd]: Ime organizacijske enote Disco Pi (npr.) : Splošno ime (npr. FQDN strežnika ali VAŠE ime) : email-naslov disco-pi : [email protected] Geslo za izziv : Izbirno ime podjetja :

V tem primeru samo pritisnite tipko return, da pustite geslo za izziv prazno

3. Ustvarite potrdilo

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

4. Za dodatno varnost bomo ustvarili tudi datoteko parametrov Diffie Hellman

openssl dhparam -out dh_2048.pem 2048

To lahko traja 15-20 minut

5. korak: Priključitev strojne opreme

Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme

Napajanje LED traku

LED trak napaja 12 voltov. Raspberry Pi lahko oddaja le 3.3v ali 5v in ne more oddajati nikjer v bližini ojačevalnikov, potrebnih za pogon toliko LED.

Pomembno je, da 12 -voltnega napajalnika ne priključite na Raspberry Pi.

Moj trak je imel na obeh koncih priključene tudi dodatne napajalne žice. Predlagam, da jih zalepite, da ne pridejo v stik z vašo drugo opremo.

Naslednje korake izvedite na lastno odgovornost. Ne prevzemam odgovornosti za vse, kar bi lahko šlo narobe.

LED trak

Moj LED trak ima tri žice:

RDEČA - +12 voltov

ČRNA - Prizemljena

ZELENO - Podatki

OPOMBA: obstajata Din in Dout - vnos podatkov in izhod podatkov. Prepričajte se, da delate s koncem LED traku z napisom Din.

Zagotovite, da cevni priključek ni priključen na napajanje

1. Priključite rdečo žico z LED traku na + stran vtiča.

Uporabil sem belo priključno žico velikosti 22.

Žico vstavite v režo + v vtičnici cevi in jo privijte.

Drugi konec žice potisnite v vtičnico na LED. Prepričajte se, da se povezujete z rdečo žico.

2. Priključite črno žico z LED traku na - stran vtiča.

Uporabil sem črno priključno žico 22.

Žico vstavite v režo za cev v vtičnici. Na tej točki v isti luknji vstavite tudi moški konec enega od priključnih kablov (rjava žica na fotografiji) in oba privijte.

Drugi konec črne žice potisnite v vtičnico na LED.

Prepričajte se, da povezujete s črno žico.

3. Priključite zeleno žico z LED traku

Vzemite enega od ženskih priključnih kablov na moški. Na mojih fotografijah je to zelena žica.

Moški konec vstavite v LED vtičnico z zeleno žico.

To je podatkovni kabel.

Malina Pi

1. Vzemite zeleni priključni kabel in ga povežite z Raspberry Pi GPIO.

Morate ga priključiti na PCM_CLK (Pin 12 / GPIO 18)

2. Vzemite črni priključni kabel in ga povežite z Raspberry Pi GPIO.

Morate ga povezati z enim od razlogov. Predlagam, da uporabite pin 14, lahko pa uporabite tudi pin 6, 9, 20, 25, 30, 34 ali 39.

OPOMBA: Da bi to delovalo, morata imeti vir napajanja LED in Raspberry Pi skupne točke. Upoštevajte tudi, da 12 Volt + (rdeča žica) ne smete priključiti na Raspberry Pi.

Napajanje LED

12 -voltnega napajalnika ne bi smeli priključiti na cevno vtičnico

Vse LED diode na vašem LED traku bi morale zasvetiti BELE

6. korak: Koda na strani strežnika

Izvajanje kode na strani strežnika

cd /opt/com.jonhaydock/disco-pi

sudo npm start

S tem se bo zagnal spletni strežnik in začel poslušati zahteve HTTPS in WSS.

Privzeta vrata so 443, vendar jih lahko preglasite tako, da nastavite spremenljivko okolja pred zagonom kode. Na primer

izvozi DISCO_PI_PORT = 1443

Moj LED trak ima 150 LED. Te so nadzorovane v skupinah trojk. To pomeni, da ne morem upravljati vsake LED posebej in moram poslati dovolj informacij za nadzor 50.

Če ima vaša LED dioda več ali manj, lahko preglasite število LED, ki jih nadzirate, tako da vnesete parameter do zagona. Na primer, če lahko upravljate samo 10 LED

sudo npm start 10

Kodo glavnega strežnika najdete v datoteki app.js. Ta datoteka zažene spletni strežnik HTTPS in doda tudi na socket.io za poslušanje zahtev websocket na istih vratih.

Za dostop do spletnega mesta morate v glavnem računalniku odpreti spletni brskalnik (to sem preizkusil samo v Chromu) in uporabiti naslov IP Raspberry Pi, npr.

10.0.1.2/

Svoj IP naslov lahko izveste iz ukazne vrstice Raspberry Pi.

ifconfig

Spletni strežnik bo stregel vso vsebino v javno mapo. Privzeto prikazuje stran index.html.

Ima eno končno točko API - /api /audio. Ta končna točka išče vse datoteke v javni/zvočni mapi in vrne seznam. Na primer

["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It Free Free.mp3", "To je tisto, za kar si prišel (feat. Rihanna).mp3"]

Če želite dodati glasbo kot možnost, kopirajte datoteke v to mapo. Osebno uporabljam Filezilla preko ssh. Mapa, v katero želite dodati datoteke, je /opt/com.jonhaydock/disco-pi/public/audio

7. korak: Koda spletnega mesta

Koda spletnega mesta
Koda spletnega mesta

Ko obiščete spletno mesto, bi morali videti nekaj takega.

Če vidite varnostno opozorilo, je to zato, ker uporabljamo samopodpisano potrdilo SSL. Lahko ga prezrete ali dodate kot izjemo.

Ko izberete ime datoteke, vir za zvočni element HTML 5. bo nastavljena na to datoteko. Ko bo glasba pripravljena, se bo začela predvajati. Ko se pesem konča, se bo glasba ustavila.

Če izberete možnost Brez, se bo glasba nehala predvajati.

Med predvajanjem glasbene datoteke spletna stran uporablja vmesnik AudioContext za analizo glasbe, ki se nato pošlje strežniku prek zaščitene povezave websocket.

Sporočilo je tipa, ki ga je socket.io na strežniku nastavil za poslušanje "ws2811". Vsebuje niz 50 elementov, ki so med 0 in 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}

Strežnik uporablja izvorno knjižnico Node RPI WS281x (zajema knjižnico WS281X Jeremyja Garffa) za spreminjanje barv LED na traku LED WS2811 na podlagi podatkov, poslanih prek spletnega vtičnice.

8. korak: Končno

Image
Image

Morali bi videti, da LED -diode na traku spreminjajo barvo z glasbo, na podlagi analize Fast Fourier Transform, opravljene na spletni strani.

Upam, da boste pri tem uživali. Povej mi, kaj počneš z njim!

OPOMBA: Če imate kakršne koli težave

Ker ta knjižnica in vgrajeni zvočnik Raspberry Pi uporabljata PWM, ju ni mogoče uporabljati skupaj.

Morda boste morali modul zvočnega jedra Broadcom uvrstiti na črni seznam tako, da ustvarite datoteko /etc/modprobe.d/snd-blacklist.conf z

črni seznam snd_bcm2835

Če se zvočna naprava po črnem seznamu še vedno nalaga, jo boste morda morali komentirati tudi v datoteki /etc /modules. V sistemih brez glave boste morda morali vsiliti zvok tudi prek HDMI -ja

Uredite config.txt in dodajte:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

Za uveljavitev te spremembe je potreben ponovni zagon

Priporočena: