iCUE compatibler RGB Controller (Es werde buntes Licht) - AZ-Delivery

Der Plan

Anfang des Jahres habe ich mir einen neuen Gaming PC zusammengebaut. Ich habe mich für ein Gehäuse mit Scheibe entschieden, da intern einige Komponenten eine nette RGB Beleuchtung besitzen. Um das Ganze auch recht hübsch in Szene zu setzen, habe ich noch eine längere RGB Leiste benutzt. Diese konnte ich an mein Mainboard (ASUS ROG H370I Gaming) (an den ARGB Header) anschließen und mit der Aura Sync Software von Asus steuern.

Im Laufe der Zeit kamen weitere Komponenten hinzu und ich habe für die Steuerung der Beleuchtung die iCUE Software von Corsair benutzt. iCUE besitzt ein Plugin, mit dem es die RGB Beleuchtung des Mainboards steuern kann. Die Unterstützung bezieht sich aber nur auf die im Mainboard selbst angebrauchten RGB LEDs. Der externe ARGB Header wird leider nicht unterstützt. Als Lösung für "externe" Komponenten gibt es von Corsair einen eigenen Controller, iCUE Lighting Node Pro, der allerdings mit ca. 50€ zusätzlich zu Buche schlägt. Da muss es doch was günstigeres geben. Und tatsächlich bin ich bei meiner Suche auf das Projekt "Corsair Lighting Protocol" von Legion2 gestoßen. (https://github.com/Legion2/CorsairLightingProtocol).

Das Projekt kann 5 verschiedene Corsair Controller emulieren. Dazu wird ein ATmega 32U4 basierendes Arduino Board benötigt. Also entweder ein Arduino Leonardo oder ein Arduino Pro Micro oder was ähnliches...

Hardware

Hardwareaufbaubeschreibung

Das Projekt benötigt ein Board mit einem ATmega 32U4, weil in dem Projekt eine native USB Anbindung benötigt wird. Üblicherweise werden Arduino Boards, wie ein Board 100% Arduino kompatibel mit Nano V3 oder ein Microkontroller kompatibel mit Arduino Uno R3, mit einem extra Chip versehen, der eine USB/Seriell Konvertierung macht. Entweder werden dort Chips der Firma FTDI verbaut oder man verwendet den CH340. Neuere Microkontrollers kompatibel mit Arduino Uno R3 haben für die Konvertierung einen eigenen ATmega 16U2. Gemeinsam ist, dass der Chip nur eine USB/Seriell Konvertierung vornimmt. Der Bootlaoder der Arduino Microkontrollers verwendet weiterhin ein serielles Protokoll. Die Kontroller von Corsair verwenden aber eine andere USB HID Implementierung. Bei dem Arduino Leonardo Microkontroller Board (ATmega32U4) ist die USB Schnittstelle im Chip integriert und kann daher frei programmiert werden und kann somit die von iCUE unterstützen Controller emulieren. (Es besteht beim Microkontroller kompatibel mit Arduino Uno R3 die Möglichkeit, mit dem Projekt HoodLoader2 ebenfalls die USB Schnittstelle zu modifizieren, aber das würde den Umfang dieses Blogs hier sprengen.)

Es gibt verschiedene ATmega32U4 basierende Boards Hier mal ein Vergleich:

Zunächst der Leonardo. In der üblichen Arduino Baugröße


und 3 verschiedene andere ATmega32U4 Boards. Arduino Micro kompatibles und 2 Arduino Pro Micro kompatible Boards. Achten Sie beim Kauf, dass bereits ein Arduino Bootloader auf dem Board programmiert ist.


Benötigte Hardware

Anzahl Bauteil Notiz
1 Arduino Pro Micro oder anderer Microkontroller kompatibel
mit dem Arduino Leonardo Microkontroller mit einem ATmega 32U4
1 Micro USB Kabel zum Anschluss des Kontrollers an den Computer
1 Gehäuse 3D Druck, Vorlage auf Thingiverse (https://www.thingiverse.com/)
1 RGB Leiste ARGB kompatible RGB Leiste, wie z.B. https://www.amazon.de/gp/product/B07TPSB35N
Kabel, Stecker für den Anschluss der Leiste an den Controller bzw. die Stromversorgung


optional

Anzahl Bauteil Notiz
1 SATA Powerkabel wird benutzt, wenn die angeschlossenen LEDs nicht mehr über USB versorgt werden können.
1 USB Pinheader Buchse (Mainboard) auf Micro USB Dieses Kabel ist ideal, wenn man den Controller in das PC Gehäuse einbauen möchte und das Mainboard noch einen freien USB 2.0 Pinheader-Anschluss hat.
1 Anschlusskabel für die RGB Leiste Natürlich kann man auch die Kabel direkt an die Leiste anlöten. Ein Kabel mit Stecker gibt aber etwas mehr Flexibilität. Leider sind die Stecker nicht genormt.

Plan

Schaltplan: 


Der emulierte iCUE Controller hat 2 verschiedene Kanäle. Kanal 1 wird am Pin 2 ausgegeben. Die Daten für Kanal 2 stehen am Pin 3 zur Verfügung.


Bei der Stromversorgung der LEDs muss man etwas rechnen. Der normale USB 2.0 Anschluss kann maximal 0,5A liefern. Beim Starten des Gerätes dürfen jedoch nur 100mA bezogen werden. Unser Controller braucht selber ca. 30mA maximal, damit bleiben beim Start 70mA. Jede LED verbraucht bei voller Ansteuerung (weißes Licht) ca. 65mA. Damit darf beim Starten maximal 1 LED leuchten. Insgesamt dürfen aber nur 7 LEDs direkt am USB Anschluss verwendet werden. Meine RGB Leiste hat 60 LEDs, das macht bei weißem Licht fast 4A. Viel zu viel für einen reinen USB Anschluss. Also muss eine andere Stromversorgung her. Im PC bieten sich die SATA oder Molex Anschlüsse an. Ich habe mich hier für einen SATA Anschluss entschieden.

Eine einfache Variante sind fertig konfektionierte Adapter. Ich verwende hier einen SATA nach Molex Adapter und trenne die Molex Anschlüsse einfach ab. Bei meiner RGB Leiste war bereits ein Stecker mit Lötanschlüssen dabei. Deswegen konnte ich diesen hier verwenden. Weiterhin habe ich nur Kanal 1 bestückt. Kanal 2 ist noch leer, kann aber jederzeit verwendet werden.

Das Gehäuse habe ich mir selber gedruckt. Die Druckdaten sind unter diesem Link zu finden: Arduino Pro Micro Case and Lid. Nur für die Kabeldurchführung musste ein bisschen nachgearbeitet werden. Da das Gehäuse im PC versteckt eingebaut wird, muss das Gehäuse natürlich nicht besonders hübsch aussehen.

Hier mal der fertige Aufbau.


Das Board selber wird ganz normal über den Micro USB Anschluss mit dem PC verbunden. Dafür habe ich das Mainboard-Micro-USB Kabel verwendet.

Die Software

Installation Arduino Boardverwalter

Zunächst müssen Sie die CLP Boards in den Boardmanager der Arduino IDE aufnehmen. Das machen Sie einfach, indem Sie in den Voreinstellungen folgende URL in die Liste "zusätzliche Boradverwalter URLs" aufnehmen.

https://raw.githubusercontent.com/Legion2/CorsairLightingProtocolBoards/master/package_Legion2_CorsairLightingProtocolBoards_index.json


Jetzt kann man unter Werkzeuge/Board/Boardverwalter den CLP Boards Eintrag suchen. Dieser enthält die benötigten Boards. Diesen installieren Sie dann.


Als nächsten Schritt der Hardwareeinrichtung muss nun noch der "CLP Arduino Leonardo" als aktives Board ausgewählt werden, da hier ein Arduino pro micro kompatibles Board verwendet wird.


Bei Device wählen Sie bitte den Lighting Node Pro aus, da das Beispielprogramm genau diesen Controller emulieren soll, und wählen den Com Port entsprechend.


Das Programm

Auf der Programmseite ist diesmal nicht viel zu tun. Der Autor (die Autoren) der Bibliothek haben ein funktionsfähiges Beispiel für einen gängigen "Ligthing Node Pro" hinzugefügt. Das einzige, was Ihnen zu tun bleibt, ist das Beispiel "Lighting Node PRO" in die Arduino IDE zu laden, dann zu kompilieren und in den Controller zu laden.


Nach dem Hochladen des Sketches sollte nun in der iCUE Software der neue "Ligthing Node Pro" auftauchen.

iCUE Bedienung Grundlagen

Da nicht alle iCUE (Corsair) kennen, hier mal ein kleiner Schnelldurchgang, wie man den hier erstellten Controller benutzen kann. Zunächst kann hier Corsair iCUE herunter geladen werden. iCUE Download

Nach der Installation starten Sie bitte die Oberfläche. 


Oben rechts in dem Feld sollte nun unser neuer Controller als "Lighting Node Pro" angezeigt werden. Zunächst müssen Sie dem System sagen, welche Geräte an welchem Port angeschlossen sind. Dazu gehen Sie auf den "Lighting Node Pro" und dann auf Beleuchtungssetup.


Hier können Sie einstellen, welchen Gerätetyp Sie an welchen Anschluss angeschlossen haben. In diesem Beispiel habe ich eine normale RGB Leiste mit 24 LEDs angeschlossen. Da ein RGB-Lichtstreifen in iCUE 10 LEDs enthält, muss ich also 3 Streifen einstellen.

Neben dem RGB-Lichtstreifen gibt es auch noch die externen RGB-Lichtstreifen. Dort kann man zwischen 250mm (16 LEDs), 350mm (21 LEDs), 450mm (27 LEDs) und 1,4m (83 LEDs) Leisten wählen. Nun gehen Sie bitte auf Beleuchtungskanal 1. Hier ist nun automatisch die Regenbogenwelle für die gesamte Leiste angewählt. Und die LEDs sollten nun auch direkt dem angezeigten Effekt folgen.


Wie schon erwähnt verwende ich in diesem Beispiel eine LED Kette mit 24 LEDs. Als Beleuchtungsszene wollte ich gerne zunächst die ersten 8 LEDs mit blau faden, dann sollen die nächsten 4 LEDs dauerhaft grün leuchten. Dann folgen 4 weitere LEDs mit rotem Dauerlicht und die restlichen 8 LEDs sollen eine Regenbogenwelle anzeigen. Die letzten 6 LEDs, die bis zur 30 fehlen, sollen schwarz bleiben. (Das dient der Übersichtlichkeit im Programm und hat keine technischen Auswirkungen.)

Zunächst beschränke ich die Regenbogenwelle auf die 8 LEDs nach LED 16. Dazu selektiere ich einfach die entsprechenden LEDs in der Anzeige. Das geht, indem man mit der Maus die erste LED anklickt. Selektierte LEDs haben einen kleinen gelben Ring. Die weiteren 7 LEDs klicke ich mit gedrückter STRG Taste an. Ich kann auch mit der Maus komplette Bereiche markieren.


Der nächste Schritt wäre die Farbe schwarz für die letzten 6 LEDs. Zunächst erzeuge ich einen neuen Effekt im Beleuchtungskanal 1, indem ich auf das + Zeichen neben dem Text "Beleuchtungskanal 1" klicke.

Es wird jetzt wieder automatisch eine Regenbogenwelle (Regenbogenwelle 2) erzeugt, die die gesamte Leiste einnimmt. Zunächst ändere ich den Typ auf "statische Farbe", wähle die Farbe schwarz und selektiere die letzten 6 LEDs.



Das gleiche mache ich nun für die 4 roten und grünen LEDs.


Für den Fading Effekt der 8 LEDs lege ich einen Bereich mit Gradient in Blau an. Also neuen Effekt erzeugen, die ersten 8 LEDs auswählen und Gradient wählen.


Dann einmal auf das Plus unter dem Diagramm klicken. Jetzt erscheinen 2 Punkte im Diagramm und das ganze Diagramm ist weiß. Der erste Punkt definiert den Startwert, der 2. Punkt den Endwert. Unter dem Diagramm sieht man noch die Zeit, wie lange dieser Effekt dauern soll. Man selektiert einen Punkt und wählt dessen Farbe. Dann ebenso den 2. Punkt. iCue wird nun automatisch die Farbe vom Startpunkt zum Endpunkt durchgehen. Für einen Fading Effekt benötigen Sie allerdings 3 Punkte, denn Sie müssen einmal die Helligkeit erhöhen und dann wieder absenken.


Für den 3. Punkt klicken Sie bitte nochmal auf das Plus. Das erzeugt einen weiteren Punkt. Dann ziehen Sie die beiden äußeren Punkte nach unten auf 20%. (0% sieht nicht gut aus). Den mittleren Punkt lassen Sie auf 100%. Zuletzt wählen Sie unten rechts am Diagramm noch als Wiederholzeit 2 sec. Und schon ist die gewünschte Beleuchtungsszene fertig.


Epilog

Mithilfe dieses Controllers können Sie nun fast beliebig viele ARGB kompatible Leisten und Beleuchtungen verwenden. Auch andere Formen sind möglich. Und natürlich kann man auch mehrere Kontroller an einen PC anschließen. Auf der anderen Seite können Sie natürlich das Programm entsprechend ihren Bedürfnissen anpassen. Z.B. durch Verwendung anderer RGB Komponenten, die eine andere Ansteuerung benötigen.

Die Bibliothek bietet da sehr viele Möglichkeiten. Neben dem hier vorgestellten Lightning Node Pro kann die Software auch einen Commander Pro emulieren, mit der Möglichkeit 4 Lüfter, 2 ARGB Kanäle, und 2 Temperatursensoren zu verwenden. Einzig der auch im Commander Pro eingebaute USB Hub steht hier natürlich nicht zur Verfügung. Aber das wird evtl. ein neuer Blog.


Viel Spaß beim Nachbau.

Ich hoffe, Ihnen hat dieser kleine Blog gefallen! Bis zum nächsten Mal.

Wilfried Klaas

Für arduinoProjekte für fortgeschrittene

15 comments

Wilfried Klaas

Wilfried Klaas

Hallo Herr Jähring,

einen 2. Controller zuzufügen ist relativ simple, statt dem Beispiel “Lighting Node PRO” verwenden Sie einfach das Beispielprogramm “Additional Features”. Dort kann man die Seriennummer des Controllers eingeben. Die Variable lautet:
const char mySerialNumber[] PROGMEM = “202B6949A967”;
Hier ändern Sie einfach die hintere Nummer etwas ab. Aber Achtung, das muss eine HEX Zahl bleiben. Es sind also nur die Zeichen von 0-9 und A-F erlaubt. z.B.
const char mySerialNumber[] PROGMEM = “202B6949A968”;
Nach dem Hochladen sollte in der iCUE Software ein 2. Controller auftauchen.
mfg W.Klaas

Torsten Jähring

Torsten Jähring

Vielen Dank für die gute Anleitung von Dir.
Ich habe da mal frage. Wenn ich zwei Controller am PC betreiben möchte , dann muss man die Geräte Nr. ändern . Ich habe schon alles probiert wie es in Github beschrieben ist. Aber ich bekomme es einfach nicht hin. Könnte mir jemand vielleicht es richtg und einfach erklären. Verstehe die englische Erklärung leider nicht.

Lg Torsten

Andreas Wolter

Andreas Wolter

@Sebastian: Sie müssen neben der Boardbibliothek auch die CLP Bibliothek installieren:
https://github.com/Legion2/CorsairLightingProtocol
Als ZIP herunterladen und in der Arduino IDE als ZIP hinzufügen.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Sebastian

Sebastian

Danke für die tollen Informationen und die ausführliche Erklärung!
Leider erscheint bei mir unter “Beispiele” nicht die Auswahl “Corsair Lightning Protocol”.
Habe aber die Bibliothek URL wie beschrieben eingefügt.

Arnro Nym

Arnro Nym

habs nachgebaut, hab noch ein paar Anmerkungen. Es fehlt der Hinweis, dass man auch die FastLED Bibliothek vorher einbinden muss, zu finden auf diversen anderen Github Anleitungen. Des weiteren hast du auf deinem Foto mit dem Stromanschluss scheinbar das falsche SATA Stromkabel abgebildet, denn um ans Netzteil anschließen zu können braucht man das gegenstück :D Wahrscheinlich dann später auch gemerkt ;-P Zur Frage vorher von einem anderen User, warum schließt man hier eine externe stromquelle an ? und nutzt Nicht das PC Netzteil ? Lösung im Icue die Hardware Einstellungen auf AUS, führt aber dann dazu, dass auch beim Hochfahren des Rechners alles dunkel bleibt.

Wilfried Klaas

Wilfried Klaas

Hallo Florian,
evtl. hilft die Einstellung für die Hardware Beleuchtung. Die findest du unter Beleuchtungssetup/Hardware-Beleuchtung bei dem jeweiligen Controller im iCue. Der Controller sollte in diesen Modus wechseln sobald kein Signal vom PC kommt. (Also auch wenn du die iCue Software beendest. )

Florian

Florian

Hallo,

es funktioniert bis auf eine Sache wunder bar. Und zwar verwende ich nicht den PC als Stromquelle, sondern eine externe Quelle. Somit bleibt, wenn ich den PC ausschalte die letzte Farbe dauerhaft aktiv, da dieser Status gesetzt wurde.
Gibt es irgendeine Einstellung, damit die Lichter beim Herunterfahren ausgehen?

Mit freundlichen Grüßen

Wilfried Klaas

Wilfried Klaas

Hallo Herr Richter,
nochmals vielen Dank für ihre Rückmeldung. Die Module im Beitrag sind alles Arduino Pro Micro kompatible Boards. Leider hat AZ Delivery derzeit keine vergleichbaren Boards im Angebot.
Aber bei den üblichen Versandhändler wird man mit dem Suchbegriff “Arduino Pro Micro” schnell fündig.
Wichtig ist, daß dort ein ATMega 32U4 verbaut wurde, 5V und 16MHz.
Wenn sie es etwas größer haben möchten können Sie auch einen Arduino Leonardo benutzen. Auch der arbeitet intern mit einer ATMega32U4 MCU.

Melanie Steiner

Melanie Steiner

Hallo Dietmar,
vielen Dank für Ihr Interesse.
Gerne möchten wir Sie informieren, dass wir das Smart-Home Starter Set wir in Kürze wieder auf Lager haben. Das Set enthält: 1 x Mikrocontroller Board mit ATmega328P mit USB-Kabel, 1 x OLED Display 0,96 Zoll I2C, 1 x DHT 22, 1 x ESP8266-01 mit Breadboardadapter, 1 × 3er Set Jumper Wire m2m / f2m / f2f (je 40 Stk. mit ca. 20 cm), 1x Breadboard
Das Starter Kit das ebenfalls sehr gut für den Einstieg geeignet ist, ist leider aktuell ausverkauft.
Fast alle dieser Produkte kann man jedoch auch einzeln kaufen und somit genau die Bauteile auswählen die man benötigt.

Wilfried Klaas

Wilfried Klaas

Hallo Herr Richter, vielen Dank für Ihren Kommentar. Leider muss ich da auf meinen Artikel verweisen, daß Arduino Nano’s nicht mit der hier vorliegenden Umsetzung funktionieren. Auch für den ESP8266 (ebenso für den ESP32) gibt es keine Implementierung. Es wird eine native USB Schnittstelle benötigt. Derzeit werden nur Arduino Leonardo, Arduino Pro Micro und Boards mit einer ATMega32U4 MCU unterstützt. Falls Sie dann ein unterstützes Board benutzen, müssen Sie zunächst die entsprechenden Board isntallieren, dann als Board im Boardmanager (wie o. geschrieben) das “CLP Arduino Leonardo” als aktives Board wählen. Bei Device wählen Sie bitte den Lighting Node Pro aus.

Wilfried Klaas

Wilfried Klaas

Hallo Lucas, vielen Dank für Ihren Kommentar. Leider muss ich da auf meinen Artikel verweisen, daß Arduino Nano’s nicht mit der hier vorliegenden Umsetzung funktionieren. Es wird eine native USB Schnittstelle benötigt. Derzeit werden nur Arduino Leonardo, Arduino Micro und Boards mit einer ATMega32U4 MCU unterstützt.

Outblaze e.Kfm. Hans Richter

Outblaze e.Kfm. Hans Richter

Guten Tag
ich habe verschieden Typen ESP8266 und Nano V3 und bin nicht in der Lage
über Board CLP diese zu programmieren !
Was könnte die Ursache sein ? Welche Besonderheit haben die im Bild dargestellten
Module ?

MFG HR

Outblaze e.Kfm. Hans Richter

Outblaze e.Kfm. Hans Richter

Hallo – ein nettes Projekt ! Ich bin aber leider nicht in der Lage es zum Laufen zu bringen.
Ich verfüge über div. Nano V3 und NodeMCU Lua Lolin V3 Modul mit ESP8266 und schaffe es
nicht die Boards so einzustellen das der Compilerlauf des Beispiels Lighting Node PRO
funktioniert ! Stelle ich die Boards auf Leonardo .. ein geht gar nix .. stelle ich den Nano auf Nano kommt z.B. ‘CorsairLightingProtocolHID’ does not name a type; did you mean ‘CorsairLightingProtocolSerial’?
Erbitte Hilfestellung MFG Hans

Dietmar

Dietmar

ist ja schön, dass Sie immer wieder neue Microcontroller Beispiele bringen.
Aber mein Favorit ist immer noch der Arduino. Haben Sie keine weiteren komplett Kits mit allen benötigten Bauteilen für den Arduino?
Die neuen Contoller (vor allem die ESP- und ESP32 Controller mit den unterschiedlichen PIN Bezeichnungen und unterschiedlichen Ausgängen an verschiedenen Orten) sind ja inzwischen unüberschaubar.

Lucas

Lucas

Vielen Dank für diesen Beitrag.
Habe vorher immer Signal an einem vorhanden Lightning Node parallel abgezweigt. Diese Umsetzung hier ist natürlich perfekt und ich freue mich schon, meine ganzen rumliegenden Nanos dafür zu verwenden.

Leave a comment

All comments are moderated before being published

Recommended blog posts

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery