Kazalo:
- 1. korak: Oprema
- 2. korak: Nastavitev Raspberry Pi
- 3. korak: Nastavitev vzorčne kode
- 4. korak: Ustvarite samopodpisan SSL certifikat
- 5. korak: Priključitev strojne opreme
- 6. korak: Koda na strani strežnika
- 7. korak: Koda spletnega mesta
- 8. korak: Končno
Video: Disco-pi: 8 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:08
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
- 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
- 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
- Barrel Jack Connector - kupil sem ga v lokalni trgovini z elektroniko, nekaj takega. Prepričajte se, ali ustreza vašemu napajalniku
- 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
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
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
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:
Prenosne lučke LED Disco V2 -11 korakov (s slikami)
Prenosni disko diski V2 -LED z zvočnim nadzorom: Odkar sem naredil svojo prvo prenosno diskoteko, sem z elektroniko prišel daleč. V prvotni zgradbi sem skupaj zlomil vezje na prototipni plošči in uspel zgraditi lepo, malo žepno diskoteko. Tokrat sem oblikoval lastno tiskano vezje in
Kako: Namestitev Raspberry PI 4 Headless (VNC) z Rpi-sliko in slikami: 7 korakov (s slikami)
Kako: Namestitev Raspberry PI 4 Headless (VNC) z Rpi-imagerjem in slikami: Ta Rapberry PI nameravam uporabiti v kopici zabavnih projektov v svojem blogu. Vabljeni, da to preverite. Želel sem se vrniti v uporabo Raspberry PI, vendar na novi lokaciji nisem imel tipkovnice ali miške. Nekaj časa je minilo, odkar sem nastavil malino
Led Disco Box: 7 korakov (s slikami)
Led Disco Box: Kako narediti svoj Led Disco Box
Pridelovalec rastlin z mikrogravitacijo "Disco Ball": 13 korakov
Pridelovalec rastlin za mikrogravitacijo "Disco Ball": Pozdravljeni bralci, ta projekt je profesionalna prijava na natečaj Growing Beyond Earth Maker. Ta projekt je dokaz koncepta za potencialno zasnovo sadilnika, ki bi ga lahko uporabili za rast načrta v mikrogravitaciji. pravila tekmovanja, ki sem jih navedel
Infinite Disco: 6 korakov (s slikami)
Infinite Disco: V tem projektu sem naredil neskončno ogledalo na osnovi dodekaedra, ki reagira na zvok