Innholdsfortegnelse:
- Trinn 1: Utstyr
- Trinn 2: Konfigurere Raspberry Pi
- Trinn 3: Konfigurere eksempelkoden
- Trinn 4: Lag et selvsignert SSL -sertifikat
- Trinn 5: Koble til maskinvaren
- Trinn 6: Kode på serversiden
- Trinn 7: Nettstedskode
- Trinn 8: Til slutt
Video: Disco-pi: 8 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Denne instruksjonen viser hvordan du bruker en Raspberry Pi til å kontrollere en farget LED -stripe, basert på musikk spilt fra en nettleser.
Den viser hvordan du lager et grunnleggende nettsted ved hjelp av Node.js over HTTPS og bruker socket.io over WSS (Secure Websocket).
Nettstedet har en enkelt side som har en veldig grunnleggende layout. Nettsiden fyller ut en rullegardinliste med musikkfiler, som er plassert i den offentlige/lydmappen på serveren. Hvis du velger et alternativ i listen, spilles musikkfilen av på websiden av HTML 5 -lydelementet. Mens du spiller musikkfilen, bruker websiden AudioContext -grensesnittet for å analysere musikken, som deretter sendes til serveren via en sikker websocket -tilkobling.
Serveren som kjører på en Raspberry Pi bruker Node RPI WS281x Native -biblioteket (pakker inn Jeremy Garffs WS281X -bibliotek) for å endre fargene på lysdiodene på en WS2811 LED -stripe, basert på dataene som sendes gjennom websocket.
Eksempelkoden finner du her: disco-pi
Trinn 1: Utstyr
- Raspberry Pi - Jeg brukte en Raspberry Pi 2B som jeg hadde liggende, men du kan få et Raspberry Pi 3 Starter Kit for rundt CAD 100
- WS2811 LED Strip - Jeg lekte med ALITOVE 16.4ft 150 Pixels WS2811. Dette kommer med en kontroller og en strømforsyning for ca CAD 45-50
- Barrel Jack Connector - Jeg kjøpte en fra min lokale elektronikkbutikk, noe sånt som dette. Bare vær sikker på om den passer til strømforsyningen din
- Stikkontakter / ledning - Jeg hadde noen hun -til -mann -tilkoblingskabler og noen 22 gauge Solid hook up wire liggende
Trinn 2: Konfigurere Raspberry Pi
Operativsystem
Jeg bruker normalt den nyeste Raspbian -bygningen. Last ned bildet og skriv det til SD -kortet. Hvis du bruker en Windows -datamaskin, kan du bruke Win32 Disk Imager til å skrive bildet til SD -kortet.
Node.js
Installer den nyeste versjonen av Node.js. I skrivende stund bruker 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
Trinn 3: Konfigurere eksempelkoden
Klon eksempelkoden
1. Sett opp en basismappe å installere i
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Klon eksempelgit -depotet
git-klon https://github.com/haydockjp/disco-pi.git"
eller
git klon [email protected]: haydockjp/disco-pi.git
3. Installer avhengighetene
cd disco-pi
npm installere
Dette kan ta 2-3 minutter
Trinn 4: Lag et selvsignert SSL -sertifikat
1. Opprett en privat nøkkelfil
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Lag en CSR (forespørsel om sertifikatsignering)
openssl req -ny -key disco-pi-key.pem -out disco-pi-csr.pem
På dette tidspunktet vil du bli bedt om informasjon om sertifikatforespørselen. Siden dette er et selvsignert sertifikat, er det opp til deg hvor nøyaktig du fyller ut detaljene. Her er et eksempel
Landnavn (kode på 2 bokstaver) [AU]: CA
Stat eller provinsnavn (fullt navn) [Noen-delstat]: British Columbia lokalitetsnavn (f.eks. By) : Vancouver organisasjonsnavn (f.eks. Selskap) [Internet Widgits Pty Ltd]: Disco Pi organisasjonsenhetsnavn (f.eks. Seksjon) : Vanlig navn (f.eks. Server FQDN eller DITT navn) : disco-pi E-postadresse : [email protected] Et utfordringspassord : Et valgfritt firmanavn :
I dette eksemplet trykker du bare på retur for å la utfordringspassordet stå tomt
3. Generer sertifikatet
openssl x509 -req -dager 1095 -i disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. For ekstra sikkerhet vil vi også opprette en Diffie Hellman Parameters -fil
openssl dhparam -out dh_2048.pem 2048
Dette kan ta 15-20 minutter
Trinn 5: Koble til maskinvaren
Forsyner LED -stripen
LED -stripen drives av 12 volt. Raspberry Pi kan bare levere 3.3v eller 5v og er ikke i stand til å sende noen steder i nærheten av forsterkere som trengs for å drive så mange lysdioder.
Det er viktig å ikke koble 12 volt strømforsyningen til Raspberry Pi.
Stripen min hadde også flere strømledninger koblet til stripen i hver ende. Jeg foreslår at du tape disse opp slik at de ikke kommer i kontakt med noe av det andre utstyret ditt.
Utfør de neste trinnene på egen risiko. Jeg tar ikke ansvar for noe som kan gå galt.
LED -stripe
Min LED -stripe har tre ledninger:
RØD - +12 volt
SVART - Bakken
GRØNN - Data
MERK: det er en Din og en Dout - Data inn og Data Out. Sørg for at du jobber med enden av LED -stripen som sier Din.
Sikre at tønnekontakten ikke er koblet til strømforsyningen
1. Koble den røde ledningen fra LED -stripen til + siden av fatkontakten.
Jeg brukte en hvit 22 gauge hook -wire.
Plasser ledningen i + sporet i fatkontakten og skru den på plass.
Skyv den andre enden av ledningen inn i kontakten på LED -en. Sørg for at du kobler til den røde ledningen.
2. Koble den svarte ledningen fra LED -stripen til - siden av fatkontakten.
Jeg brukte en svart 22 gauge hook -wire.
Sett ledningen inn i - sporet i fatkontakten. På dette tidspunktet plasserer du også enden av en av koblingskablene (brun ledning på bildet) i det samme hullet og skru dem begge på plass.
Skyv den andre enden av den svarte ledningen inn i kontakten på LED -en.
Sørg for at du kobler til den svarte ledningen.
3. Koble den grønne ledningen fra LED -stripen
Ta en av hunnene til han -tilkoblingskabler. På bildene mine er dette den grønne ledningen.
Plasser hanenden i LED -kontakten med den grønne ledningen.
Dette er datakabelen.
Bringebær Pi
1. Ta den grønne kontaktkabelen og koble den til Raspberry Pi GPIO.
Du må koble den til PCM_CLK (Pin 12 / GPIO 18)
2. Ta den svarte kontaktkabelen og koble den til Raspberry Pi GPIO.
Du må koble den til en av eiendommene. Jeg foreslår at du bruker pin 14, men du kan også bruke pin 6, 9, 20, 25, 30, 34 eller 39.
MERK: For at dette skal fungere må LED -strømkilden og Raspberry Pi ha en felles grunn. Vær også oppmerksom på at du ikke må koble 12 Volt + (rød ledning) til Raspberry Pi.
LED -strøm
Du bør ikke kunne koble din 12 volt strømforsyning til fatkontakten
Alle lysdiodene på LED -stripen skal nå lyse HVIT
Trinn 6: Kode på serversiden
Kjører koden på serversiden
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Dette vil starte webserveren og begynne å lytte etter HTTPS- og WSS -forespørsler.
Standardporten er 443, men du kan overstyre dette ved å angi en miljøvariabel før du starter koden. For eksempel
eksport DISCO_PI_PORT = 1443
Min LED -stripe har 150 lysdioder. Disse kontrolleres i grupper av treere. Dette betyr at jeg ikke kan kontrollere hver LED individuelt, og jeg må sende gjennom nok informasjon til å kontrollere 50.
Hvis din LED har mer eller mindre, kan du overstyre antall lysdioder du kontrollerer ved å legge inn en parameter til oppstarten. For eksempel hvis du bare kan kontrollere 10 lysdioder
sudo npm start 10
Hovedserverkoden finnes i app.js -filen. Denne filen starter HTTPS -webserveren og legger også til på socket.io for å lytte etter websocket -forespørsler på samme port.
For å få tilgang til nettstedet, bør du åpne en nettleser på hoveddatamaskinen din (jeg har bare testet dette i Chrome) og bruke IP -adressen til Raspberry Pi, f.eks.
10.0.1.2/
Du kan finne ut IP -adressen din fra kommandolinjen Raspberry Pi.
ifconfig
Nettserveren serverer alt innhold under den offentlige mappen. Som standard vises index.html -siden.
Den har ett API -sluttpunkt - /api /audio. Dette sluttpunktet ser etter 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"]
For å legge til musikk som et alternativ, kopierer du filer til denne mappen. Jeg personlig bruker Filezilla over ssh. Mappen du vil legge til filer i, er /opt/com.jonhaydock/disco-pi/public/audio
Trinn 7: Nettstedskode
Når du treffer nettstedet, bør du se noe slikt.
Hvis du ser en sikkerhetsadvarsel, er dette fordi vi bruker et selvsignert SSL-sertifikat. Du kan ignorere det eller legge det til som et unntak.
Når du velger et filnavn, kilden for HTML 5 -lydelementet. vil bli satt til den filen. Når den er klar, begynner musikken å spille. Når sangen er ferdig, stopper musikken.
Hvis du velger alternativet Ingen, slutter musikken å spille.
Mens du spiller musikkfilen, bruker websiden AudioContext -grensesnittet til å analysere musikken, som deretter sendes til serveren via en sikker websocket -tilkobling.
Meldingen er av typen socket.io på serveren som er konfigurert for å lytte etter "ws2811". Den inneholder en rekke 50 elementer, som er mellom 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 bruker Node RPI WS281x Native -biblioteket (pakker inn Jeremy Garffs WS281X -bibliotek) for å endre fargene på lysdiodene på en WS2811 LED -stripe, basert på dataene som sendes gjennom websocket.
Trinn 8: Til slutt
Du bør se lysdiodene på stripen endre farge med musikken, basert på Fast Fourier Transform -analysen som ble utført på nettsiden.
Jeg håper du liker dette. Gi meg beskjed om hva du gjør med det!
MERK: Hvis du har problemer
Siden dette biblioteket og den innebygde Raspberry Pi -lyden både bruker PWM, kan de ikke brukes sammen.
Du må kanskje svarteliste Broadcom lydkjernemodulen ved å opprette en fil /etc/modprobe.d/snd-blacklist.conf med
svarteliste snd_bcm2835
Hvis lydenheten fortsatt lastes etter svarteliste, kan det hende du også må kommentere den i filen /etc /modules. På hodeløse systemer kan du også trenge å tvinge lyd gjennom hdmi
Rediger config.txt og legg til:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
En omstart er nødvendig for at denne endringen skal tre i kraft
Anbefalt:
Bærbare Disco V2 -lydstyrte lysdioder: 11 trinn (med bilder)
Bærbar Disco V2 -lydstyrte lysdioder: Jeg har kommet langt med elektronikkreisen siden jeg lagde mitt første bærbare diskotek. I den opprinnelige bygningen hacket jeg sammen en krets på prototypebrett og klarte å bygge et pent, lite lommedisko. Denne gangen designet jeg min egen PCB og
Led Disco Box: 7 trinn (med bilder)
Led Disco Box: Hvordan lage din egen Led Disco Box
Light-Up Disco Table: 27 trinn (med bilder)
Light-Up Disco Table: Hver leilighet trenger fantastiske møbler, så hvorfor ikke lage dine egne? Dette salongbordet inneholder LED -strimler som lyser opp i forskjellige tilpassbare mønstre og farger. Lysene styres av en Arduino og en skjult knapp, og det hele
Disco Desktop Organizer: 8 trinn (med bilder)
Disco Desktop Organizer: Materialer: triplex, tykkelse: 3 mm Hvor mange treplater avhenger av hvor stor laserskjæreren din er … juster filen på din maksimale størrelse treplate … kanskje du trenger mer enn 1 plate (husk det). 6 x flash lysdioder (jeg brukte 7 farger flash lysdioder) ava
Infinite Disco: 6 trinn (med bilder)
Infinite Disco: I dette prosjektet laget jeg et uendelig speil basert på en dodekaeder som reagerer på lyd