Indholdsfortegnelse:
- Trin 1: Udstyr
- Trin 2: Opsætning af Raspberry Pi
- Trin 3: Opsætning af eksempelkoden
- Trin 4: Opret et selvsigneret SSL -certifikat
- Trin 5: Tilslutning af hardwaren
- Trin 6: Serverside kode
- Trin 7: Webstedskode
- Trin 8: Endelig
Video: Disco-pi: 8 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Denne instruktør viser, hvordan du bruger en Raspberry Pi til at styre en farvet LED -strip, baseret på musik, der spilles fra en webbrowser.
Det viser, hvordan du opretter et grundlæggende websted ved hjælp af Node.js over HTTPS og bruger socket.io over WSS (Secure Websocket).
Websitet har en enkelt side, der har et meget grundlæggende layout. Websiden udfylder en rulleliste med musikfiler, som er placeret i den offentlige/lydmappe på serveren. Hvis du vælger en indstilling på listen, afspilles musikfilen på websiden ved hjælp af HTML 5 -lydelementet. Mens musikfilen afspilles, bruger websiden AudioContext -grænsefladen til at analysere musikken, som derefter sendes til serveren via en sikker websocketforbindelse.
Serveren, der kører på en Raspberry Pi, bruger Node RPI WS281x Native -biblioteket (indpakning af Jeremy Garffs WS281X -bibliotek) til at ændre farverne på lysdioderne på en WS2811 LED -strip, baseret på de data, der sendes gennem websocket.
Eksempelkoden findes her: disco-pi
Trin 1: Udstyr
- Raspberry Pi - Jeg brugte en Raspberry Pi 2B, som jeg havde liggende, men du kan få et Raspberry Pi 3 Starter Kit til omkring CAD 100
- WS2811 LED Strip - Jeg spillede med ALITOVE 16.4ft 150 Pixels WS2811. Dette leveres med en controller og en strømforsyning til omkring CAD 45-50
- Barrel Jack Connector - Jeg købte en fra min lokale elektronikbutik, sådan noget. Bare sørg for, om den passer til din strømforsyning
- Jumper -stik / ledninger - jeg havde nogle hun -til -mand -stik kabler og nogle 22 gauge Solid hook up wire liggende
Trin 2: Opsætning af Raspberry Pi
Operativ system
Jeg bruger normalt den nyeste Raspbian -build. Download billedet og skriv det til SD -kortet. Hvis du bruger en Windows -computer, kan du bruge Win32 Disk Imager til at skrive billedet til SD -kortet.
Node.js
Installer den nyeste version af Node.js. I skrivende stund bruger jeg 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Installer git
sudo apt-get install git
Trin 3: Opsætning af eksempelkoden
Klon eksempelkoden
1. Opret en basismappe at installere i
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Klon eksemplet git repository
git-klon https://github.com/haydockjp/disco-pi.git"
eller
git klon [email protected]: haydockjp/disco-pi.git
3. Installer afhængighederne
cd disco-pi
npm installation
Dette kan tage 2-3 minutter
Trin 4: Opret et selvsigneret SSL -certifikat
1. Opret en privat nøglefil
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Opret en CSR (anmodning om certifikatsignering)
openssl req -ny -key disco-pi-key.pem -out disco-pi-csr.pem
På dette tidspunkt bliver du bedt om nogle oplysninger til certifikatanmodningen. Da dette er et selvsigneret certifikat, er det op til dig, hvor præcist du udfylder detaljerne. Her er et eksempel
Landnavn (kode på 2 bogstaver) [AU]: CA
Stat eller provinsnavn (fuldt navn) [Nogle-delstat]: British Columbia-lokalitetsnavn (f.eks. By) : Vancouver-organisationsnavn (f.eks. Virksomhed) [Internet Widgits Pty Ltd]: Disco Pi organisatoriske enhedsnavn (f.eks. Sektion) : Almindeligt navn (f.eks. Server FQDN eller DIT navn) : disco-pi E-mailadresse : [email protected] En udfordringskodeord : Et valgfrit firmanavn :
I dette eksempel skal du bare trykke på retur for at lade udfordringsadgangskoden være tom
3. Generer certifikatet
openssl x509 -req -dage 1095 -i disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. For ekstra sikkerhed opretter vi også en Diffie Hellman Parameters -fil
openssl dhparam -out dh_2048.pem 2048
Dette kan tage 15-20 minutter
Trin 5: Tilslutning af hardwaren
Tænder LED -strimlen
LED -båndet drives af 12 volt. Raspberry Pi kan kun levere 3.3v eller 5v og er ikke i stand til at udsende nogen steder i nærheden af de forstærkere, der er nødvendige for at drive så mange lysdioder.
Det er vigtigt ikke at tilslutte 12 volt strømforsyningen til Raspberry Pi.
Min strip havde også yderligere strømledninger forbundet til båndet i hver ende. Jeg foreslår, at du tape disse op, så de ikke kommer i kontakt med noget af dit andet udstyr.
Udfør de næste trin på egen risiko. Jeg tager intet ansvar for noget, der kan gå galt.
LED Strip
Min LED -strip har tre ledninger:
RØD - +12 volt
SORT - Jord
GRØN - Data
BEMÆRK: der er en Din og en Dout - Data In og Data Out. Sørg for, at du arbejder med enden af LED -strimlen, der siger Din.
Sørg for, at tøndejacket ikke er tilsluttet strømforsyningen
1. Tilslut den røde ledning fra LED -stripen til + siden af Barrel Jack.
Jeg brugte en hvid 22 gauge tilslutningstråd.
Placer ledningen i + -åbningen i tønde -stikket, og skru den på plads.
Skub den anden ende af ledningen ind i stikkontakten på LED'en. Sørg for, at du forbinder med den røde ledning.
2. Tilslut den sorte ledning fra LED -strimlen til - siden af Barrel Jack.
Jeg brugte en sort 22 gauge tilslutningstråd.
Placer ledningen i - åbningen i tøndejakken. På dette tidspunkt placeres også hanenden af en af konnektorskablerne (brun ledning på billedet) i det samme hul, og skru dem begge på plads.
Skub den anden ende af den sorte ledning ind i stikkontakten på LED'en.
Sørg for, at du forbinder med den sorte ledning.
3. Tilslut den grønne ledning fra LED -strimlen
Tag en af hun -til -han -forbindelseskablerne. På mine fotos er dette den grønne ledning.
Placer hanenden i LED -stikket med den grønne ledning.
Dette er datakablet.
Hindbær Pi
1. Tag det grønne stik og tilslut det til Raspberry Pi GPIO.
Du skal slutte den til PCM_CLK (Pin 12 / GPIO 18)
2. Tag det sorte stik kabel, og slut det til Raspberry Pi GPIO.
Du skal tilslutte den til en af grundene. Jeg foreslår, at du bruger pin 14, men du kan også bruge pin 6, 9, 20, 25, 30, 34 eller 39.
BEMÆRK: For at dette kan fungere, skal LED -strømkilden og Raspberry Pi have en fælles grund. Bemærk også, at du ikke må slutte 12 Volt + (rød ledning) til Raspberry Pi.
LED strøm
Du bør ikke være i stand til at slutte din 12 volt strømforsyning til tøndejackstikket
Alle lysdioderne på din LED -strip skal nu lyse HVID
Trin 6: Serverside kode
Kører serversiden kode
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Dette starter webserveren og begynder at lytte efter HTTPS- og WSS -anmodninger.
Standardporten er 443, men du kan tilsidesætte dette ved at angive en miljøvariabel, før du starter koden. For eksempel
eksport DISCO_PI_PORT = 1443
Min LED -strip har 150 lysdioder. Disse kontrolleres i grupper af treere. Det betyder, at jeg ikke kan styre hver LED individuelt, og jeg skal sende tilstrækkelig information til at styre 50.
Hvis din LED har mere eller mindre, kan du tilsidesætte antallet af LED'er, du kontrollerer, ved at indtaste en parameter til opstart. For eksempel hvis du kun kan styre 10 lysdioder
sudo npm start 10
Hovedserverkoden findes i filen app.js. Denne fil starter HTTPS -webserveren og tilføjer også på socket.io for at lytte efter websocket -anmodninger på den samme port.
For at få adgang til webstedet skal du åbne en webbrowser på din hovedcomputer (jeg har kun testet dette i Chrome) og bruge IP -adressen på Raspberry Pi, f.eks.
10.0.1.2/
Du kan finde ud af din IP -adresse fra kommandolinjen Raspberry Pi.
ifconfig
Webserveren serverer alt indhold under den offentlige mappe. Det er som standard at vise index.html -siden.
Det har et API -slutpunkt - /api /audio. Dette slutpunkt leder efter eventuelle filer under mappen public/audio og returnerer listen. For eksempel
["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"]
Hvis du vil tilføje musik som en mulighed, skal du kopiere filer til denne mappe. Jeg bruger personligt Filezilla over ssh. Den mappe, du vil tilføje filer til, er /opt/com.jonhaydock/disco-pi/public/audio
Trin 7: Webstedskode
Når du rammer webstedet, skal du se sådan noget.
Hvis du ser en sikkerhedsadvarsel, skyldes det, at vi bruger et selvsigneret SSL-certifikat. Du kan ignorere det eller tilføje det som en undtagelse.
Når du vælger et filnavn, er kilden til HTML 5 -lydelementet. vil blive indstillet til den fil. Når den er klar, begynder musikken at spille. Når sangen er færdig stopper musikken.
Hvis du vælger indstillingen Ingen, stopper musikken med at afspille.
Mens musikfilen afspilles, bruger websiden AudioContext -grænsefladen til at analysere musikken, som derefter sendes til serveren via en sikker websocketforbindelse.
Meddelelsen er den type, som socket.io på serveren er konfigureret til at lytte efter "ws2811". Den indeholder en matrix med 50 elementer, som er mellem 0 og 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}
Serveren bruger Node RPI WS281x native -biblioteket (indpakning af Jeremy Garffs WS281X -bibliotek) til at ændre farverne på lysdioderne på en WS2811 LED -strip, baseret på de data, der sendes via websocket.
Trin 8: Endelig
Du bør se lysdioderne på stripen ændre farve med musikken, baseret på den hurtige Fourier Transform -analyse udført på websiden.
Jeg håber, at du nyder dette. Lad mig vide, hvad du gør med det!
BEMÆRK: Hvis du har problemer
Da dette bibliotek og den indbyggede Raspberry Pi -lyd både bruger PWM, kan de ikke bruges sammen.
Du skal muligvis sortliste Broadcom-lydkernemodulet ved at oprette en fil /etc/modprobe.d/snd-blacklist.conf med
sortliste snd_bcm2835
Hvis lydenheden stadig indlæses efter sortliste, skal du muligvis også kommentere den i filen /etc /modules. På hovedløse systemer kan det også være nødvendigt at tvinge lyd gennem hdmi
Rediger config.txt og tilføj:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
En genstart er påkrævet for at denne ændring træder i kraft
Anbefalede:
Bærbare Disco V2 -lydstyrede lysdioder: 11 trin (med billeder)
Bærbare Disco V2 -Sound Controlled LED'er: Jeg er nået langt med min elektroniske rejse, siden jeg lavede mit første bærbare diskotek. I den originale konstruktion hackede jeg et kredsløb sammen på prototypebord og formåede at bygge et pænt, lille lommediskotek. Denne gang designede jeg mit eget printkort og
Led Disco Box: 7 trin (med billeder)
Led Disco Box: Sådan laver du din egen Led Disco Box
Light-Up Disco Table: 27 trin (med billeder)
Light-Up Disco Table: Hver lejlighed har brug for fantastiske møbler, så hvorfor ikke lave dine egne? Dette sofabord indeholder LED -strips, der lyser op i forskellige mønstre og farver, der kan tilpasses. Lysene styres af en Arduino og en skjult knap, og det hele
Disco Desktop Organizer: 8 trin (med billeder)
Disco Desktop Organizer: Materialer: triplex, tykkelse: 3 mm Hvor mange træplader afhænger af, hvor stor din laserskærer er … juster filen på din maksimale størrelse træplade … måske har du brug for mere end 1 plade (husk det). 6 x flash lysdioder (jeg brugte 7 farve flash lysdioder) ava
Infinite Disco: 6 trin (med billeder)
Infinite Disco: I dette projekt lavede jeg et uendeligt spejl baseret på en dodecahedron, der reagerer på lyd