Sommario:
- Passaggio 1: attrezzatura
- Passaggio 2: configurazione del Raspberry Pi
- Passaggio 3: impostazione del codice di esempio
- Passaggio 4: creare un certificato SSL autofirmato
- Passaggio 5: collegamento dell'hardware
- Passaggio 6: codice lato server
- Passaggio 7: codice del sito web
- Passaggio 8: finalmente
Video: Disco-pi: 8 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Questa istruzione mostra come utilizzare un Raspberry Pi per controllare una striscia LED colorata, in base alla musica riprodotta da un browser web.
Mostra come creare un sito Web di base utilizzando Node.js su HTTPS e utilizzare socket.io su WSS (Secure Websocket).
Il sito web ha una singola pagina che ha un layout molto semplice. La pagina web popola un elenco a discesa con i file musicali, che si trovano nella cartella public/audio sul server. La selezione di un'opzione nell'elenco riproduce il file musicale nella pagina Web utilizzando l'elemento audio HTML 5. Durante la riproduzione del file musicale, la pagina Web utilizza l'interfaccia AudioContext per analizzare la musica, che viene quindi inviata al server tramite una connessione Websocket sicura.
Il server in esecuzione su un Raspberry Pi utilizza la libreria Node RPI WS281x Native (che racchiude la libreria WS281X di Jeremy Garff) per modificare i colori dei LED su una striscia LED WS2811, in base ai dati inviati tramite il websocket.
Il codice di esempio può essere trovato qui: disco-pi
Passaggio 1: attrezzatura
- Raspberry Pi - Ho usato un Raspberry Pi 2B che avevo in giro, ma puoi ottenere uno Starter Kit Raspberry Pi 3 per circa 100 CAD
- Striscia LED WS2811 - Stavo giocando con ALITOVE 16.4ft 150 Pixel WS2811. Questo viene fornito con un controller e un alimentatore per circa CAD 45-50
- Connettore Jack Barrel - Ne ho comprato uno dal mio negozio di elettronica locale, qualcosa del genere. Assicurati solo che si adatti al tuo alimentatore
- Connettori jumper/cavo: avevo alcuni cavi di collegamento da femmina a maschio e alcuni cavi di collegamento solido calibro 22 in giro
Passaggio 2: configurazione del Raspberry Pi
Sistema operativo
Normalmente uso l'ultima build di Raspbian. Scarica l'immagine e scrivila sulla scheda SD. Se stai utilizzando un computer Windows, puoi utilizzare Win32 Disk Imager per scrivere l'immagine sulla scheda SD.
Nodo.js
Installa l'ultima versione di Node.js. Al momento della scrittura sto usando 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Installa git
sudo apt-get install git
Passaggio 3: impostazione del codice di esempio
Clona il codice di esempio
1. Configura una cartella di base in cui installare
cd /opt
sudo mkdir com.jonhaydock sudo chown pi:pi com.jonhaydockcd com.jonhaydock
2. Clonare il repository git di esempio
git clone
o
git clone [email protected]:haydockjp/disco-pi.git
3. Installa le dipendenze
cd disco-pi
installazione npm
Potrebbero volerci 2-3 minuti
Passaggio 4: creare un certificato SSL autofirmato
1. Crea un file di chiave privata
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Creare una CSR (Richiesta di firma del certificato)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
A questo punto ti verranno richieste alcune informazioni per la richiesta del certificato. Poiché si tratta di un certificato autofirmato, dipende da te la precisione con cui inserisci i dettagli. Ecco un esempio
Nome del paese (codice di 2 lettere) [AU]:CA
Nome stato o provincia (nome completo) [Some-State]:British Columbia Nome località (es. città) :Nome organizzazione Vancouver (es. azienda) [Internet Widgits Pty Ltd]:Disco Pi Nome unità organizzativa (es. sezione) : Nome comune (ad es. FQDN del server o il TUO nome) :disco-pi Indirizzo e-mail :[email protected] Una password di verifica : Un nome azienda opzionale :
In questo esempio, premi Invio per lasciare vuota la password di verifica
3. Genera il certificato
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Per maggiore sicurezza creeremo anche un file dei parametri Diffie Hellman
openssl dhparam -out dh_2048.pem 2048
Questo potrebbe richiedere 15-20 minuti
Passaggio 5: collegamento dell'hardware
Alimentazione della striscia LED
La striscia LED è alimentata a 12 volt. Il Raspberry Pi è in grado di emettere solo 3,3 V o 5 V e non è in grado di emettere da nessuna parte vicino agli amplificatori necessari per pilotare così tanti LED.
È importante non collegare l'alimentatore a 12 volt al Raspberry Pi.
La mia striscia aveva anche cavi di alimentazione aggiuntivi collegati alla striscia alle due estremità. Ti suggerisco di fissarli con del nastro adesivo in modo che non entrino in contatto con nessuna delle tue altre apparecchiature.
Eseguire i passaggi successivi a proprio rischio. Non mi assumo alcuna responsabilità per qualsiasi cosa possa andare storta.
Striscia LED
La mia striscia LED ha tre fili:
ROSSO - +12 Volt
NERO - Terra
VERDE - Dati
NOTA: c'è un Din e un Dout - Data In e Data Out. Assicurati di lavorare con la fine della striscia LED che dice Din.
Assicurarsi che il Barrel Jack non sia collegato all'alimentazione
1. Collegare il filo rosso dalla striscia LED al lato + del Barrel Jack.
Ho usato un cavo di collegamento bianco calibro 22.
Posizionare il filo nella fessura + nella presa cilindrica e avvitarlo in posizione.
Spingere l'altra estremità del cavo nella presa del LED. Assicurati di connetterti con il filo rosso.
2. Collegare il filo nero dalla striscia LED al lato - del Barrel Jack.
Ho usato un cavo di collegamento nero calibro 22.
Posizionare il filo nella fessura - nella presa cilindrica. A questo punto inserire nello stesso foro anche l'estremità maschio di uno dei cavi del connettore (filo marrone nella foto) e avvitarli entrambi.
Spingere l'altra estremità del filo nero nella presa del LED.
Assicurati di connetterti con il filo nero.
3. Collegare il filo verde dalla striscia LED
Prendi uno dei cavi connettore femmina-maschio. Nelle mie foto questo è il filo verde.
Posizionare l'estremità maschio nella presa LED con il filo verde.
Questo è il cavo dati.
Lampone Pi
1. Prendi il cavo del connettore verde e collegalo al Raspberry Pi GPIO.
Devi collegarlo al PCM_CLK (Pin 12 / GPIO 18)
2. Prendi il cavo del connettore nero e collegalo al Raspberry Pi GPIO.
Devi collegarlo a uno dei motivi. Ti suggerisco di usare il pin 14, ma potresti anche usare il pin 6, 9, 20, 25, 30, 34 o 39.
NOTA: affinché questo funzioni, l'alimentatore LED e il Raspberry Pi devono avere una massa comune. Si noti inoltre che non è necessario collegare il 12 Volt + (cavo rosso) al Raspberry Pi.
Potenza LED
Non dovresti essere in grado di collegare il tuo alimentatore da 12 volt al jack a botte
Tutti i LED sulla tua striscia LED dovrebbero ora illuminarsi in BIANCO
Passaggio 6: codice lato server
Esecuzione del codice lato server
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Questo avvierà il server web e inizierà ad ascoltare le richieste HTTPS e WSS.
La porta predefinita è 443, ma puoi sovrascriverla impostando una variabile di ambiente prima di avviare il codice. Per esempio
esporta DISCO_PI_PORT=1443
La mia striscia LED ha 150 LED. Questi sono controllati in gruppi di tre. Ciò significa che non posso controllare singolarmente ogni LED e devo inviare informazioni sufficienti per controllarne 50.
Se il tuo LED ne ha più o meno puoi sovrascrivere il numero di LED che stai controllando passando un parametro all'accensione. Ad esempio, se puoi controllare solo 10 LED
sudo npm start 10
Il codice del server principale si trova nel file app.js. Questo file avvia il server web HTTPS e aggiunge anche socket.io per ascoltare le richieste websocket sulla stessa porta.
Per accedere al sito Web, è necessario aprire un browser Web sul computer principale (l'ho testato solo su Chrome) e utilizzare l'indirizzo IP del Raspberry Pi, ad es.
10.0.1.2/
Puoi scoprire il tuo indirizzo IP dalla riga di comando di Raspberry Pi.
ifconfig
Il server web servirà qualsiasi contenuto nella cartella pubblica. Per impostazione predefinita, visualizza la pagina index.html.
Ha un punto finale API: /api/audio. Questo punto finale cerca tutti i file nella cartella public/audio e restituisce l'elenco. Per esempio
["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"]
Per aggiungere musica come opzione, copia i file in questa cartella. Io personalmente uso Filezilla su ssh. La cartella in cui vuoi aggiungere i file è /opt/com.jonhaydock/disco-pi/public/audio
Passaggio 7: codice del sito web
Quando visiti il sito web dovresti vedere qualcosa del genere.
Se visualizzi un avviso di sicurezza è perché stiamo utilizzando un certificato SSL autofirmato. Puoi ignorarlo o aggiungerlo come eccezione.
Selezionando un nome di file, la sorgente per l'elemento audio HTML 5. sarà impostato su quel file. Una volta pronto, la musica inizierà a suonare. Una volta che la canzone è finita, la musica si fermerà.
Se selezioni l'opzione Nessuno, la riproduzione della musica verrà interrotta.
Durante la riproduzione del file musicale, la pagina Web utilizza l'interfaccia AudioContext per analizzare la musica, che viene quindi inviata al server tramite una connessione Websocket sicura.
Il messaggio è il tipo che il socket.io sul server è stato impostato per ascoltare "ws2811". Contiene un array di 50 elementi, che sono compresi tra 0 e 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}
Il server utilizza la libreria Node RPI WS281x Native (che racchiude la libreria WS281X di Jeremy Garff) per modificare i colori dei LED su una striscia LED WS2811, in base ai dati inviati tramite il websocket.
Passaggio 8: finalmente
Dovresti vedere i LED sulla striscia cambiare colore con la musica, in base all'analisi Fast Fourier Transform fatta nella pagina web.
Spero che ti piaccia questo. Fammi sapere cosa ne fai!
NOTA: in caso di problemi
Poiché questa libreria e l'audio Raspberry Pi integrato utilizzano entrambi il PWM, non possono essere utilizzati insieme.
Potrebbe essere necessario inserire nella blacklist il modulo del kernel audio Broadcom creando un file /etc/modprobe.d/snd-blacklist.conf con
lista nera snd_bcm2835
Se il dispositivo audio si sta ancora caricando dopo essere stato inserito nella lista nera, potrebbe essere necessario commentarlo nel file /etc/modules. Sui sistemi headless potrebbe anche essere necessario forzare l'audio tramite hdmi
Modifica config.txt e aggiungi:
hdmi_force_hotplug=1
hdmi_force_edid_audio=1
È necessario riavviare per rendere effettiva questa modifica
Consigliato:
Portable Disco V2 - LED controllati dal suono: 11 passaggi (con immagini)
Disco portatile V2 - LED controllati dal suono: ho fatto molta strada nel mio viaggio nell'elettronica da quando ho realizzato la mia prima discoteca portatile. Nella build originale ho messo insieme un circuito su una scheda prototipo e sono riuscito a costruire una piccola discoteca tascabile. Questa volta ho progettato il mio PCB e
Orologio del disco rigido riciclato - FuneLab: 26 passaggi (con immagini)
Orologio del disco rigido riciclato - FuneLab: Ciao a tutti!Questo è il mio quinto progetto su Instructables & Grazie a tutti è piaciuto. Hai un disco rigido rotto? Lo metteresti nella spazzatura o lo venderesti su Ebay per pochi dollari? Oh no! Preparati a trasformare il tuo disco rigido in crash in un unico
Liberare spazio su disco in Windows 10 utilizzando la pulizia del disco: 7 passaggi
Libera spazio su disco in Windows 10 utilizzando la pulizia del disco: la pulizia del disco rigido non richiede l'utilizzo di strumenti di terze parti. Può essere fatto rapidamente utilizzando l'app integrata di Windows 10 chiamata “Disk Cleanup” ed è gratuito. Avrai bisogno dei seguenti elementi prima di iniziare: 1) Desktop o Laptop2) Windows 10 i
Aggiorna il tuo iPod Mini con la memoria flash - Niente più disco rigido!: 6 passaggi (con immagini)
Aggiorna il tuo iPod Mini con la memoria flash - Niente più disco rigido!: Invece di un disco rigido, il tuo nuovo iPod aggiornato utilizzerà la memoria flash senza parti mobili per un avvio più veloce e tempi di accesso e consumi ridotti. (Ho fatto funzionare il mio iPod ininterrottamente per oltre 20 ore con una sola carica!). Avrai anche un miglioramento
Vecchio disco rigido Xbox 360 + kit di trasferimento disco rigido = disco rigido USB portatile!: 4 passaggi
Vecchio disco rigido Xbox 360 + kit trasferimento disco rigido = disco rigido USB portatile!: Allora… Hai deciso di acquistare l'HDD da 120 GB per la tua Xbox 360. Ora hai un vecchio disco rigido che probabilmente non userai usare più, così come un cavo inutile. Potresti venderlo o regalarlo… o farne buon uso