INHOUDSOPGAWE:
- Stap 1: Toerusting
- Stap 2: Die opstel van die Raspberry Pi
- Stap 3: Stel die voorbeeldkode op
- Stap 4: Skep 'n selfondertekende SSL -sertifikaat
- Stap 5: Koppel die hardeware aan
- Stap 6: Bedienerskantkode
- Stap 7: Webwerf -kode
- Stap 8: Laastens
Video: Disco-pi: 8 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
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
- 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
- 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
- Barrel Jack Connector - ek het so iets in my plaaslike elektroniese winkel gekoop. Maak net seker of dit by u kragtoevoer pas
- 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
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
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
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:
3D -afdrukbare disco -helm !: 11 stappe (met foto's)
3D -afdrukbare disco -helm !: geĂŻnspireer deur die klassieke Daft Punk 'Thomas' helm. Verlig die kamer en wees afguns van al u vriende met hierdie ongelooflike Arduino -aangedrewe diskohelm! U benodig toegang tot 'n 3D -drukker en 'n soldeerbout om hierdie projek te voltooi
Draagbare Disco V2 -klank -beheerde LED's: 11 stappe (met foto's)
Draagbare Disco V2 -Sound -beheerde LED's: ek het 'n lang pad gekom met my elektroniese reis sedert ek my eerste draagbare disco gemaak het. In die oorspronklike gebou het ek 'n kring op 'n prototipe saamgebreek en daarin geslaag om 'n netjiese sakdisko te bou. Hierdie keer het ek my eie PCB ontwerp en
Led Disco Box: 7 stappe (met foto's)
Led Disco Box: hoe om u eie Led Disco Box te maak
Disco Desktop Organizer: 8 stappe (met foto's)
Disco Desktop Organizer: Materiaal: triplex, dikte: 3 mm Hoeveel houtplate hang af van hoe groot u lasersnyer is ⊠pas die lĂȘer op u maksimum grootte houtplaat aan ⊠miskien benodig u meer as 1 bord (hou dit in gedagte). 6 x flitsligte (ek het 7 kleurflitse gebruik) met
Oneindige Disco: 6 stappe (met foto's)
Infinite Disco: In hierdie projek het ek 'n oneindige spieël gemaak wat gebaseer is op 'n dodecahedron wat op klank reageer