Mix and math


Swathi Sridhar e Namrata Dalvi di Microchip Technology descrivono un metodo per la miscelazione RGBA dei colori utilizzando la comunicazione Bluetooth® low energy.

Il controllo del bilanciamento dei colori nei light-emitting diode (LED), accurato e via wireless, può essere realizzato mediante un microcontroller  8-bit ed un modulo Bluetooth® 4.1 low energy per controllare lo spazio colore Red, Green, Blue, Alpha (RGBA).

La scheda dimostrativa mostrata in  Fig. 1 ha quattro LED, uno per Red, Green, Blue e Amber. La luminosità di ciascuno di questi LED viene controllata attraverso un duty di cycle pulse-width modulation (PWM).

Ciò può essere ottenuto utilizzando un microcontroler Microchip PIC16F1579, che ha quattro PWM 16-bit utilizzati per pilotare i LED.
I PWM 16-bit consentono un preciso controllo dell’intensità di ognuno dei colori dei LED e sul mix dei diversi livelli di luminosità RGBA per creare differenti colori.

Fig. 1: Scheda dimostrativa di color mixing RGBA

L’utilizzo della tecnologia di rilevamento tattile capacitivo mTouch® consente il funzionamento con due slider tattili capacitivi. Il modulo Bluetooth on-board RN4020 viene utilizzato per ricevere i valori PWM da applicazioni Android™ mobile o programmi desktop mediante comunicazione Bluetooth low energy. La scheda è alimentata da una batteria 1,5V AAA.

 

Illuminazione
La luce prodotta dai LED varia a seconda di vari fattori. La luminosità, misurata in lumen, varia per LED di diversi tipi, oltre che tra LED dello stesso tipo. Per i LED a colori, lo specifico colore misurato attraverso il valore cromatico sarà diverso tra un LED e l’altro.

Piccoli campioni di specifici marchi di LED sono stati misurati al fine di sviluppare un profilo di luminosità e cromaticità. I valori sono stati quindi usati quali valori tipici nel progetto hardware e nei calcoli dei valori cromatici del software. Questo processo è chiamato color tuning.

Il valore delle resistenze era stato fissato in modo tale che ogni colore producesse lo stesso livello di lumen. Le resistenze in serie ai LED erano le seguenti:  Red 820Ω, Blue 400Ω, Green 500Ω e Amber 500Ω.

 

Modalità di funzionamento
Esistono due modalità di funzionamento: la prima è la modalità Hue Saturation Value Plus White (HSVW) e slider per la luminosità; e la seconda è il selettore cromatico mediante Bluetooth low energy.

La scheda inizialmente si avvia nella prima modalità. Ci sono due slider tattili capacitivi sulla scheda, uno per la selezione del colore l’altro per i controllo del livello di luminosità.

Se il primo cursore viene toccato mentre si trova in modalità slider, il colore selezionato verrà restituito dai LED. Il colore selezionato viene mostrato finché non venga ricevuto un altro e successivo input. La luminosità di un particolare colore potrà essere controllata attraverso l’altro slider.

Per la seconda modalità, i valori del colore (PWM) sono selezionati utilizzando una applicazione mobile Android-based o una applicazione desktop Windows-based. I rispettivi valori PWM vengono quindi inviati alla scheda attraverso una connessione Bluetooth. L’applicazione utilizza il Diagramma di cromaticità CIE 1931 XY, ved. Fig. 2. L’esatto valore PWM, per il livello selezionato di colore e luminosità, viene calcolato ed inviato alla scheda RGBA mediante la connessione Bluetooth. Il modulo Bluetooth sulla scheda riceve quindi i valori PWM, che vengono utilizzati dal firmware della scheda RGBA per visualizzare il colore selezionato.

Fig. 2: lo spazio colori CIE 1931 con la gamma di colori dei LED RGBA

 

L’applicazione GUI del selettore cromatico consiste di un diagramma di cromaticità CIE 1931 XY. Lo spazio colori CIE 1931 mostra un ampio ventaglio di colori in termini di cromaticità (x) e luminosità (y). I livelli di colore e la luminosità dei LED, Red, Green e Blue, mappati sullo spazio colore CIE definiscono un triangolo che racchiude tutte le sfumature possibili che possono essere generate dall’output dei tre dispositivi. Ciò è noto come lista dei colori.

Per ottenere una migliore gamma di colori, viene aggiunto il LED Ambra. I dati XY del LED Ambra sono mappati sullo spazio colori CIE 1931 XY. Questo definisce un altro triangolo tra le coordinate Red, Amber e Green. Miscelando Red, Amber e Green in differenti proporzioni si producono i colori compresi nella lista dei colori di Fig. 2.

Le applicazioni GUI per PC e Android utilizzati in questo modo implementano questo algoritmo di color-mixing per calcolare il valore di duty cycle PWM necessario a produrre il colore desiderato.

L’applicazione del selettore cromatico invia i valori PWM attraverso una connessione Bluetooth. Questo modulo di connettività sarà in grado di comunicare con telefoni cellulari e PC che dispongano di un  transceiver Bluetooth v4.0 (o superiore). Il modulo è utilizzato principalmente per la ricezione dei valori di duty cycle dal dispositivo principale che esegue l’applicazione del selettore di cromaticità. In Fig. 3 viene mostrata la configurazione pin-to-pin tra il microcontroller ed il modulo BLE.

Fig. 3: Interfacciamento tra il modulo Bluetooth low energy sulla sinistra ed il microcontroller sulla destra

Comunicazione Bluetooth

Esistono due tipi di dispositivi Bluetooth: Bluetooth classic e Bluetooth low energy. Un dispositivo Bluetooth low energy può comunicare solo con un altro dispositivo BLE o uno Bluetooth dual-mode, che ha sia le capacità classiche che low energy. Quindi, il dispositivo host principale deve essere BLE o Bluetooth dual-mode per comunicare  con il modulo RN4020 usato sulla scheda RGBA.

Il modulo è conforme alle specifiche Bluetooth core v4.1 es è controllato dall’utente attraverso linee di input e output ed una interfaccia UART.

UARTsupporta i comandi ASCII per controllare o configurare il modulo per qualsiasi esigenza basata sull’applicazione.

 

Software applicativo
Quando il pannello funziona nella seconda modalità, il colore desiderato del LED  viene selezionato dal diagramma di cromaticità dall’applicazione di selezione cromatica sia di tipo desktop che Android dal color mixing RGBA. I duty cycle PWM Red, Blue, Green e Amber vengono calcolati dall’applicazione. I valori di duty cycle vengono trasferiti alla scheda attraverso la connessione Bluetooth low energy. L’applicazione desktop utilizzata è stata sviluppata utilizzando Visual Studio C#.NET. L’applicazione segue i principi MVC secondo varie classi.

La RGBA view controller class funziona come GUI o gestore di visualizzazione e come controller dell’applicazione. Questa classe è in cima alla gerarchia responsabile della creazione di nuovi oggetti di classi e l’esecuzione della dependency injection.

Gestisce anche ogni metodo per event e call GUI più appropriato.

La classe di calcolo RGBA è responsabile nello scoprire se il punto selezionato sia all’interno del triangolo RGB o del RGA o al di fuori di questi triangoli, e del calcolo del duty cycle per il colore di tutti i LED.

La classe di matrice 3×3  implementa tutte le operazioni matematiche a matrice 3×3 come: inverse, determinanti, trasposte, co-fattore e moltiplicazione. La classe Vector 3 implementa una colonna vettoriale di dimensione tre da utilizzare nel calcolo a matrice per la classe matrice 3×3. La classe di dati RGBA è un tipo di dati personalizzato per memorizzare i valori di duty cycle tutti i colori.

Nella classe wireless communications wrapper, l’interfaccia contiene tutti i metodi richiesti dalle comunicazioni wireless per implementare l’applicazione RGBA. Questa interfaccia può essere utilizzata da qualsiasi metodo di comunicazione wireless come Bluetooth low energy e Bluetooth classico. Le comunicazioni Bluetooth low energy vengono effettuate utilizzando la scheda PICtail ™ RN4020 tramite comunicazioni RS232 implementando questa interfaccia per la scheda RGBA.

Il programmatore può creare una nuova classe per implementare le comunicazioni wireless attraverso librerie Bluetooth low energy  integrate in Visual Studio o di terze parti. Questa interfaccia disattiva l’implementazione delle comunicazioni dal controller effettivo, quindi se vengono implementate nuove comunicazioni, il controller di visualizzazione e altre classi non cambiano.

Le comunicazioni RGBA Bluetooth low energy tramite la classe di periferiche RN4020 implementano l’interfaccia per il wireless communications wrapper per la comunicazione Bluetooth low energy con la scheda RGBA. Viene utilizzata una scheda PICtail connessa ad un pc PC attraverso la porta UART o RS232. Le comunicazioni seriali vengono stabilite ed i comandi vengono inviati per le comunicazioni Bluetooth low energy.

La classe di informazioni sul dispositivo Bluetooth low energy memorizzano le informazioni di base relative al dispositivo di connettività remota: nome, indirizzo e servizio server supportato. Queste informazioni vengono utilizzate per identificare e connettersi a un dispositivo remoto.

Nella classe delegata per il risultato della ricerca, il delegato effettua l’evento dalla classe Bluetooth a bassa energia quando termina la ricerca di dispositivi e i dispositivi sono disponibili come elenco per l’utente. Il tempo necessario per la ricierca è di dieci secondi.

Con la classe di delega di modifica della condizione di connessione, il delegato effettua l’evento dalla classe Bluetooth low energy per determinare se la scheda PICtail master è connessa ad un dispositivo remoto o meno e visualizza lo stato di connessione corrente per l’utente.

La classe delle costanti memorizza tutte le costanti necessarie all’applicazione, ad esempio i comandi e le risposte del modulo RN4020, service e UUID caratteristici e così via.

Anche la classe di applicazioni Java ™ per il sistema operativo Android segue il principio MVC, utilizzando classi di attività Android strutturalmente simili all’applicazione desktop.

Tuttavia, l’applicazione Android utilizza l’hardware Bluetooth low energy incorporato nel telefono Android. Il sistema operativo Android fornisce tutte le librerie necessarie per comunicazioni Bluetooth low energy con tutti i necessari event e call back.

La classe di attività di visualizzazione RGBA è simile alla classe di controller di visualizzazione in un desktop, con la differenza dei controlli GUI, che sono definiti in un file XML anziché in una classe.

Conclusioni
Questo articolo ha dimostrato come un PWM 16-bit consenta un preciso controllo dell’intensità di ogni LED. La RGBA LED color mixing board descritta è dotata di slider tattili capacitivi  per le funzioni di selezione del colore e controllo della luminosità. Un modulo Bluetooth 4.1 low energy è stato usato per le comunicazioni in modo tale che l’utilizzatore potesse inviare valori PWM alla scheda RGBA per ottenere proprio il colore desiderato. Il colore è stato scelto da una applicazione di cromaticità su desktop Windows o da telefono Android-based.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ricevi un avviso se ci sono nuovi commenti. Oppure iscriviti senza commentare.