|
KIT SHIELD DMX512 PER ARDUINO
MODELLO: FT996M (VERSIONE IN KIT DA MONTARE)
Shield dotata di interfaccia RS485, lettore
per micro SD card e connettore XLR a 3 contatti. Abbinata ad Arduino e
ad un software di libero utilizzo con cui possiamo costruire sequenze di
attivazione (anche sincronizzate alla musica), permette di comandare i
dispositivi ad interfaccia DMX512 da PC. Il lettore di micro SD card può
essere gestito da Arduino allo scopo di realizzare molteplici funzioni
correlate al controllo di dispositivi DMX512: ad esempio può memorizzare
sequenze di attivazione di lampade e dispositivi per lo spettacolo, da
riprodurre dietro comando impartito da computer o semplicemente dal
pulsante P1 di cui lo shield è provvisto. La shield è predisposta per
una connessione ad un display LCD seriale con il quale possiamo
visualizzare informazioni riguardanti ad esempio la sequenza in fase di
esecuzione, l’indirizzo assegnato al dispositivo DMX512 che si sta
controllando, l’eventuale nome della sequenza memorizzata in micro SD
card, ecc.
N.B. la
shield viene fornita con tutti i componenti SMD già montati, gli unici
componenti da saldare sono i connettori strip, il connettore DMX e il
pulsante.
IL FIRMWARE
Il firmware permette ad Arduino di creare ed inviare stringhe di comando
a standard DMX512 formate da un massimo di 512 byte, ognuno dei quali
esprime 256 livelli di luminosità, oppure di movimento di un rotore sul
quale vengono montati corpi illuminanti o altro, a seconda del
dispositivo controllato. Ciascuna stringa inizia con un impulso header
(vedi l’apposito riquadro) a cui seguono in sequenza tutti i bit; ogni
decoder/controller monocanale è impostato in modo da interpretare solo
il proprio byte, mentre i decoder con controller pluricanale
interpretano un intervallo di byte. Perché ciò avvenga, ciascun decoder
conta il numero di byte a partire dall’header. Ne deriva che per
raggiungere il decoder/controller contraddistinto da un certo indirizzo,
Arduino deve generare una stringa che contenga tanti byte quanti sono i
canali fi no a quell’indirizzo: per esempio, volendo comandare la
periferica che ha per address 128, il nostro sistema deve generare una
stringa che contenga almeno i primi 128 byte (quelli dal 129 al 512 può
anche non generarli, perché irrilevanti, contribuendo a mantenere una
buona velocità di aggiornamento dei dispositivi DMX512). Alla
generazione delle stringhe provvede una libreria chiamata DMXSimple (ma
ne esistono altre...) scaricabile dal repository di Google https://code.google.com/p/tinkerit/wiki/DmxSimple; la versione attualmente online non è compatibile con l’IDE 1.0.1. Dal nostro sito www.elettronicain.it potete
invece scaricare una versione compatibile con l’ultima release dell’IDE
di Arduino. Chiaramente dovete includere la libreria nel vostro sketch.
All’interno della libreria vengono già forniti due sketch (vi accedete
con il comando di menu Esempi): il primo permette di effettuare il
fading (la dissolvenza...) di un canale DMX (vedi FadeUp, Listato 1)
mentre il secondo consente di impostare il valore e il canale DMX
tramite seriale (vedi SerialToDmx). Nell’impostare gli indirizzi delle
periferiche da controllare ricordate quanto detto poco fa, quindi se
dovete intervenire su un decoder/controller DMX512, possibilmente
impostate per esso un indirizzo basso; ciò vi permetterà di ridurre il
lavoro di Arduino e velocizzare la scansione, così da poter agevolmente
eseguire giochi di luce molto rapidi. Oltre ai due sketch di esempio
contenuti nella libreria, dal nostro sito potete scaricarne altri due
chiamati FadeUpHSV, che esegue la dissolvenza tra i vari colori RGB, e
DMX_LightSequencing, che permette di utilizzare il software Vixen, che
gira su PC in ambiente Windows e vi consente di costruire sequenze di
controllo luci definendo i canali da attivare ed eventualmente abbinando
l’accensione e lo spegnimento di luci o l’attivazione di altri apparati
DMX512, in determinati momenti della riproduzione di un brano musicale,
che potete caricare dallo stesso programma. I due sketch d’esempio
contenuti nella libreria e FadeUpHSV sono stati da noi modificati per
essere compatibili con lampade RGB controllabili in DMX (per esempio la
lampada Velleman VDPLP-64SB); dunque, in essi è sufficiente indicare
l’indirizzo di partenza del DMX, poi Arduino fa il resto. Soffermiamoci
ora sul quarto esempio di sketch (Listato 2), chiamato
DMX_LightSequencing, perché è quello che ci permette di interagire con
Arduino mediante un PC e di fare quindi le cose più interessanti; in
questo sketch, oltre all’indirizzo DMX512 di partenza, va specificato
anche il numero di canali da gestire, nel senso che bisogna dire ad
Arduino qual è l’address del primo canale e quanti canali seguono. In
questo modo Arduino potrà costruire la stringa necessaria, riempiendo
con tanti byte a zero le posizioni corrispondenti agli indirizzi
precedenti quello di partenza e terminando la stringa con il byte
dell’indirizzo dell’ultimo canale. Ciò, come accennato, evita di
sprecare risorse nella ricostruzione di quella parte di stringa che non
serve. Lo sketch va utilizzato in abbinamento al programma Vixen,
scaricabile gratuitamente dall’indirizzo https://www.vixenlights.com/;
questo software è in grado di funzionare praticamente su qualsiasi
computer (i requisiti sono un processore 486 o superiore, almeno 128 MB
di RAM e 2 GB liberi su hard-disk, sistema operativo Windows 98 o
successivo, purché vi sia installato Microsoft .NET Framework). Con
questo software è possibile creare delle sequenze luminose (ma non solo)
eventualmente legate alla musica; una delle applicazioni più suggestive
è l’abbinamento alle illuminazioni natalizie, di cui vedete una piccola
demo in questo filmato, all’indirizzo https://www.youtube.com/results?search_query=vixenlig hts&oq=vixenlights.
Vixen ha diversi formati di output tra cui anche quello seriale
(purtroppo è possibile selezionare solo le COM 1, 2, 3 o 4) che possiamo
usare per una connessione USB da COM virtuale; selezionando la porta
COM cui è collegato Arduino (Figura qui sotto "Sequence Plugin
Mapping"), il software invia il valore che deve assumere ogni canale.
Arduino interpreta questi dati e gestisce di conseguenza i propri I/O
digitali. Normalmente, infatti, i progetti disponibili in “rete”
prevedono che Arduino comandi le lampade, ovvero i loro controller,
mediante le proprie uscite digitali, ma ciò limita di molto il numero di
canali utilizzabili (anche utilizzando un Arduino MEGA le porte
disponibili sono 54).
|
Nella nostra applicazione, invece, utilizziamo la libreria DMX, la
quale tramite lo shield DMX permette di gestire 512 canali (tra l’altro
anche analogici). In questo modo è possibile gestire svariate
periferiche anche diverse dalle classiche luci, come ad esempio macchine
del fumo e per la neve, strobo, teste rotanti ecc. Se con il protocollo
DMX volete attivare dei carichi a relé, potete utilizzare i kit
Velleman K8062, i K8039, FT570, FT576 (che sono interfacce DMX512 per
utilizzatori di tipo on-off) o prodotti finiti come LPTDX424E, LPTDX626
che possono pilotare lampade RGB e via di seguito. Sul web si trovano
tantissime sequenze già pronte; l’unica cosa da fare è impostare
l’uscita della sequenza (ovvero la porta seriale) e programmare Arduino
indicando il numero di canali utilizzati nella sequenza.
All’indirizzo web https://www.landolights.com/main/component/option,com_remository/Itemid,54/func,select/id,3/
potete trovare alcune sequenze in sharing, utilizzabili per comandare
lampade, proiettori e strisce luminose ad interfaccia DMX, che
coloreranno di luce qualsiasi avvenimento. |
|
|
|