Sommario:

RPi 3 Starboard / Generatore di particelle: 6 passaggi (con immagini)
RPi 3 Starboard / Generatore di particelle: 6 passaggi (con immagini)

Video: RPi 3 Starboard / Generatore di particelle: 6 passaggi (con immagini)

Video: RPi 3 Starboard / Generatore di particelle: 6 passaggi (con immagini)
Video: AQUILA 42 YACHT Вариант с фольгированием Роскошный сафари на моторном катамаране Яхт-тур 2024, Luglio
Anonim
Image
Image
Assemblare la scheda LED
Assemblare la scheda LED

Ti senti annoiato con il tuo Raspberry Pi? Sei pronto a comandare le forze elementari dell'universo, evocando e allontanando i fotoni a piacimento? Vuoi solo qualcosa di interessante da appendere nel tuo salotto, o un progetto fantasioso da pubblicare su facebook per mostrare a Denise che stai andando bene in questi giorni, grazie mille? Sei intrappolato in una simulazione al computer e trascorri le ore prima di essere liberato o cancellato? Se qualcuno o tutti questi ti descrivono, allora [voce dell'annunciatore] Benvenuto!

Questo tutorial ti mostrerà come assemblare e configurare un display del generatore di particelle utilizzando un Raspberry Pi 3 e alcuni pannelli a matrice RGB. Dovrebbero volerci tra una e due ore e il prodotto finito sarà di circa 30 "x 8" (escluso il Pi) e montabile a parete. Fa una bella decorazione per un soggiorno, un ufficio, una sala giochi o ovunque tu voglia metterlo.

Prima di iniziare, ecco cosa ti serve e quali sono i costi approssimativi:

  • Rpi 3 + scheda SD + custodia + alimentatore: $ 70 (da Canakit, ma probabilmente puoi ottenere le parti più economiche se le acquisti separatamente.)
  • 4x 32x32 RGB LED Matrix (preferibilmente p6 indoor con scansione 1/16): $ 80- $ 100 spediti su Alibaba o Aliexpress; $ 160 su Adafruit o Sparkfun.
  • Cappello Adafruit RGB Matrix: $ 25
  • Alimentazione 5V 4A: $ 15
  • Clip stampate in 3D: $ 1ish (queste servono per collegare i pannelli e appenderli al muro; se non hai accesso a una stampante 3D, puoi usare una striscia per tenerli insieme e alcune staffe dal negozio di ferramenta per appendilo al muro. Ho provato a trovare i file di progettazione o i file.stls per questi, ma sembrano essere passati dalla terra. Le clip sono abbastanza facili da modellare, però.)
  • 14 bulloni M4x10: $ 5ish
  • Quattro cavi IDC 4x8 e tre cavi di alimentazione per le matrici RGB (non so come si chiamano!). Questi avrebbero dovuto essere inclusi con i pannelli LED.
  • Totale: circa $ 200, più o meno.

Il progetto non richiede di saldare o avere alcuna conoscenza di programmazione specifica; presuppone che tu sappia come scrivere un'immagine su una scheda microSD. Se non sei sicuro di come farlo, la fondazione Raspberry Pi ha un buon tutorial qui.

Presuppone inoltre che tu abbia una conoscenza di base di come eseguire operazioni dalla riga di comando in Linux e la procedura dettagliata del codice presuppone che tu conosca le basi di Python (ma - non è necessario seguire la procedura dettagliata del codice per essere in grado di creare e esegui il generatore di particelle.) Se rimani bloccato su uno qualsiasi dei passaggi, sentiti libero di porre una domanda o postare in /r/raspberry_pi (che è anche, suppongo, il pubblico principale per questo istruibile)

Passaggio 1: assemblare la scheda LED

Assemblare la scheda LED
Assemblare la scheda LED

Innanzitutto, assemblerai i singoli pannelli LED 32x32 in un unico grande pannello 128x32. Dovrai guardare le tue schede e trovare le piccole frecce che indicano l'ordine di connessione; sul mio sono proprio vicino ai connettori HUB75/2x8 IDC. Assicurati di avere le frecce che puntano da dove si collegherà l'Rpi (a destra nella foto sopra) lungo la lunghezza della scheda.

Dovrai anche collegare i cavi di alimentazione. La maggior parte di questi cavi ha due connettori femmina che si collegano alle schede e un set di terminali a forcella che si collega alla fonte di alimentazione. I pannelli con cui sto lavorando hanno gli indicatori per 5V e GND quasi completamente nascosti sotto i connettori stessi, ma i cavi si collegano solo in una direzione. Dovrai assicurarti di collegare tutti i 5V insieme e tutti i GND insieme, perché se li accendi al contrario quasi sicuramente li friggi.

Poiché i cavi di alimentazione inclusi con le mie schede erano così corti, ho dovuto estenderne uno inserendo i poli del terminale a forcella nel connettore di un altro (questo è piuttosto semplice: potresti dover piegare leggermente i terminali a forcella verso l'interno, ma io' ho incluso una foto per ogni evenienza). Ho finito con due set di terminali a forcella e un connettore IDC 2x8 a destra della mia scheda LED ora allungata.

Noterai anche che ho due bulloni non attaccati a nulla su entrambe le estremità della tavola; questi saranno sulla parte superiore una volta che l'intera cosa verrà capovolta e verranno utilizzati per fissarlo al muro.

Quindi, una volta collegati tutti i pannelli con clip, cavi IDC 2x8 e cavi di alimentazione, sei pronto per passare al passaggio successivo!

Passaggio 2: prepara il Raspberry Pi

Successivamente, metterai da parte la scheda LED (per ora) e preparerai il Pi 3 per eseguirlo. Useremo Raspbian Stretch Lite e la libreria di matrici RGB di hzeller (piuttosto che la libreria di matrici di Adafruit, che è più vecchia e non mantenuta).

Innanzitutto, ti consigliamo di scrivere l'immagine Raspbian Lite su una scheda SD; una volta fatto questo, vai avanti e collega un monitor e una tastiera al pi e avvialo. (Puoi anche farlo senza testa, tramite ssh o un connettore seriale, ma se è così che stai andando probabilmente non hai bisogno che ti dica come farlo.) Avrai bisogno di una connessione Internet per questo; Se hai il wifi, collega il Pi alla tua rete wireless modificando /etc/wpa_supplicant/wpa_supplicant.conf ed eseguendo wpa_cli -i wlan0 reconfigure. (Se non l'hai mai fatto, puoi ottenere le istruzioni qui).

Una volta connesso a Internet, aggiorneremo le impostazioni del repository dpkg e scaricheremo le librerie di cui abbiamo bisogno eseguendo i seguenti comandi:

sudo apt-get update

sudo apt-get install git python-dev python-pil

git clone

Ora dobbiamo compilare e installare il codice a matrice. Quindi andrai nella cartella contenente la libreria:

cd rpi-rgb-led-matrix

e compilalo (potrebbe volerci un minuto):

make && make build-python

e installa i collegamenti Python:

sudo make install-python

Se ricevi errori durante la compilazione del codice della libreria, torna indietro e assicurati di aver installato correttamente python-dev e python-pil! I collegamenti Python non verranno compilati senza entrambi i pacchetti installati.

Dovrai anche disabilitare l'uscita audio del tuo Pi (il suono integrato interferisce con il codice matrice) modificando /boot/config.txt. Cerca la riga che dice dtparam=audio=on e cambiala in dtparam=audio=off.

Se tutto è stato compilato correttamente (riceverai alcuni avvisi sui prototipi Wstrict) il tuo pi dovrebbe essere pronto per eseguire la scheda matrice. Vai avanti e spegnilo (sudo shutdown now), scollegalo e collegheremo la scheda luminosa al pi nel passaggio successivo.

Passaggio 3: collega Pi + Matrix Hat + Scheda LED

Connetti Pi + Matrix Hat + Scheda LED
Connetti Pi + Matrix Hat + Scheda LED

Quindi, ora che il tuo Pi è spento e scollegato, colleghiamo il cappello della matrice al pi e la scheda LED al cappello della matrice. Se il tuo Pi non è già nella sua custodia, ora è un buon momento per inserirlo.

Installa il cappello della matrice allineandolo con i pin GPIO sul Pi e spingendolo delicatamente verso il basso con forza uniforme su entrambi i lati. Assicurati che i pin siano allineati correttamente, in modo che le intestazioni femminili sul cappello coprano esattamente i pin GPIO sul pi greco. Se lo disallineate, non è una catastrofe; basta tirarlo indietro delicatamente e raddrizzare tutti i perni che si sono piegati.

Una volta indossato il cappello, metti il Pi a destra della scheda LED assemblata (ricontrolla di nuovo i collegamenti di alimentazione e assicurati che le frecce puntino dal Pi verso il basso per tutta la lunghezza della scheda) e collega l'IDC cavo al cappello della matrice.

Successivamente, ti consigliamo di collegare i terminali a forcella per l'alimentazione nella morsettiera del cappello a matrice. Hai due connettori a forcella per lato, ma dovrebbero adattarsi bene entrambi. Allentare prima le viti e - Questo dovrebbe essere ovvio - assicurati di inserire i terminali 5V nel lato etichettato + (questi dovrebbero essere rossi, ma - di nuovo - ricontrolla i tuoi connettori e non dare per scontato che siano stati fabbricati correttamente) e i terminali GND (questi dovrebbero essere neri) nel lato etichettato -. Una volta che sono lì, stringi le viti sulla parte superiore della morsettiera e dovresti avere qualcosa che assomigli all'immagine dell'intestazione per questo passaggio.

Ora - potresti aver notato che questa particolare configurazione lascia esposta metà del terminale a forcella su entrambi i lati, librandosi a pochi millimetri sopra il cappello della matrice (e non molto più lontano l'uno dall'altro). E - i terminali a forcella saranno molto presto trasportando sia diversi volt che diversi ampere di Raw Power. È questo (posso sentirti chiedere dall'altra parte dello schermo) davvero il modo giusto per farlo? È, (ti avvicini e sussurri), una buona idea?

E la risposta è (rispondo, alzando le spalle) - no, non lo è. Il modo giusto per farlo sarebbe quello di togliere i terminali a forcella dai cavi di alimentazione e crimparli nuovamente nel connettore corretto per quella morsettiera (o lasciarli come fili scoperti e collegarli senza un connettore nel blocco). In caso contrario, potresti mettere del tubo termoretraibile attorno al lato esposto del connettore a forcella o semplicemente avvolgerlo nel nastro isolante. Ma il mondo è caduto e l'uomo è pigro e vanitoso, quindi non l'ho fatto.

Ma - avvolti o scartati - i terminali a forcella sono collegati alla morsettiera e siamo pronti per passare al passaggio successivo.

Passaggio 4: testare la matrice RGB

Ora che il tuo Pi è collegato alla lavagna luminosa, capovolgi la scheda e riaccendi il Pi. Puoi alimentare il cappello della matrice dopo che il Pi è stato collegato; se accendi il cappello prima del Pi, tuttavia, il Pi proverà ad avviarsi con una corrente non sufficiente e si lamenterà amaramente (e potrebbe darti un panico del kernel e non avviarsi affatto).

Se hai problemi ad avviare il Pi con il cappello a matrice acceso, assicurati di utilizzare un alimentatore abbastanza robusto per il Pi (2A+ dovrebbe essere buono) e prova a collegare sia l'alimentatore per il cappello che per il Pii nella stessa ciabatta o prolunga e accendendoli insieme.

Una volta avviato il Pi, siamo pronti per testare le matrici. Vai dove si trovano i campioni di associazione Python (cd /rpi-rgb-led-matrix/bindings/python/samples) e prova il generatore di blocchi rotanti con il seguente comando:

sudo./rotating-block-generator.py -m adafruit-hat --led-chain 4

Devi eseguirlo come sudo perché la libreria di matrici richiede un accesso di basso livello all'hardware all'inizializzazione. Il -m specifica il modo in cui i pannelli sono collegati al pi (in questo caso, un cappello adafruit) e il --led-chain specifica - hai indovinato - quanti pannelli abbiamo concatenato insieme. Righe e colonne per pannello sono entrambe predefinite su 32, quindi siamo a posto.

Ora, una volta eseguito il programma, accadrà una delle due (o, in realtà, una delle tre):

  • Non succede niente
  • Ottieni un bel blocco rotante nel mezzo della tua lavagna luminosa.
  • La lavagna luminosa funziona, credo, ma sembra… strana (metà è verde, alcune righe non si illuminano, ecc.)

Se non succede nulla, o se il pannello sembra strano, premi ctrl+c per uscire dal programma di esempio, spegni il pi e controlla tutte le tue connessioni (cavo IDC, alimentazione, assicurati che entrambi gli alimentatori siano collegati, ecc.) Assicurati anche che il cappello sia collegato correttamente; se ciò non risolve il problema, portalo su un pannello (assicurati di usare --led-chain 1 durante il test) e verifica se uno dei pannelli potrebbe essere danneggiato. Se QUELLO non funziona, dai un'occhiata ai suggerimenti per la risoluzione dei problemi di hzeller. se ANCORA QUELLO non funziona, prova a postare su /r/raspberry_pi (o sui forum di Adafruit, se hai ricevuto i tuoi pannelli da Adafruit, o scambio di stack, ecc.)

Se funziona ma sembra ancora strano (forse come l'immagine dell'intestazione per questa sezione) dopo aver controllato le connessioni, è possibile che tu abbia tutto collegato correttamente, che i pannelli funzionino correttamente, ma che Qualcos'altro stia andando Su. Il che ci porterà al nostro prossimo passo - più un diversivo che un passo - su multiplexing e scan rate. (Se la tua scheda led funziona bene e non sei interessato al funzionamento interno di questi pannelli, sentiti libero di saltare il passaggio successivo.)

Passaggio 5: Multiplexing e velocità di scansione (o: una diversione momentanea sulla strada per la tomba)

Quindi, uno degli errori che ho fatto quando ho ordinato il mio primo set di pannelli da Alibaba è che ho ricevuto pannelli per esterni (perché no, ho pensato: sono impermeabili e più luminosi!). E, quando li ho collegati al mio cappello Matrix, le cose sembravano… non a posto.

Per capire il motivo, ci dedicheremo un minuto a guardare Phil Burgess dalla descrizione di Adafruit su come funzionano questi pannelli. Noterai che Burgess sottolinea che i pannelli non accendono tutti i loro LED contemporaneamente, ma accendono serie di file. La relazione tra l'altezza del pannello in pixel e il numero di righe che si illuminano contemporaneamente è chiamata velocità di scansione. Ad esempio, su un pannello 32x32 con scansione 1/16, due righe (1 e 17, 2 e 18, 3 e 19, ecc.) sono illuminate contemporaneamente, lungo tutta la scheda, quindi il controller ripete. La maggior parte delle librerie che pilotano le matrici RGB sono costruite per pannelli in cui la velocità di scansione è 1/2 dell'altezza in pixel, ovvero pilotano due file di LED contemporaneamente.

I pannelli esterni (e alcuni pannelli interni - assicurati di guardare le specifiche prima di ordinare) hanno velocità di scansione che sono 1/4 dell'altezza in pixel, il che significa che si aspettano che vengano guidate quattro linee contemporaneamente. Questo li rende più luminosi (il che è positivo) ma fa sì che molti codici standard non funzionino con essi (il che è negativo). Inoltre, tendono ad avere i pixel fuori servizio internamente, il che richiede la trasformazione dei valori x e y nel software per indirizzare i pixel corretti. Perché sono fatti in questo modo? Non ne ho idea. Sai? Se è così, dimmelo per favore. Altrimenti dovrà solo rimanere un mistero.

Quindi, se hai uno di questi strani pannelli esterni, sei (probabilmente) fortunato! hzeller ha recentemente aggiunto il supporto per le configurazioni comuni di questi tipi di pannelli alla sua libreria. Puoi leggere di più sulla pagina github del progetto, ma puoi passare --led-multiplexing={0, 1, 2, 3} al codice di esempio (potresti anche dover fingere di avere un catena a doppia lunghezza di pannelli a mezza lunghezza) e dovrebbe funzionare.

Tuttavia, ci sono alcuni modelli di trasformazione dei pixel che non sono supportati e (indovina un po') i miei pannelli ne hanno uno! Quindi, ho dovuto scrivere il mio codice di trasformazione (ho anche - per qualsiasi motivo - devo dire alla libreria di agire come se avessi otto pannelli 16x32 concatenati insieme). che è il seguente:

def transformPixels(j, k): effJ = j % 32

effK = k% 32

modY = k

modX = j

#modX e modY sono le X e Y modificate;

#effJ ed effK si assicurano di trasformare all'interno di una matrice 32x32 prima di spingere

se ((effJ) > 15):

modX = modX + 16

se ((effK) > 7):

modY = modY - 8

modX = modX + 16

se ((effK) > 15):

modX = modX - 16

se ((effK) > 23):

modY = modY - 8

modX = modX + 16

#Quindi, li spingiamo nella posizione corretta (ogni x+32 sposta un pannello)

se (j > 31):

modX += 32

se (j > 63):

modX += 32

se (j > 95):

modX += 32

ritorno (modX, modY)

Se hai un pannello come il mio, questo potrebbe funzionare. In caso contrario, dovrai scrivere il tuo, quindi, lo sai, buona fortuna e buona fortuna.

Passaggio 6: il programma Starboard (o: di nuovo in pista e pronto per Pixel)

Ora che hai le tue matrici operative e pronte per l'uso, tutto ciò che devi fare è mettere il programma di dritta sul tuo Pi e prepararlo per l'uso. Assicurati di essere nella home directory dell'utente pi (cd /home/pi) ed esegui il seguente comando:

git clone

dovresti avere una nuova cartella, starboard, che contiene tre file: LICENSE.md, README.md e starboard_s16.py. Prova il programma di dritta eseguendolo tramite Python:

sudo python./starboard_s16.py

e dovresti ottenere un mucchio di particelle che si muovono a velocità diverse e decadono a velocità diverse. Ogni 10.000 tick circa (puoi entrare nello script Python per modificarlo/modificarlo) cambierà modalità (ce ne sono quattro: RGB, HSV, Rainbow e Greyscale).

Quindi, ora l'unica cosa che resta da fare è eseguire il codice di dritta all'avvio. Lo faremo modificando (con sudo) /etc/rc.local. Quello che vuoi fare è aggiungere la seguente riga subito prima di "exit 0" nello script:

python /home/pi/starboard/starboard_s16.py &

Dopo averlo fatto, riavvia il pi - una volta eseguita la sequenza di avvio, lo script starboard_s16.py dovrebbe avviarsi subito!

Se vuoi curiosare nello script, sentiti libero di farlo - è concesso in licenza sotto GNU GPL 3.0. Se lo script non viene eseguito per te o hai problemi con esso, sentiti libero di farmelo sapere o di inviare un bug su github e vedrò cosa posso fare per risolverlo!

L'ultima cosa che potresti voler fare è impostare SSH sul pi, in modo da poter eseguire l'accesso remoto e spegnerlo in sicurezza. Dovrai /sicuramente/ cambiare la tua password (tramite il comando passwd) e puoi trovare le istruzioni per abilitare ssh (anche dalla riga di comando) qui.

Consigliato: