Eine Publikation der Swissprofessionalmedia AG
PDF download
RGBA-Farbmischung über Bluetooth-Low-Energy-Datenkommunikation : Ausgabe 15/2017, 20.09.2017

Beleuchten nach Zahlen

Eine genaue und drahtlose Steuerung der Farbbalance von LEDs lässt sich mit einem 8-Bit-Mikrocontroller und einem Bluetooth 4.1 Low Energy (BLE) Module realisieren. Diese übernehmen die Steuerung des roten, grünen, blauen und Alpha-(RGBA)-Farbraums (Bild 1).

Bilder: Microchip

Das Demo-Board (Bild 2) enthält vier LEDs – je eine für Rot, Grün, Blau und Bernsteingelb (Amber). Die Helligkeit jeder dieser LEDs wird über das Tastverhältnis eines Pulsweitenmodulationssignals (PWM) gesteuert. Ein PIC16F1579-Mikrocontroller von Microchip kann dies übernehmen; er besitzt vier 16-Bit-PWMs zur LED-Ansteuerung. Die 16-Bit-PWMs erlauben eine genaue Intensitätkontrolle jeder LED-Farbe sowie eine Mischung der diversen RGBA-Helligkeitswerte zur Bildung verschiedener Farben. Mit kapazitiver, berührungsempfindlicher mTouch-Sensortechnik lassen sich zwei kapazitive Schieberegler nutzen. Ein auf dem Board integriertes RN4020-Bluetooth-Modul empfängt die PWM-Werte von einer Android-Mobil-Anwendung oder von einem Desktop-Programm per Bluetooth-Low-Energy-Datenkommunikation.

Verschiedene Farbwerte gleicher LEDs

Etliche Faktoren können zu Variationen des von den LEDs erzeugten Lichts führen. Die in Lumen gemessene Helligkeit variiert für LEDs unterschiedlichen Typs sowie zwischen LEDs des gleichen Typs. Bei Farb-LEDs unterscheidet sich die spezifische, als Farbwert gemessene Farbe von einer LED zur nächsten. Kleine LED-Chargen wurden zur Erstellung eines Helligkeits- und Farbwertprofils ausgemessen. Diese Werte wurden dann als typische Werte im Hardwaredesign sowie in den Farbwertberechnungen der Software verwendet (Color Tuning). Die Widerstandswerte wurden so festgelegt, dass jede Farbe den gleichen Helligkeitswert in Lumen erzeugt. Die LED-Serienwiderstände sind 820Ω (Rot), 400Ω (Blau), 500Ω (Grün) sowie 500Ω (Bernstein).

Es gibt zwei Betriebsarten

Zwei Betriebsarten stehen zur Verfügung: die erste erlaubt eine Einstellung der Hue/Saturation-Werte plus Weiss (HSVW) über zwei Schieberegler, die zweite ist eine Chromatizitätseinstellung über die Bluetooth-Low-Energy-Schnittstelle.

Das Board fährt nach dem Einschalten zunächst in Betriebsart 1 hoch. Auf dem Board gibt es zwei kapazitive, berührungsempfindliche Schieberegler, einer für die Farb­einstellung, der andere zur Steuerung der Helligkeitswerte. Bei Berührung des ersten Schiebereglers im Schiebereglermodus erfolgt die Ausgabe der auf dem Regler gewählten Farbe an die LEDs. Der ausgewählte Farbton wird angezeigt, bis ein anderes Eingangssignal empfangen wird. Die Helligkeit eines gewählten Farbtons lässt sich über den anderen Schieberegler steuern.

In der zweiten Betriebsart werden die Farbwerte (PWM) über eine android-gestützte Mobil-Anwendung oder eine Desktop-Anwendung unter Windows ausgewählt. Die entsprechenden PWM-Werte werden dann über eine Bluetooth-Verbindung an das Board gesendet. Die Anwendung nutzt die CIE-1931-XY-Farbtafel (Bild 3). Die Anwendung berechnet die genauen PWM-Werte für die gewählten Farb- und Helligkeitswerte und sendet diese über die Bluetooth-Verbindung an das RGBA-Board. Das Bluetooth-Modul auf dem Board empfängt dann die PWM-Werte, die von der Firmware des RGBA-Boards zur Darstellung der gewählten Farbe genutzt werden.

Die GUI der Anwendung zur Chromatizitätsauswahl besteht aus der CIE-1931-xy-Chromatizitätstafel. Der CIE-1931-Farbraum umfasst eine breite Palette an Farben in Bezug auf Chromatizität (x) und Luminanz (y). Die Farb- und Helligkeitswerte der roten, grünen und blauen LEDs im CIE-Farbraum bilden ein Dreieck, das alle möglichen Farbschattierungen umfasst, die durch das Licht der drei LEDs erzeugt werden können; dies bezeichnet man als Farb-Gamut. Um einen breiteren Bereich an Farben zu erzielen, wurde eine bernsteinfarbige LED hinzugefügt. Die xy-Daten für die bernsteinfarben LED wurden auch im CIE-1931-Farbraum eingetragen und entsprechen einem weiteren Dreieck zwischen den Koordinaten von Rot, Bernstein und Grün. Eine Mischung aus Rot, Bernstein und Grün in verschiedenen Proportionen erzeugt die Farben innerhalb des Farb-Gamuts in Bild 3. Dieser Farbmischungsalgorithmus zur Berechnung der PWM-Tastverhältniswerte zur Bildung der gewünschten Farbe ist in den in dieser Betriebsart genutzten PC-GUI- und Android-Anwendungen implementiert. Die Chromatizitätswahlanwendung sendet die PWM-Werte über eine Bluetooth-Verbindung. Dieses Connectivity-Modul kann mit Mobiltelefonen und PCs kommunizieren, die Transceiver für Bluetooth v4.0 oder höher enthalten. Das Modul dient primär zum Empfang von Tastverhältniswerten von Master-Geräten, auf denen die Chromatizitätswahlanwendung läuft.

Bluetooth-Datenübertragung

Es gibt Bluetooth-Classic- und Low-Energy-Geräte. Ein Low-Energy-Gerät kann nur mit einem anderen BLE- oder einem Bluetooth-Dual-Mode-Gerät kommunizieren, das Classic- und Low-Energy-Funktionen beinhaltet. Um mit dem auf dem RGBA-Board genutzten RN4020-Modul kommunizieren zu können, muss das Master-Host-Gerät entweder BLE- oder Dual-Mode-fähig sein. Das Modul entspricht der Bluetooth-Core-v4.1-Spezifikation und wird vom User über die Ein- und Ausgangsleitungen sowie ein UART-Interface gesteuert. Das UART unterstützt ASCII-Befehle für die Steuerung und Konfigurierung des Moduls für alle relevanten Anforderungen.

Anwendungssoftware

Arbeitet das Board in der zweiten Betriebsart, so wird die gewünschte LED-Farbe aus der Chromatizitätstafel in der Chromatizitätswahlanwendung selektiert. Diese Tafel ist Teil der Desktop-Anwendung für RGBA-Farbmischung und der entsprechenden Android-Anwendung. Die Anwendung berechnet die PWM-Tastverhältniswerte für Rot, Blau, Grün und Bernstein. Eine Bluetooth-Low-Energy-Verbindung überträgt diese Werte anschliessend an das Board. Die Desktop-Anwendung wurde mit Hilfe von Visual Studio C#.NET entwickelt. Die Anwendung folgt dem MVC-Prinzip mit verschiedenen Klassen.

Die RGBA-View-Controller-Klasse dient als GUI oder View Manager und als Controller für die Anwendung. Diese Klasse steht an der Spitze der Hierarchie zur Erstellung neuer Objekte und Klassen, und bewirkt eine Dependency-Injektion. Zudem verarbeitet sie alle GUI-Ereignisse und ruft die passenden Methoden auf. Die RGBA-Calculation-Klasse übernimmt die Ermittlung, ob sich der gewählte Punkt innerhalb oder ausserhalb des RGB- oder des RGA-Dreiecks befindet und berechnet für alle LEDs die Tastverhältniswerte der jeweiligen Farbkomponenten.

Neue Kommunikationswege

Programmierer können eine neue Klasse zur Implementierung der drahtlosen Datenübertragung anhand von integrierten Bluetooth-Low-Energy-Bibliotheken in Visual Studio anlegen, oder dazu Bibliotheken anderer Anbieter nutzen. Diese Schnittstelle entkoppelt die Implementation der Datenkommunikation vom Controller. Will man also neue Kommunikationswege implementieren, so können die View-Controller-Klassen und andere unverändert bleiben. Die RGBA-Bluetooth-Low-Energy-Datenkommunikation wird über die RN4020- Device-Klasse implementiert; diese nutzt eine Wireless-Datenkommunikation-Wrapper-Schnittstelle für Bluetooth-Low-Energy-Kommunikation auf dem RGBA-Board. Diese Aufgabe übernimmt eine PICtail-Karte, die über den UART- oder RS232-Port mit einem PC verbunden ist. So lässt sich eine serielle Datenkommunikation zum Versenden der Befehle für die Bluetooth-Low-Energy-Kommunikation aufbauen.

Fazit

Der Artikel zeigt, wie ein 16-Bit-PWM eine genaue Steuerung der Intensität jeder LED ermöglicht. Die beschriebene RGBA-LED-Farbmischerplatine enthält berührungssensitive, kapazitive Schieberbedienelemente zur Steuerung von Farbton und Helligkeit. Ein Bluetooth-4.1-Low-Energy-Modul übernimmt die Datenkommunikation, damit der Benutzer zur Ausgabe der gewünschten Farbe PWM-Werte an das RGBA-Board senden kann. Die Farbe wurde in einer Chromatizitätswahlanwendung auf einem Windows-PC oder einem Android-Smartphone ausgewählt. 

Infoservice

Microchip Technology Inc.
Karlsruher Strasse 91, DE-75179 Pforzheim
Tel. 0049 7231 424 750, Fax 0049 7231 424 7599
www.microchipdirect.com



Bild 1: Core-unabhängige Peripheriegeräte erlauben Funktionen für verschiedene Anwendungen


Bild 2: RGBA-Farbmischungs-Demoboard


Bild 3: CIE-1931-Farbraum mit RGBA-LED-Farb-Gamut