Eyecatcher_ohne_Text

(Bild: Microchip)

Eine genaue und drahtlose Steuerung der Farbbalance von LEDs und die RGBA-Farbmischung lassen sich mit einem 8-Bit-Mikrocontroller und einem Bluetooth-4.1-Low-Energy-Modul (BLE) realisieren, welche die Steuerung des roten, grünen, blauen und Alpha-Farbraums (RGBA) übernehmen. Das in Bild 1 gezeigte Demoboard 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 Pulsbreiten-Modulations-Signals (PWM) gesteuert.

Bild 1: Das Demoboard für die RGBA-Farbmischung enthält vier LEDs in den Farben Rot, Grün, Blau und Bernstein.

Bild 1: Das Demoboard für die RGBA-Farbmischung enthält vier LEDs in den Farben Rot, Grün, Blau und Bernstein. Microchip

Ein PIC16F1579-Mikrocontroller von Microchip übernimmt dabei die Aufgabe der Steuerung. Er besitzt vier 16-Bit-PWMs zur Ansteuerung der LEDs und ermöglicht eine genaue Kontrolle der Intensität jeder einzelnen LED-Farbe sowie eine Mischung der unterschiedlichen RGBA-Helligkeitswerte zur Bildung verschiedener Farben. Mit kapazitiver, berührungsempfindlicher mTouch-Sensortechnik lassen sich zwei kapazitive und berührungsempfindliche 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 BLE-Datenkommunikation. Die Stromversorgung des Boards geschieht durch eine 1,5-V-AAA-Batterie.

Farb-Tuning

Vielfältige 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 Chargen von LEDs einer bestimmten Marke wurden zur Erstellung eines Helligkeits- und Farbwert-Profils ausgemessen und diese dann als typische Werte im Hardware-Design sowie in den Farbwert-Berechnungen der Software verwendet. Diese Vorgehensweise wird auch Color Tuning oder Farb-Tuning genannt. Die Widerstandswerte wurden so festgelegt, dass jede Farbe den gleichen Helligkeitswert in Lumen erzeugt, wobei die LED-Serienwiderstände bei 820 Ω für Rot, 400 Ω für Blau, 500 Ω für Grün sowie 500 Ω für Bernstein liegen.

 

Details über die Betriebsarten des RGBA-Boards erfahren Sie auf der nächsten Seite.

Betriebsarten des Boards

Zwei Betriebsarten stehen zur Verfügung: die erste ermöglicht eine Einstellung des Hue-Sättigungswertes plus Weiß (HSVW) über zwei Schieberegler, die zweite ist eine Chromatizitäts-Einstellung über die Bluetooth-Low-Energy-Schnittstelle. Das Board fährt nach dem Einschalten zunächst in der ersten Betriebsart hoch. Das Board verfügt über zwei kapazitive, berührungsempfindliche Schieberegler, wobei einer für die Farbeinstellung und der andere zur Steuerung der Helligkeitswerte genutzt wird. Bei Berührung des ersten Schiebereglers im Schieberegler-Modus erfolgt die Ausgabe der auf dem Regler gewählten Farbe an die LEDs. Der ausgewählte Farbton wird angezeigt, bis das Board ein anderes Eingangssignal empfängt. Die Helligkeit eines gewählten Farbtons lässt sich über den anderen Schieberegler steuern.

Bild 2: Die Farb- und Helligkeitswerte der roten, grünen und blauen LEDs bilden auf der xy-Farbtafel ein Dreieck, dass alle möglichen Farbschattierungen beinhaltet. Durch die bernsteinfarbige LED wird dieser Bereich noch erweitert.

Bild 2: Die Farb- und Helligkeitswerte der roten, grünen und blauen LEDs bilden auf der xy-Farbtafel ein Dreieck, dass alle möglichen Farbschattierungen beinhaltet. Durch die bernsteinfarbige LED wird dieser Bereich noch erweitert. Microchip

In der zweiten Betriebsart erfolgt die Auswahl der Farbwerte über eine Android-gestützte Mobil-Anwendung oder eine Desktop-Anwendung unter Windows. Die entsprechenden PWM-Werte werden dann über eine Bluetooth-Verbindung an das Board gesendet. Unter Nutzung der CIE-1931-xy-Farbtafel (Bild 2) berechnet die Anwendung 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 die PWM-Werte, die die Firmware des RGBA-Boards zur Darstellung der gewählten Farbe nutzt. Die GUI der Anwendung zur Chromatizitäts-Auswahl besteht aus der CIE-1931-xy-Chromatizitäts-Tafel, die eine breite Palette an Farben in Bezug auf Chromatizität (x) und Luminanz (y) umfasst. Die Farb- und Helligkeitswerte der roten, grünen und blauen LEDs im CIE-Farbraum bilden ein Dreieck, das alle möglichen Farbschattierungen beinhaltet, die durch das Licht der drei LEDs erzeugbar sind, und als Gamut bezeichnet wird.

Bild 3: Die Pin-zu-Pin-Konfiguration zwischen Mikrocontroller und BLE-Modul. Das Modul ist in der Lage, über eine Bluetooth-Verbindung sowohl mit Mobiltelefonen als auch PCs zu kommunizieren.

Bild 3: Die Pin-zu-Pin-Konfiguration zwischen Mikrocontroller und BLE-Modul. Das Modul ist in der Lage, über eine Bluetooth-Verbindung sowohl mit Mobiltelefonen als auch PCs zu kommunizieren. Microhip

Um einen breiteren Bereich an Farben zu erzielen, wurde eine bernsteinfarbige LED hinzugefügt. Die xy-Daten für die bernsteinfarbige LED bilden im CIE-1931-Farbraum ein weiteres Dreieck zwischen den Koordinaten von Rot, Bernstein und Grün. Eine Mischung aus Rot, Bernstein und Grün in unterschiedlichen Proportionen erzeugt die Farben innerhalb des Farb-Gamuts in Bild 2.

Dieser Farbmischungs-Algorithmus zur Berechnung der PWM-Tastverhältniswerte und zur Bildung der gewünschten Farbe ist in den in dieser Betriebsart genutzten PC-GUIs und in den Android-Anwendungen implementiert. Die Anwendung zur Wahl der Chromatizität 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 hauptsächlich zum Empfang von Tastverhältnis-Werten von Master-Geräten, auf denen die Chromatizitätswahl-Anwendung läuft. Die Pin-zu-Pin-Konfiguration zwischen Mikrocontroller und BLE-Modul ist in Abbildung 3 zu sehen.

Bluetooth-Datenübertragung

Es gibt zwei Arten von Bluetooth-Geräten – Bluetooth Classic und Bluetooth Low Energy, wobei ein BLE-Gerät nur mit einem anderen BLE-Gerät oder einem Bluetooth-Dual-Mode-Gerät kommunizieren kann, das beide Typen unterstützt. Um mit dem auf dem Board zur RGBA-Farbmischung genutzten RN4020-Modul kommunizieren zu können, muss das Master-Host-Gerät also entweder BLE- oder Dual-Mode-fähig sein. Das Modul entspricht der Bluetooth-Core-v4.1-Spezifikation und wird vom Benutzer ü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 sämtliche anwendungsbezogenen Anforderungen.

 

Auf der nächsten Seite erfahren Sie Details zur Anwendungssoftware und wir stellen die Klassen zur Programmierung des Boards auf Basis von Visual Studio C#.NET vor. 

Anwendungssoftware und Klassen

Arbeitet das Board zur RGBA-Farbmischung in der zweiten Betriebsart, so wird die gewünschte LED-Farbe aus der Chromatizitäts-Tafel in der Chromatizitätswahl-Anwendung selektiert. Diese Tafel ist sowohl Teil der Desktop-Anwendung für RGBA-Farbmischung wie auch der entsprechenden Android-Anwendung. Die Anwendung berechnet die PWM-Tastverhältnis-Werte für Rot, Blau, Grün und Bernstein. Eine BLE-Verbindung überträgt diese Werte anschließend an das Board. Die Desktop-Anwendung wurde mit Hilfe von Visual Studio C#.NET entwickelt und folgt dem MVC-Prinzip (Model View Controller) mit verschiedenen Klassen.

Die RGBA-View-Controller-Klasse dient als GUI oder View Manager sowie 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 des RGB- oder des RGA-Dreiecks befindet oder außerhalb dieser Dreiecke, und berechnet für alle LEDs die Tastverhältnis-Werte der jeweiligen Farbkomponenten.

Eck-Daten

Die genaue Steuerung der Intensität von LEDs ist mit einem 16-Bit-PWM möglich. Eine RGBA-Farbmischung von LEDs lässt sich über eine Farbmischer-Platine mit kapazitiven Schieber-Bedienelementen zur Steuerung von Farbon und Helligkeit realisieren. Über ein BLE-4.1-Modul erfolgt die Datenkommunikation, damit Benutzer zur Ausgabe der gewünschten Farbe die PWM-Werte an das Board senden können. Die Farbe können Benutzer über eine Anwendung zur Chromatizitätsauswahl auf einem Windows-Desktop-Rechner oder über ein Android-basierendes Smartphone auswählen.

Die Matrix-3×3-Klasse implementiert alle mathematischen 3×3-Matrizen-Operationen wie Umkehrfunktion, Determinante, Transponierte, Co-Faktor und Multiplikation. Die Vektor-3-Klasse implementiert einen Spalten-Vektor der Größe 3 zum Einsatz in Matrizen-Berechnungen für die Matrix-3×3-Klasse. Ein kundenspezifischer Datentyp zur Speicherung der Tastverhältnis-Werte für alle Farbkomponenten ist die RGBA-Data-Klasse.

In der Wireless-Communications-Wrapper-Klasse umfasst die Schnittstelle sämtliche zur Implementation der RGBA-Farbmischung nötigen Methoden der drahtlosen Datenübertragung. Diese Schnittstelle lässt sich für beliebige drahtlose Datenübertragungsmethoden wie Bluetooth Low Energy und Bluetooth Classic nutzen. Die BLE-Datenübertragung erfolgt über die RN4020-PICtail-Karte als RS232-Datenkommunikation, wobei diese Schnittstelle für das RGBA-Board implementiert wurde.

Programmierer können eine neue Klasse zur Implementierung der drahtlosen Datenübertragung anhand von integrierten BLE-Bibliotheken in Visual Studio anlegen oder dazu Bibliotheken anderer Anbieter nutzen. Diese Schnittstelle entkoppelt die Implementierung der Datenkommunikation vom eigentlichen Controller. Will der Entwickler neue Kommunikationswege implementieren, so können die View-Controller-Klasse und andere Klassen unverändert bleiben.

Die RGBA-BLE-Datenkommunikation lässt sich über die RN4020-Device-Klasse implementieren, welche eine Wireless-Datenkommunikation über die Wrapper-Schnittstelle für BLE-Kommunikation auf dem RGBA-Board nutzt. 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 BLE-Kommunikation aufbauen.

Die Bluetooth-Low-Energy-Information-Klasse speichert die grundlegenden Informationen über den Remote-Connectivity-Baustein: Namen, Adresse und den unterstützten Server-Dienst. Diese Informationen dienen zur Identifizierung und Verbindung mit einem Remote-Baustein. In der Search-Result-Delegate-Klasse verarbeitet der sogenannte Delegate das Ereignis der BLE-Klasse, sobald die Suche nach Geräten beendet ist und die Geräte für den Benutzer als Liste bereitstehen. Die für die Suchoperation erforderliche Zeit beträgt zehn Sekunden. In der Connection-State-Change-Delegate-Klasse verarbeitet der Delegate das Ereignis der BLE-Klasse, um zu bestimmen, ob die als Master dienende PICtail-Karte mit einem Remote-Baustein verbunden ist, und zeigt im positiven Fall den aktuellen Verbindungszustand an.

Die Constraints-Klasse speichert alle für die Anwendung benötigten Konstanten wie etwa die RN4020-Modulbefehle und -antworten, Dienste und charakteristische UUIDs. Auch die Java-Application-Klasse für das Android-Betriebssystem folgt eng dem MVC-Prinzip und nutzt Android-Aktivitätsklassen, die von der Struktur her denen der Desktop-Anwendung ähneln. Allerdings kommt für die Android-Anwendung die integrierte BLE-Hardware des Android-Smartphones zum Einsatz. Das Android-Betriebssystem umfasst alle erforderlichen Bibliotheken für die BLE-Datenkommunikation samt aller erforderlichen Ereignisse und Call Backs. Bis auf die GUI-Steuerelemente, die in einer XML-Datei anstelle einer Klasse definiert sind, ähnelt die RGBA-View-Activity-Klasse der View-Controller-Klasse auf einem Desktop-Rechner.

 

Namrata Dalvi

(Bild: Microchip)
Senior Application Engineer II in der MCU8 Division bei Microchip

(na)

Sie möchten gerne weiterlesen?