università degli studi di cagliari -...
TRANSCRIPT
Università degli Studi di Cagliari
Facoltà di Scienze
Corso di Laurea in Informatica
Tesi di Laurea
Utilizzare Android e Arduino per la gestione di luci nello Spettacolo
Relatore: Tesi di Laurea di
Reforgiato Recupero Diego Angelo Gaetano Matteo Zanda
Anno Accademico 2016/2017
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 II
Ringraziamenti
Giunto al termine di questo lavoro desidero ringraziare ed esprimere la mia riconoscenza nei
confronti di tutte le persone che, in modi diversi, mi sono state vicine e hanno permesso e
incoraggiato sia i miei studi che la realizzazione e la stesura di questa tesi.
Ringrazio il mio relatore prof. Reforgiato per avermi seguito e guidato durante la redazione di
questa tesi dandomi fiducia, disponibilità e preziosi consigli.
Grazie di cuore alla mia famiglia e in particolare i miei genitori che mi hanno sostenuto in
ogni modo per raggiungere questo importante traguardo.
Ringrazio Sara per la quotidiana preziosa vicinanza che mi spinge a dare il meglio di me ogni
giorno. Grazie anche a tutta la sua famiglia, che mi accoglie con grande affetto.
Vorrei ringraziare i colleghi e gli amici con cui ho condiviso più soddisfazioni e difficoltà in
questi anni di studi, in particolar modo Antioco, Nicola, Maurizio ed Enrico.
Ringrazio tutti i miei colleghi di lavoro, in particolare Basilio e Loїc per l’amicizia e la
fiducia riposta in me e nella mia professionalità.
Ringrazio infine tutti coloro che non sono stati citati ma che mi sono stati vicini in questi anni,
hanno creduto in me e mi hanno aiutato a formarmi e farmi crescere come uomo e come
professionista.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 III
Indice
1. Introduzione ....................................................................................................................................... 1
2. Stato dell’Arte ...................................................................................................................................... 2
2.1 - Le console luci digitali ................................................................................................................. 2
2.2 - Il protocollo DMX-512 ................................................................................................................. 5
Storia del protocollo ........................................................................................................................ 5
Spiegazione del protocollo a livello logico ..................................................................................... 7
2.3 - Gli MCU e Arduino ....................................................................................................................... 9
Microcontroller Embedded Systems ............................................................................................... 9
Cosa è Arduino? ............................................................................................................................... 9
2.4 - Il sistema operativo Android ..................................................................................................... 10
2.5 - La comunicazione Bluetooth ..................................................................................................... 11
3 - Il Progetto ......................................................................................................................................... 12
3.1 - Progettazione e Realizzazione ................................................................................................... 12
3.2 - Step di realizzazione del progetto: ............................................................................................ 13
3.3 - App ............................................................................................................................................ 14
3.4 - Interfaccia fisica, il Controller Bluetooth-DMX ......................................................................... 16
Interfaccia fisica - Lato Software .................................................................................................. 16
Interfaccia fisica - Lato Hardware .................................................................................................. 18
3.5 - Comunicazione App - Interfaccia fisica Bluetooth-DMX ........................................................... 18
3.6 - Sviluppi futuri ............................................................................................................................ 21
4. Conclusioni ........................................................................................................................................ 22
5. Bibliografia ......................................................................................................................................... 23
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 1
1. Introduzione
Negli spettacoli televisivi, in teatro, nei concerti, nelle mostre e più in generale in tutte le
manifestazioni artistiche, la luce assume un ruolo di fondamentale importanza perché
permette di concentrare l’attenzione degli spettatori su precisi punti di fuoco.
Gli spettacoli teatrali, applicazione nella quale il progetto (di cui questa tesi tratta) trova
maggiore utilizzo, hanno in genere una sequenza di luci predeterminata dal Light Designer e
dal Regista della produzione. Tale sequenza segue il susseguirsi delle scene con posizione,
intensità, colore e tempi di transizione delle luci ben definiti e codificati.
Vengono quindi utilizzate sofisticate console luci digitali, capaci di offrire ai Light Designer
tutte le possibilità di gestione delle quali essi necessitano, comprendenti funzioni semplici
come Submasters e Cuelists e talvolta funzioni complesse, come gestione e creazione di
Fixtures, Macro, Exec, effetti per Motorizzati e Matrici RGB, Visualizer, gestione Audio-
Video, etc.
L'utilizzo dei dispositivi mobile è da alcuni anni sostenuto dalle grandi case produttrici, ma
col principale scopo di interfacciarsi alle loro costose consoles, dare loro una funzionalità
aggiunta. Lo sviluppo di sistemi a basso costo è un business ancora poco praticato ma molto
utile e richiesto. E’ da qui che parte l’idea di realizzare il progetto descritto in questa tesi.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 2
2. Stato dell’Arte
2.1 - Le console luci digitali
Ad oggi le consoles digitali si dividono in tre tipologie principali:
All-In-One comprendenti interfaccia fisica con faders e pulsanti di controllo, tastierino
numerico, uscita video per uno o più
monitor touchscreen, veri e propri
computer all'interno, con sistema
operativo ottimizzato per far
funzionare al meglio il sistema. Costo
dai circa 2000 a più di 30000€.
Fig. 2.1 – Grand Ma 2 Full-Size
Interfaccia fisica collegabile via
USB (Wing) al proprio computer,
con installato il software di
controllo delle luci, per un costo
tra i circa 1500 e i 5000€
Fig. 2.2 – Laptop con Mini Wing Chamsys
Interfaccia fisica collegata a microcontrollore e piccolo
display, con capacità di gran lunga inferiori alle
precedenti tipologie, nella fascia di prezzo di alcune
centinaia di euro.
Fig. 2.3 – ShowTec Showdesigner 1024
Tutte queste centraline devono pilotare, tramite segnale digitale, moduli dimmer in grado di
erogare la corrente necessaria ad alimentare centinaia di lampade da 1000, 2000 o anche
5000W, oppure LED multicolore, luci motorizzate, cambiacolore, macchine del fumo,
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 3
meccanismi di movimento di scena, ognuno con uno o più canali, dedicati a tutte le funzioni
relative al device.
Ogni console dispone di una o più uscite DMX, con connettori tripolari, pentapolari o RJ45,
capaci di pilotare fino a 512 canali ciascuna. Ogni uscita gestisce un “universo”.
Per farci un’idea su cosa siano i canali di cui sopra osserviamo la seguente tabella, contenente
informazioni di massima su apparecchi comunemente utilizzati in ambito teatrale:
Device Info Canali DMX
Dimmer Alimenta fino a sei lampade a incandescenza da 2000W, un
canale DMX per ogni luce
1 - 4 - 6 - 8 -
12
Led Multicolore Un canale per ogni intensità di colore più i controlli:
dai fondamentali Rosso, Verde, Blu, per arrivare a Bianco,
Ambra, UV, Strobo, Master, Effetti, Macro, Service
3 - 11
Testa Mobile / Scanner Pan, Pan fine, Tilt, Tilt fine, Master, Ciano, Magenta,
Giallo, Ruote Colori, Ruote Gobos, Iris, Service, etc
~10 - 30
Macchina del fumo Intensità fumo, Ventola, Temperatura fumo 1 - 3
Tab. 2.1 - Esempi di quantità di canali DMX per i più comuni devices utilizzati in Teatro
Fig.2.4 - esempio di collegamento di catena di devices a singolo canale
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 4
Ad ogni device, collegato in cascata nella catena a valle della console, viene assegnato un
indirizzo DMX di partenza. L’impostazione dell’indirizzo si esegue maggiormente tramite
display e pulsanti o tramite DIP-Switch di selezione con codice binario, ad un indirizzo
nell’intervallo 1 - 512.
Fig. 2.5 - Esempi di interfacce di selezione indirizzo DMX presenti nei device
Il device quindi risponderà solo ai valori corrispondenti il proprio range di canali
Esempio:
il collegamento di due Dimmer da sei canali e due Par Led da sei canali. Un possibile schema
di indirizzamento dei canali è:
Dimmer A = Ch 1-6 In questo esempio:
Dimmer B = Ch 7-12 i Dimmer sono connessi a sei Par Can con
Led Par A = Ch 13-18 lampade alogene
Led Par B = Ch 19-24 i Led sono MSRGBW, hanno sei canali:
Led Par C = Ch 25-30 Master, Strobo, Red, Green, Blue, White.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 5
Fig. 2.6 - Esempio semplice di collegamento dei devices nella catena DMX
2.2 - Il protocollo DMX-512
Storia del protocollo
“The original version of the DMX512 Standard was developed in 1986 by the
Engineering Commission of the United States Institute for Theatre Technology, Inc.
(USITT). Minor revisions were made in 1990. DMX512 has gained international
acceptance throughout the entertainment industry, even though USITT is not formally
accredited as a standards making body. The earlier versions of this Standard covered
only data used by dimmers. In practice this Standard has been used by a wide variety
of devices; this version recognizes this fact.
In 1998, it became evident that additional updates to the Standard were necessary and
formal recognition through an internationally recognized standards organization was
required. USITT issued a Call for Comments in order to solicit recommendations for
changes to the Standard. At the same time, USITT transferred maintenance of
DMX512 to ESTA's ANSI-accredited Technical Standards Program, now operating as
PLASA's Technical Standards Program.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 6
A Task Group established under the TSP’s Control Protocols Working Group acted on
the proposals received in response to the Call for Comments. The primary goal was to
make editorial updates to DMX512 appropriate for current times, including the
addition of technical features while maintaining a balance with backward
compatibility. Many proposals, while technically innovative, could not be accepted
because their implementation would not have been backward compatible and would
have immediately rendered obsolete most of the installed base of equipment.
In 2004, as a result of the actions taken on those proposals and subsequent
development under the Policies and Procedures of the ESTA Technical Standards
Program, E1.11-2004 was approved as an American National Standard. Despite
being an American National Standard, development has had strong international
participation and support.
Beginning in 2007, based on comments and requests from users and manufacturers,
minor revisions were made to E1.11-2004 and submitted to the public for review and
comment. These changes included defining one of the reserved Alternate START
Codes for UTF-8 text packets, a note emphasizing refresh timings, and removal of the
informative PICS (Protocol Implementation Compliance Statement) clauses. The PICS
clauses were simply a summary of the mandatory requirements of the standard, but
often had to employ language that used double negatives and led to confusion about
some requirements. The 2008 edition was the result of those revisions to the 2004
edition. This edition is a reaffirmation of the 2008 edition.” [1]
Come citato nel documento dell’American National Standard riportato sopra, è importante
notare quanto impegno è stato impiegato, nel corso dell’evoluzione dello standard, per
mantenere retro-compatibilità con i vecchi sistemi. Le moderne consoles possono quindi
lavorare in teatri con vecchie dotazioni tecniche e viceversa.
[1]
American National Standard E1.11 – 2008 (R2013)
Entertainment Technology USITT DMX512-A Asynchronous Serial Digital Data Transmission Standard for Controlling
Lighting Equipment and Accessories CP/2007-1013r3.1 - ANSI E1.11-2008 (R2013) - Pag. xii
http://tsp.esta.org/tsp/documents/docs/E1-11_2008R2013.pdf
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 7
Il protocollo DMX, il cui nome è acronimo di Digital Multiplex, è basato su un sistema di
comunicazione seriale asincrona con lo scopo di uniformare i controller digitali con i Dimmer
di diversi produttori.
Esso è tuttora utilizzato negli impianti di illuminazione per controllare sia la luminosità delle
lampade che i movimenti dei sistemi più sofisticati, dai light-scanner ai dispositivi a testa
mobile, dai laser alle macchine per il fumo, tutti con compatibilità al protocollo.
Il segnale digitale di comunicazione sfrutta un’interfaccia elettrica differenziale basata sulla
comunicazione seriale del protocollo RS485. E’ sempre più diffuso l'utilizzo del protocollo
ArtNet, che sfrutta i supporti Ethernet per la trasmissione del segnale, più veloce del comune
cavo DMX e capace di trasmettere decine di segnali contemporaneamente. Esistono tuttavia
parecchi altri protocolli, quali ArtNet 2, ArtNet 3, StreamingACN (sACN), ESP Net, OSC
(Open Sound Control), PathwayPathport, SandNet, ShownetStrand. creati e supportati da
aziende che sperano il proprio possa diventare uno "standard de facto".
Spiegazione del protocollo a livello logico
“The controller bursts out a stream of bytes, up to 512 bytes long. Each device on the
bus has a configured address, and the address instructs which byte in the burst is
meant for it.
Fig.2.7 - composizione in byte di un pacchetto DMX, sono riportati i codici di inizio
comunicazione e i vari slot con i 512 valori
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 8
A simple light fixture might receive a single byte controlling brightness, while a
motorized fixture might receive many bytes, to control panning, color,
brightness, cucoloris selection, and other effects.
DMX - or more specifically DMX512 - is a standard for digital communication use to
control stage lighting - so a lighting desk sends DMX messages to fixtures thru the
cables to get control of them. That cables are 3 or 5 pin XLR cables, and devices can
be daisy-chained to make a network.
The 512 after the DMX refers to the number of control channels used on one network
segment (a “universe”) of devices.
One DMX channel controls one parameter - for example the intensity of a dimmer.
DMX channels using 8-bit so a value will be in the 0-255 range.
Some fixtures may using several channels to control various parameters like pan, tilt,
red, green, blue but there are things like mono-color LED strips with dimmers which
can be controlled on a single DMX channel.” [2]
Come descritto nell’articolo di cui sopra, gli apparecchi vengono collegati in catena tramite
cavo XLR a 3 o 5 pin, nel circuito di connessione passa il segnale con i valori dei 512
indirizzi. Tale segnale viene chiamato “universo”. Un universo può gestire 512 valori, qualora
vi fosse necessità di usarne di più (capita spesso quando si utilizzano numerose teste mobili o
led multicolore, o ancora fare “pixel Mapping” con matrici di led, o si vuole dividere in più
gruppi i device per diminuire la lunghezza della catena di collegamento e diminuire il rischio
di perdita di segnale o “Mirror effect”) si utilizzeranno quindi più universi. A tal proposito è
consigliato porre, alla fine di ogni catena, un terminale con resistenza da 120Ω. Gli schemi di
assegnazione dei canali all’interno dei device si chiamano fixtures.
[2] http://imimot.com/blog/lighting-for-beginners-dmx-and-art-net/ - articolo scritto il 09/14/2015
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 9
2.3 - Gli MCU e Arduino
Microcontroller Embedded Systems
Come citato nell’articolo “Microcontroller Embedded Systems” di Ian Poole [3]
, i
microcontrollori sono componenti hardware che comprendono i principali elementi di un
piccolo computer in un unico chip. Essi contengono processore, memoria rom, ram e talvolta
EEPROM, poi dei pin per connessioni digitali e analogiche. Questo accorpamento di
componenti consente di ridurre le dimensioni dei sistemi, i consumi energetici e i costi di
produzione rendendoli l’ideale per piccoli sistemi integrati. Sono tuttavia da accettare
compromessi in termini di prestazioni e flessibilità.
Fig.2.8 - Rappresentazione per blocchi dell’architettura di un microcontrollore base,
esso contiene CPU, RAM, ROM e IO.
Cosa è Arduino?
Sul sito ufficiale di Arduino è riportato che “Arduino is an open-source electronics platform
based on easy-to-use hardware and software. Arduino boards are able to read inputs - light
on a sensor, a finger on a button, or a Twitter message - and turn it into an output - activating
a motor, turning on an LED, publishing something online. You can tell your board what to do
by sending a set of instructions to the microcontroller on the board. To do so you use
[3] http://www.radio-electronics.com/info/processing-embedded/embedded-systems/microcontroller-mcu-systems.php - Ian
Poole
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 10
the Arduino programming language (based on Wiring), and the Arduino Software (IDE),
based on Processing.” [4]
Il progetto è nato in Italia e nel corso degli anni sta venendo impiegato in molteplici progetti
in tutto il mondo, dal campo amatoriale a quello artistico fino a quello scientifico. Gli
elementi più importanti di questa piattaforma sono la semplicità di utilizzo e la comunità che
si è venuta a creare intorno ad essa e che lo spinge a crescere sempre di più condividendo
progetti, sviluppando nuove librerie e hardware compatibile che ne possa incrementare le
funzionalità e la possibilità di utilizzo nei più svariati contesti ed aprire le porte al mondo
della programmazione anche ai novizi.
La piattaforma Arduino è quindi non solo una scheda programmabile ma un ambiente di
sviluppo completo, con un software IDE dedicato.
La scheda è stata basata inizialmente solo su microcontrollori a 8-bit AVR prodotti dalla
Atmel e componenti complementari per facilitarne l'incorporazione in altri circuiti. Ad oggi
sono in commercio numerose versioni della scheda, alcune con processori Atmel basati su
architetture ARM a 32 bit o Atheros, con una distribuzione Linux ottimizzata.
2.4 - Il sistema operativo Android
Android è un sistema operativo sviluppato da Google per Smartphone e Tablet e
successivamente esteso ad apparecchi come televisori, automobili, orologi e occhiali, basato
su kernel Linux e gli sviluppi sono basati su codice Java.
Esso deve senz’altro parte del suo successo alla grande quantità di applicazioni per esso
disponibili e al Play Store, market on-line creato da Google che contiene migliaia di app
gratuite o a pagamento create dalla comunità di sviluppatori Android in tutto il mondo.
Sul Web è possibile trovare un’enorme quantità di tutorial e esempi, sono presenti IDE
gratuiti che aiutano l’apprendimento dello sviluppo software e stimolano la creatività degli
sviluppatori.
[4]
https://www.arduino.cc/en/Guide/Introduction
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 11
2.5 - La comunicazione Bluetooth
La tecnologia Bluetooth consiste di un protocollo di comunicazione a basso consumo ed a
breve raggio
I dispositivi Bluetooth possono instaurare fra loro delle connessioni dando vita a delle vere e
proprie reti. La rete più semplice, detta Piconet, è composta da un dispositivo che assume il
ruolo di master e fino a sette dispositivi che assumono il ruolo di slave. Ogni comunicazione
passa attraverso il master in maniera del tutto analoga ad una rete a stella. Il master gestisce la
frequenza di portante della comunicazione e trasmette solo nei timeslot pari, mentre lo slave
trasmette nei timeslot dispari al fine di evitare collisioni.
E’ possibile far comunicare i master di più Piconet tra loro, costituendo una rete più ampia e
chiamata Scatternet. Essa può contenere fino a dieci Piconet, per un totale di ottanta
dispositivi Bluetooth. Ogni Piconet opera a frequenze differenti per evitare interferenze nelle
comunicazioni.
Un terminale Bluetooth può appartenere contemporaneamente a due Piconet purchè sia in
grado di operare a frequenze differenti a seconda che comunichi con i dispositivi dell’una o
dell’altra: naturalmente non può assumere il ruolo di master in entrambe le Piconet
contemporaneamente.
Il progetto presentato nella presente tesi si avvale di una comunicazione Piconet tra il device
Android e il modulo Bluetooth dell’Arduino, in cui il device Android copre il ruolo di master.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 12
3 - Il Progetto
Il progetto consiste nello sviluppo di un'app per smartphone e tablet Android per la gestione
delle luci nello spettacolo, sfruttando un’interfaccia fisica Bluetooth - DMX creata ad-hoc
utilizzando Arduino.
Lo sviluppo vuol permettere ai professionisti dello spettacolo, ma anche a DJ, musicisti e
appassionati di avere un apparecchio portatile e autonomo capace di gestire un parco luci
professionale, interagirci in tempo reale, dirigere le luci degli spettacoli comodamente seduti
in platea accanto al pubblico. Vuole soprattutto sopperire all'acquisto di console da centinaia o
migliaia di euro per piccoli teatri, club, o qualunque edificio con illuminazione centralizzata, a
fronte di una spesa di poche decine di euro per creare o acquistare l'interfaccia Bluetooth-
DMX.
3.1 - Progettazione e Realizzazione
Tutto il progetto è pensato e realizzato con l'ottica del garantire minor latenza e minor numero
di errori possibili dovuti alla trasmissione e ricezione dati durante l'utilizzo del prodotto.
Grandi attenzioni sono quindi state date al ridurre al minimo le operazioni di scrittura e
lettura, evitare trasmissione ridondante di dati, verificare integrità dei pacchetti e richiederne
l'invio in caso di errori.
Fig.3.1 - Architettura Hardware del progetto
Android device
Bluetooth Module
Arduino nano
Display LCD
MAX485
DMX Plug
Bluetooth Communication
Controller Bluetooth-DMX
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 13
3.2 - Step di realizzazione del progetto:
[Progetto] Concettualizzazione dell'idea,
[Progetto] Valutazione e analisi delle effettive necessità per i professionisti delle Luci
(Analisi dei requisiti)
[Progetto] Analisi dei sistemi attualmente utilizzati in Teatro e concettualizzazione
delle funzioni che si vuole implementare nel progetto
[App] Creazione di un mock-up dell'Android App
[App] Realizzazione delle schermate grafiche (xml) delle activity
[App] Implementazione della classe Java per la modalità Single Channels,
comprendente
o Barra delle funzioni, con Titolo e bottone Menu; Sei pulsanti funzione; lista di
Fader, in cui ogni elemento è composto da Numero Canale, SeekBar, Valore
Canale, Nome Canale.
o Realizzazione del metodo di invio dati via bluetooth, inviando tutti i valori in
un unico pacchetto ogni qualvolta si interagisce con i fader
[Hardware] Costruzione del sistema hardware, collegando su una breadboard:
o Un Arduino Nano
o Un modulo bluetooth HC-05
o Un integrato MAX485 per la comunicazione DMX
o Un Display LCD 16x2 utile a mostrare all’utente feedback dell'Arduino
[Arduino] Stesura del codice per l'Arduino, nel dettaglio:
o Ricezione dei dati Bluetooth tramite porta seriale
o Analisi della correttezza dei dati e memorizzazione in un array
o Invio dati DMX tramite porta RS-485
o Implementazione algoritmi di analisi dati ricevuti e gestione interrupts sulla
porta seriale al fine di ridurre il numero di errori
o Implementazione trasmissione di comandi per il reinvio dei dati arrivati
corrotti.
[App] Realizzazione della pagina per la modalità Scene
o Modifica del codice di invio pacchetti via Bluetooth, utilizzati i thread per
rendere più stabile la comunicazione
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 14
o Gestione delle scene, grafica molto simile alla modalità Singolo Canale, ma
con i nomi delle scene e diversi pulsanti. Ordinare i valori come array di array
di valori Fader.
[App] Modifica della struttura dei pacchetti inviati via bluetooth
o Ora viene inviato un solo canale per volta al fine di ridurre la dimensione dei
pacchetti e diminuire gli errori di comunicazione
[Arduino] Miglioramento della comunicazione:
o Adeguamento del codice alla nuova struttura di pacchetti
[Hardware] Saldatura dei componenti su basetta millefori
o Al fine di rendere il sistema più robusto durante il trasporto e l’utilizzo tutti i
componenti sono stati saldati ad una basetta millefori e alloggiati in uno
scatola metallica.
3.3 - App
Lo studio di un'interfaccia semplice, intuitiva ma al contempo completa, richiede lo studio
dei casi d'uso per tutte le varie modalità e tutte le fasi di creazione del prospetto luci, nel
susseguirsi delle scene durante gli spettacoli.
A seguire un’immagine che mostra che l’intera applicazione è costituita di sole tre activity:
Fig.3.2 - Schema delle activity che compongono la GUI.
All’avvio dell’applicazione si presenta la schermata di selezione del device, quindi la
modalità a singolo canale, da cui è possibile passare alla modalità scene.
1 - Device List
Activity
2 - Single
Channels
Mode Activity
3 - Scenes
Mode Activity
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 15
Device List - richiama la lista di devices Bluetooth associati al
telefono e permette di richiamare l’apparecchio compatibile.
Una volta scelto il device, il codice Java inizializza l’Adapter e
il Socket Bluetooth, che gestiscono il modulo bluetooth del
telefono/tablet.
Fig.3.3 - Device List Activity
Modalità Single Channels - permette l’interazione con i
singoli canali DMX, mostrando nell’interfaccia una SeekBar
per ogni canale. L’utente potrà creare la propria scena luci
settando i vari valori secondo le proprie esigenze, per poi poter
salvare i livelli in una nuova Scena.
I dati vengono memorizzati in un database SQLite.
Per rendere più semplice l’utilizzo su smarphone di un elevato
numero di canali, questi sono stati divisi in più pagine da 12
elementi, scorribili coi tasti Prev e Next.
Fig.3.4 - Single Channels Activity
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 16
Modalità Scene - Mostra la lista delle scene create e ne
permette la miscelazione. Le scene possono essere intese come
insieme di tutti i canali ognuno con il proprio livello, o come
gruppi di canali comandati insieme. La creazione di gruppi di
canali consente di gestire le luci secondo le logiche delle piante
luci, quindi per settori di luce. Ad esempio su un palcoscenico
possono essere considerati “gruppi” l’insieme di tutte le luci
frontali, oppure tutti i controluce, o i tagli laterali, o anche le
luci posizionate perpendicolari al pavimento, dette “a pioggia”.
Tale concezione dei gruppi consente una creazione molto rapida
delle scene e un’altrettanto semplice gestione di esse in tempo
reale.
Fig.3.5 - Scenes Activity
All’apertura, l’activity legge i valori memorizzati nel database e da essi crea le varie
memorie.
3.4 - Interfaccia fisica, il Controller Bluetooth-DMX
Interfaccia fisica - Lato Software
Il programma per l’Arduino (viene chiamato “sketch”) è stato scritto con il suo IDE ufficiale,
alla versione 1.8.1 e sono state utilizzate le seguenti librerie:
SoftwareSerial.h (libreria ufficiale) per creare una porta parallela virtuale alla quale
collegare il modulo Bluetooth e non impegnare i pin 0 e 1, evitando così conflitti con
la comunicazione seriale via USB col computer durante il caricamento degli sketch;
DMXSerial.h, (scritta da Matthias Hertel - www.mathertel.de) che gestisce l’invio
seriale del segnale tramite protocollo RS-485, sfruttando sfruttando l’UART di
Arduino;
LiquidCrystal.h, (libreria ufficiale) come dice il nome, serve a gestire il display LCD.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 17
Esso è composto dalle seguenti funzioni e dichiarazioni
- inclusione delle librerie
- dichiarazione delle variabili
- setup() : funzione di inizializzazione dei pin dell’Arduino, del display LCD e delle
variabili che gestiscono la comunicazione DMX
- loop() : funzione “main” dello sketch, essa gestisce tutto il sistema hardware e
richiama le varie funzioni nel programma secondo gli esiti di variabili di controllo
che confermano la riuscita o non riuscita dei vari passi.
- receiveValues() : legge i valori nel buffer della porta seriale ricevuti via bluetooth e,
se non sono corrotti, poi memorizza le coppie indirizzo-valore in variabili temporanee
- saveValues() : controlla che i valori ricevuti siano entro i range richiesti e che non
siano ridondanti. Se i dati sono corretti vengono memorizzati nell’array che verrà
trasmesso via DMX
- sendDmxValues() : per ogni coppia indirizzo-valore da trasmettere, onde evitare
ridondanze, la funzione controlla che esso non sia stato modificato dopo l’ultimo invio
dello stesso. Dopo di che chiama la funzione DMXSerial.write(indirizzo, valore) di
libreria, che invia i dati all’impianto luci e la funzione sendBluetoothValues(indirizzo,
valore) che invia i dati al device Android, dal quale si stanno ricevendo i dati.
- sendBluetoothValues() : utilizzata per inviare feedback all’applicazione Android,
utile a contrastare gli errori di comunicazione.
- refresh() : invia periodicamente un impulso di refresh all’impianto luci per evitare
che questo si disattivi per timeout del tempo di ricezione di segnale, tempo che varia
secondo la tipologia di apparecchi e la loro casa costruttrice, in genere tra i cinque e
i venti secondi. Sfrutta il counter della funzione millis() per l’invio di un segnale
neutro ogni due secondi.
Fig.3.6 - Lista delle funzioni, richiamate all’interno della funzione loop()
loop()
receiveValues()
saveValues()
sendDmxValues()
sendBluetoothValues()
refresh()
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 18
Interfaccia fisica - Lato Hardware
Componenti utilizzati
Un Arduino Nano v3 basato su processore ATMega328 con logica a 5V e 16MHz;
Un modulo bluetooth v2.0 HC-05;
Un integrato MAX485 per la comunicazione DMX;
Un Display LCD 16x2 per i feedback dell'Arduino, utile per il debugging in fase di
programmazione e per dare un feedback all’utente sullo stato di funzionamento.
Fig.3.7 - Immagine che riporta il collegamento del circuito su breadboard
3.5 - Comunicazione App - Interfaccia fisica Bluetooth-DMX
Si è dedicata molta attenzione alla qualità di trasmissione dei dati e alla loro integrità.
Sono state implementate e testate due modalità di invio dei segnali verso l’interfaccia
Bluetooth-DMX, ognuna con differenti pregi e difetti.
La comunicazione bluetooth avviene tramite porta seriale e attraverso tale i dati vengono
trasmessi e ricevuti byte dopo byte in maniera seriale. Inizialmente è stato sviluppato un
algoritmo di invio dei dati in maniera massiva, trasmettendo ciclicamente tutti i valori in
un unico grande pacchetto ogni volta che viene toccato un fader nell’Applicazione. A
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 19
valle, il microcontrollore nell’interfaccia hardware riceve uno per uno i byte discernendoli
tra valori numerici e caratteri per poter suddividere tutti i valori secondo i canali di
appartenenza.
Un pacchetto risulta quindi essere composto come segue
“ ! ” carattere iniziale
valore 1 compreso tra 0 e 255
“ – ” carattere di divisione
valore 2 compreso tra 0 e 255
“ – ” carattere di divisione
valore 3 compreso tra 0 e 255
--- ---
--- ---
valore 512 compreso tra 0 e 255
“ & ” carattere finale
assumendo quindi una forma simile alla seguente
“!255-0-110-50-0-280- …….. -0&”
Il numero di Byte trasmesso sarà quindi compreso tra 1026 e 2050.
! (0-)*512 & 1+(1+1)*512 +1 = 1026
! (255-)*512 & 1+(3+1)*512 +1 = 2050
Durante la fase di test, utilizzando solo il modulo bluetooth dell’interfaccia, questo
metodo si è rivelato efficace, in quanto circa il 95% dei dati ricevuti risultava corretto
(percentuale ottenuta inviando una serie di pacchetti e contando il numero di quelli
corrotti nel totale dei pacchetti inviati).
Una volta attivata la funzionalità DMX, il sistema si è rivelato veramente debole, in
quanto la libreria utilizzata DMXSerial.h sfrutta il protocollo USART e gli interrupt di
sistema. Ad ogni invio di dati si avrà quindi l’intervento di un interrupt che blocca
momentaneamente le operazioni del microcontrollore, tra cui quella di
memorizzazione nel buffer della comunicazione bluetooth in ingresso via porta seriale.
E’ stato fallimentare il tentativo di gestire i timing di disattivazione e riattivazione
degli interrupt prima e dopo la trasmissione DMX. Il processo di disattivazione e
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 20
riattivazione richiede numerosi millisecondi al microcontrollore, rallentando tutto il
sistema.
La seconda opzione di trasmissione adottata consiste nell’inviare una per volta le
coppie Indirizzo – Valore.
I nuovi pacchetti si presenteranno nel seguente modo:
“ ! ” carattere iniziale
indirizzo 1 - 512
“ – ” carattere di divisione
valore 0 - 255
“ & ” carattere finale
assumendo quindi una forma simile alla seguente nel caso del valore di 255
all’indirizzo 12:
“!12-255&”
La lunghezza delle stringhe trasmesse sarà ora compresa tra 5 e 9 caratteri, quindi la
sequenza di Byte in ogni trasmissione è circa 100/200 volte più piccola del metodo
precedentemente descritto.
Qui si è cercato di snellire la comunicazione per diminuire la possibilità di dati corrotti
ed è stata implementata una richiesta, da parte del microcontrollore, di reinvio dei
pacchetti scartati. Si avrà quindi meno ridondanza in quanto vengono inviati solo i
valori relativi ai canali con la quale si è interagito nel device Android.
Maggiore affidabilità è stata raggiunta utilizzando, all’interno dell’app Android,
thread per l’invio e la ricezione dei dati bluetooth.
Ora i pacchetti, nonostante siano drasticamente ridotti in lunghezza, non sono
aumentati in quantità. Ragionevolmente quindi, a parità di singoli pacchetti che
comunque possono arrivare corrotti e quindi scartati, quelli corretti sono più che
centuplicati.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 21
3.6 - Sviluppi futuri
Importanti punti da sviluppare saranno, secondo categoria:
Relativamente all’Applicazione per Smartphone-Tablet
o Sviluppo multipiattaforma dell’applicazione, anche per IOS e Windows Phone.
o Playback - registrazione in tempo reale di una sequenza di luci in un intervallo
di tempo, memorizzazione su database e riproduzione della registrazione
o Stack - Creazione della sequenza di tutte le scene dello spettacolo, riprodotte in
sequenza con un GO o con temporizzazione, prevedendo fade-in e fade-out
delle scene.
o Salvataggio e caricamento degli show - salvataggio su file degli show,
composti dall’insieme delle scene create e dallo stack e da eventuali
impostazioni personalizzate.
Interfaccia hardware
o Sviluppare una versione che sfrutta il Wifi e il protocollo ArtNet
o Sviluppare una versione dotata di più uscite DMX da 512 canali ciascuno,
magari quattro uscite per un totale di 2048 canali
o Qualora un Arduino non dovesse riuscire a gestire le funzionalità sopra
riportate, sviluppare una versione sostituendo l’Arduino Nano con un
Raspberry PI Zero W, di dimensioni comunque contenute ma dotato di
maggior capacità di calcolo e già dotato di moduli Bluetooth e Wifi.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 22
4. Conclusioni
La realizzazione di un prodotto a livello professionale richiede lo sviluppo di una piattaforma
robusta, stabile e affidabile in ogni situazione. Esso necessita di brevetti, certificazioni,
attrezzature industriali di fabbricazione e una struttura software capace di gestire ogni
possibile problema e garantire continuità nel lavoro.
Il progetto descritto in questa tesi è ben lontano da poter essere definito professionale. Esso
vuole essere stimolo al continuare ad ideare, concettualizzare, realizzare ciò di cui abbiamo
bisogno e ciò che la fantasia ci spinge a costruire.
Negli ultimi anni lo sviluppo “Embedded” si è diffuso in tutto il mondo tra hobbisti, artisti,
appassionati di elettronica e programmazione, anche inesperti. Si sono formate comunità di
sviluppatori che condividono le proprie idee e i risultati dei propri lavori, mettendoli a
disposizione di chiunque voglia replicarli, modificarli o migliorarli, nella filosofia dell’
“open-source”. Complice è poi il mercato dell’elettronica, che propone a prezzi bassissimi
microcontrollori e microcomputers, e con essi le cosidette “shield”, schede di espansione
ideate dalla comunità che permettono di aggiungere i componenti hardware necessari a
determinate funzionalità, come driver per motori, comunicazione wireless, display, pulsanti
per videogiochi, moduli GSM, Ehternet, led e tante altre.
Tutto questo ci consente di creare nuovi device: i nostri personali devices, con le funzionalità
che vogliamo e che possano interfacciarsi con sistemi già esistenti, utilizzare i loro standard,
aggiungerne delle funzionalità.
E’ dalla realizzazione delle piccole idee che prendono vita i grandi progetti.
Tesi di Laurea Triennale – Matteo Zanda – matr.47143 23
5. Bibliografia
[1] American National Standard E1.11 – 2008 (R2013)
Entertainment Technology USITT DMX512-A Asynchronous Serial Digital Data
Transmission Standard for Controlling Lighting Equipment and Accessories CP/2007-
1013r3.1 - ANSI E1.11-2008 (R2013) - Pag. xii
http://tsp.esta.org/tsp/documents/docs/E1-11_2008R2013.pdf
[2] http://imimot.com/blog/lighting-for-beginners-dmx-and-art-net - Imimot Kft 09/14/2015
[3] http://www.radio-electronics.com/info/processing-embedded/embedded-
systems/microcontroller-mcu-systems.php - Ian Poole
[4] https://www.arduino.cc/en/Guide/Introduction
[5] http://sisinflab.poliba.it/scioscia/resources/Bluetooth_intro.pdf - Floriano Scioscia -
SisInfLab