INHOUDSOPGAWE:

Disco-pi: 8 stappe (met foto's)
Disco-pi: 8 stappe (met foto's)

Video: Disco-pi: 8 stappe (met foto's)

Video: Disco-pi: 8 stappe (met foto's)
Video: Kleuters op familiefeest 😂 2024, Julie
Anonim
Disco-pi
Disco-pi

Hierdie instruksie wys hoe u 'n Raspberry Pi kan gebruik om 'n gekleurde LED -strook te beheer, gebaseer op musiek wat vanaf 'n webblaaier gespeel word.

Dit wys hoe u 'n basiese webwerf met Node.js via HTTPS kan skep en socket.io via WSS (Secure Websocket) kan gebruik.

Die webwerf het 'n enkele bladsy met 'n baie basiese uitleg. Die webblad bevat 'n aftreklys met musieklĂȘers wat in die openbare/klankmap op die bediener geleĂ« is. As u 'n opsie in die lys kies, speel die musieklĂȘer op die webblad met behulp van die HTML 5 -klankelement. Tydens die afspeel van die musieklĂȘer gebruik die webblad die AudioContext -koppelvlak om die musiek te ontleed, wat dan na 'n veilige websocketverbinding na die bediener gestuur word.

Die bediener wat op 'n Raspberry Pi werk, gebruik die Node RPI WS281x Native -biblioteek (wat die WS281X -biblioteek van Jeremy Garff verpak) om die kleure van die LED's op 'n WS2811 LED -strook te verander, gebaseer op die data wat deur die websocket gestuur word.

Die voorbeeldkode kan hier gevind word: disco-pi

Stap 1: Toerusting

  1. Raspberry Pi - Ek het 'n Raspberry Pi 2B gebruik wat ek rondgelĂȘ het, maar u kan 'n Raspberry Pi 3 Starter Kit vir ongeveer CAD 100 kry
  2. WS2811 LED Strip - ek speel met ALITOVE 16.4ft 150 Pixels WS2811. Dit kom met 'n kontroleerder en 'n kragtoevoer vir ongeveer CAD 45-50
  3. Barrel Jack Connector - ek het so iets in my plaaslike elektroniese winkel gekoop. Maak net seker of dit by u kragtoevoer pas
  4. Jumperaansluitings / draad - ek het 'n paar vroulike tot manlike aansluitkabels en 'n 22 -meter soliede haakdraad gelĂȘ

Stap 2: Die opstel van die Raspberry Pi

Bedryfstelsel

Ek gebruik gewoonlik die nuutste Raspbian -weergawe. Laai die prent af en skryf dit op die SD -kaart. As u 'n Windows -rekenaar gebruik, kan u Win32 Disk Imager gebruik om die prent op die SD -kaart te skryf.

Node.js

Installeer die nuutste weergawe van Node.js. Op die oomblik dat ek dit skryf, gebruik ek 8.9.1

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

sudo apt-get install nodejs

Installeer git

sudo apt-get install git

Stap 3: Stel die voorbeeldkode op

Kloon die voorbeeldkode

1. Stel 'n basismap op om in te installeer

cd /opt

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

2. Kloon die voorbeeld git -bewaarplek

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

of

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

3. Installeer die afhanklikes

cd disco-pi

npm installeer

Dit kan 2-3 minute neem

Stap 4: Skep 'n selfondertekende SSL -sertifikaat

1. Skep 'n private sleutel lĂȘer

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

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

2. Skep 'n MVO (versoek om ondertekening van sertifikate)

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

Op hierdie stadium sal u gevra word vir inligting oor die sertifikaatversoek. Aangesien dit 'n selfondertekende sertifikaat is, is dit aan u hoe akkuraat u die besonderhede moet invul. Hier is 'n voorbeeld

Landnaam (kode met 2 letters) [AU]: CA

Naam van die staat of provinsie (volle naam) ['n deelstaat]: Naam van die plek in British Columbia (bv. Stad) : Naam van die organisasie van Vancouver (bv. Die onderneming) [Internet Widgits Pty Ltd]: Naam van die organisasie-eenheid van Disco Pi (bv.) : Algemene naam (bv. Bediener FQDN of U naam) : disco-pi E-posadres : [email protected] 'n Uitdagingswagwoord : 'n Opsionele ondernemingsnaam :

Druk in hierdie voorbeeld net terug om die uitdagingswagwoord leeg te laat

3. Genereer die sertifikaat

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

4. Vir ekstra sekuriteit sal ons ook 'n Diffie Hellman Parameters -lĂȘer skep

openssl dhparam -out dh_2048.pem 2048

Dit kan 15-20 minute neem

Stap 5: Koppel die hardeware aan

Koppel die hardeware
Koppel die hardeware
Koppel die hardeware
Koppel die hardeware
Koppel die hardeware
Koppel die hardeware
Koppel die hardeware
Koppel die hardeware

Skakel die LED -strook aan

Die LED -strook word aangedryf deur 12 volt. Die Raspberry Pi kan slegs 3.3v of 5v lewer en kan nie naby die versterkers kom wat nodig is om soveel LED's aan te dryf nie.

Dit is belangrik om nie die 12 volt -kragtoevoer aan die Raspberry Pi te koppel nie.

My strook het ook ekstra kragdrade aan weerskante aan die strook gekoppel. Ek stel voor dat u dit plak, sodat dit nie met u ander toerusting in aanraking kom nie.

Voer die volgende stappe op eie risiko uit. Ek neem geen verantwoordelikheid vir enigiets wat verkeerd kan gaan nie.

LED strook

My LED -strook het drie drade:

ROOI - +12 volt

SWART - Grond

GROEN - Data

LET WEL: daar is 'n Din en 'n Dout - Data In en Data Out. Maak seker dat u werk met die einde van die LED -strook wat Din sĂȘ.

Maak seker dat die Barrel Jack nie aan die kragtoevoer gekoppel is nie

1. Koppel die Rooi draad van die LED -strook aan die + kant van die Barrel Jack.

Ek gebruik 'n wit 22 gauge haakdraad.

Plaas die draad in die + -gleuf in die vataansluiting en skroef dit vas.

Druk die ander kant van die draad in die aansluiting op die LED. Maak seker dat u met die rooi draad verbind is.

2. Koppel die swart draad van die LED -strook aan die - kant van die Barrel Jack.

Ek het 'n swart 22 gauge haakdraad gebruik.

Plaas die draad in die - gleuf in die vataansluiting. Plaas op hierdie punt ook die manlike kant van een van die aansluitkabels (bruin draad op die foto) in dieselfde gat en skroef albei vas.

Druk die ander kant van die swart draad in die aansluiting op die LED.

Maak seker dat u met die swart draad verbind is.

3. Koppel die groen draad van die LED -strook

Neem een van die wyfies na die manlike aansluitkabels. Op my foto's is dit die groen draad.

Plaas die manlike kant in die LED -aansluiting met die groen draad.

Dit is die datakabel.

Framboos Pi

1. Neem die groen aansluitkabel en verbind dit met die Raspberry Pi GPIO.

U moet dit koppel aan die PCM_CLK (Pin 12 / GPIO 18)

2. Neem die swart aansluitkabel en verbind dit met die Raspberry Pi GPIO.

U moet dit aan een van die gronde koppel. Ek stel voor dat u pen 14 gebruik, maar u kan ook pen 6, 9, 20, 25, 30, 34 of 39 gebruik.

LET WEL: hiervoor moet die LED -kragbron en die Raspberry Pi 'n gemeenskaplike grondslag hĂȘ. Let ook daarop dat u nie die 12 Volt + (rooi draad) aan die Raspberry Pi moet koppel nie.

LED krag

U behoort nie u 12 volt -kragtoevoer aan die vataansluiting te kan koppel nie

Al die LED's op u LED -strook moet nou WIT brand

Stap 6: Bedienerskantkode

Gebruik die bedienerkantkode

cd /opt/com.jonhaydock/disco-pi

sudo npm begin

Dit begin die webbediener en luister na HTTPS- en WSS -versoeke.

Die standaardpoort is 443, maar u kan dit ignoreer deur 'n omgewingsveranderlike in te stel voordat u met die kode begin. Byvoorbeeld

uitvoer DISCO_PI_PORT = 1443

My LED strook het 150 LED's. Dit word in groepe van drieë beheer. Dit beteken dat ek nie elke LED individueel kan beheer nie, en ek moet genoeg inligting stuur om 50 te beheer.

As u LED min of meer het, kan u die aantal LED's wat u beheer, ignoreer deur 'n parameter in te voer vir die aanvang. Byvoorbeeld, as u slegs 10 LED's kan beheer

sudo npm begin 10

Die hoofbedienerkode kan gevind word in die app.js -lĂȘer. Hierdie lĂȘer begin die HTTPS -webbediener en voeg ook by socket.io om te luister na websocket -versoeke op dieselfde poort.

Om toegang tot die webwerf te verkry, moet u 'n webblaaier op u hoofrekenaar oopmaak (ek het dit slegs in Chrome getoets) en die IP -adres van die Raspberry Pi gebruik, bv.

10.0.1.2/

U kan u IP -adres uitvind op die Raspberry Pi -opdragreël.

ifconfig

Die webbediener lewer alle inhoud onder die openbare gids. Dit word standaard die index.html -bladsy vertoon.

Dit het een API -eindpunt - /api /audio. Hierdie eindpunt soek na lĂȘers onder die openbare/klankmap en gee die lys terug. Byvoorbeeld

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

Kopieer lĂȘers na hierdie gids om musiek as opsie by te voeg. Ek persoonlik gebruik Filezilla oor ssh. Die gids waaraan u lĂȘers wil voeg, is /opt/com.jonhaydock/disco-pi/public/audio

Stap 7: Webwerf -kode

Webwerf kode
Webwerf kode

As u die webwerf besoek, moet u so iets sien.

As u 'n veiligheidswaarskuwing sien, is dit omdat ons 'n selfondertekende SSL-sertifikaat gebruik. U kan dit as 'n uitsondering ignoreer of byvoeg.

By die keuse van 'n lĂȘernaam, die bron vir die HTML 5 -klankelement. sal op die lĂȘer gestel word. Sodra dit gereed is, begin die musiek speel. As die liedjie klaar is, stop die musiek.

As u die Geen -opsie kies, sal die musiek nie meer speel nie.

Tydens die afspeel van die musieklĂȘer gebruik die webblad die AudioContext -koppelvlak om die musiek te ontleed, wat dan via 'n veilige websocketverbinding na die bediener gestuur word.

Die boodskap is die tipe waarop socket.io op die bediener opgestel is om na "ws2811" te luister. Dit bevat 'n skikking van 50 elemente, wat tussen 0 en 255 is.

"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}

Die bediener gebruik die Node RPI WS281x oorspronklike biblioteek (omhulsel van die WS281X -biblioteek van Jeremy Garff) om die kleure van die LED's op 'n WS2811 LED -strook te verander, gebaseer op die data wat deur die websocket gestuur word.

Stap 8: Laastens

Image
Image

U moet sien dat die LED's op die strook van kleur verander met die musiek, gebaseer op die Fast Fourier Transform -analise wat op die webblad gedoen is.

Ek hoop dat u dit geniet. Laat weet my wat u daarmee doen!

LET WEL: as u probleme ondervind

Aangesien hierdie biblioteek en die ingeboude Raspberry Pi -klank beide die PWM gebruik, kan hulle nie saam gebruik word nie.

Miskien moet u die Broadcom-klankkernemodule swartlys deur 'n lĂȘer /etc/modprobe.d/snd-blacklist.conf te skep met

swartlys snd_bcm2835

As die klanktoestel steeds laai na die swartlys, moet u dit moontlik ook in die /etc /modules -lĂȘer opmerk. Op koplose stelsels moet u moontlik ook klank deur hdmi dwing

Wysig config.txt en voeg by:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

'N Herlaai is nodig om hierdie verandering in werking te tree

Aanbeveel: