Sommario:

Disco-pi: 8 passaggi (con immagini)
Disco-pi: 8 passaggi (con immagini)

Video: Disco-pi: 8 passaggi (con immagini)

Video: Disco-pi: 8 passaggi (con immagini)
Video: Montare immagini disco dd come unità rimovibili?? FACILE! 2024, Luglio
Anonim
Disco-pi
Disco-pi

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

  1. 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
  2. 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
  3. Connettore Jack Barrel - Ne ho comprato uno dal mio negozio di elettronica locale, qualcosa del genere. Assicurati solo che si adatti al tuo alimentatore
  4. 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

Collegamento dell'hardware
Collegamento dell'hardware
Collegamento dell'hardware
Collegamento dell'hardware
Collegamento dell'hardware
Collegamento dell'hardware
Collegamento dell'hardware
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

Codice del sito web
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

Image
Image

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: