Corsair und Arduino Micro mit Relais

Moin, ich habe mir um ein Corsair Produkt nachzubauen den Arduino Micro und den Leonardo bestellt.
Ziel war es meinen kompletten Schreibtisch mit 5V 2812B LED Streifen auszuleuchten und über die Corsair Software steuern zu können.
Es gibt ein YouTube Video dazu:
https://www.youtube.com/watch?v=mqMh7W_RUfo&t=364s

Software habe ich erfolgreich installiert und der Lightning Node Core wird erkannt und kann auch gesteuert werden - alles okay.

Nun wollte ich, wie im Video beschrieben ein Relais anschliessen, damit, wenn der PC ausgeht die LED nicht weiterleuchten.
Das entpuppte sich jetzt irgendwie als ein Tag und Nacht Projekt.

Ist der USB eingesteckt leuchtet das Relais Modul grün ziehe ich es ab, wird da nichts geschaltet und der LED Streifen leuchtet weiter.
Ich vermute, dass ich entweder den Steuer PIN des Arduino beim Löten geschrottet habe, oder ich zu dumm bin und den Fehler nicht sehe -vielleicht ist im Sketch ja der Pin auch gar nicht belegt?!

Da ich mich noch nicht lange damit beschäftige, jedoch schon jede Menge WLED Zeugs gebaut habe, dachte ich : "Ich mach das mal eben" :slight_smile:

Hier der Schaltplan, nur dass ich 5V anstatt 12V Strips verwende:
https://uploadnow.io/f/FYTnFFG

Nochmal zum Aufbau bei mir:

+5V des Arduino gehen in DCC+ des Relais
GND kommt vom Arduino geht in DCC- des Relais
Pin 5 geht in den IN PIN des Relais

Auf der anderen Seite steckt
+5V des Netzteils in COM des Relais
von NC geht das Kabel zum +5V des LED Streifens

Datenleitungen für 2 Streifen sind am Arduino an 2 und 3
PIN 5 wie oben schon erwähnt in das Relais.
Der LED Streifen bekommt +5V vom Netzteil und es ist ne Datenleitung dran.

Hauptproblem: Das Relais schaltet nicht, bei Abziehen des USB.

Willkommen im Forum,
dann ist Fehler im dem unbekanntem Sketch.
Zeige auch link zum Relais, die meisten werden mit LOW geschaltet.
Dazu nimm Blatt Papier und zeichne die Verdrahtung.

Relais falsch verdrahtet?

1 Like

Der unbekannte Sketch ist gar nicht so unbekannt. Den gibts auch schon hier im Forum:

/*
   Copyright 2019 Leon Kiefer

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

	   http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/
#include <CorsairLightingProtocol.h>
#include <FastLED.h>

#define DATA_PIN_CHANNEL_1 2
#define DATA_PIN_CHANNEL_2 3

CRGB ledsChannel1[96];
CRGB ledsChannel2[96];

CorsairLightingFirmwareStorageEEPROM firmwareStorage;
CorsairLightingFirmware firmware(CORSAIR_LIGHTING_NODE_PRO, &firmwareStorage);
FastLEDControllerStorageEEPROM storage;
FastLEDController ledController(&storage);
CorsairLightingProtocolController cLP(&ledController, &firmware);
CorsairLightingProtocolHID cHID(&cLP);

void setup() {
	FastLED.addLeds<WS2812B, DATA_PIN_CHANNEL_1, GRB>(ledsChannel1, 96);
	FastLED.addLeds<WS2812B, DATA_PIN_CHANNEL_2, GRB>(ledsChannel2, 96);
	ledController.addLEDs(0, ledsChannel1, 96);
	ledController.addLEDs(1, ledsChannel2, 96);
}

void loop() {
	cHID.update();

	if (ledController.updateLEDs()) {
		FastLED.show();
	}
}

Das Relais ist dieses:
https://de.aliexpress.com/item/32952579553.html?spm=a2g0o.order_list.order_list_main.95.2ccc5c5f3XgJRZ&gatewayAdapt=glo2deu

Hier die Zeichnung
https://uploadnow.io/f/dC7k45b

Also das Relais geht auf D5, OK.
Wo ist das Relais im Sketch eingebunden?
Nochmal alles gelesen :wink:
Frage, das ding soll Starten so fern der Arduino wird mit Strom versorgt ?

Ja genau....es war so gedacht, dass wenn der PC eingeschaltet wird, der Arduino dann ja Strom bekommt. Dieser schaltet dann das Relais über diesen besagten Pin 5 ein und somit die LED Leiste.
Zieht man den USB soll das Netzteil keinen Strom mehr zum LED liefern.

Ja ich hab schon gesehen....von PIN 5 ist im Sketch überhaupt keine Rede. :wink:

Das kann ich nicht!

Bald kannst das Moment :wink:

wen geht mach mal Foto von oben von dem Modul, oder schreib was stecht auf den seitlichen Pins am Relais dort wo der Jumper ist.

/*
   Copyright 2019 Leon Kiefer

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/
#include <CorsairLightingProtocol.h>
#include <FastLED.h>

#define DATA_PIN_CHANNEL_1 2
#define DATA_PIN_CHANNEL_2 3

CRGB ledsChannel1[96];
CRGB ledsChannel2[96];

CorsairLightingFirmwareStorageEEPROM firmwareStorage;
CorsairLightingFirmware firmware(CORSAIR_LIGHTING_NODE_PRO, &firmwareStorage);
FastLEDControllerStorageEEPROM storage;
FastLEDController ledController(&storage);
CorsairLightingProtocolController cLP(&ledController, &firmware);
CorsairLightingProtocolHID cHID(&cLP);

/*********************** Relalis Deklarieren auf Pin D5 ****************/
const byte relais = 5;

void setup() {
  /**********  Relais **************/
  pinMode(relais, OUTPUT); // D5 "Einschalten" als ausgang
  digitalWrite(relais, HIGH); // Hier wird das Relais eingeschaltet
   
  
  FastLED.addLeds<WS2812B, DATA_PIN_CHANNEL_1, GRB>(ledsChannel1, 96);
  FastLED.addLeds<WS2812B, DATA_PIN_CHANNEL_2, GRB>(ledsChannel2, 96);
  ledController.addLEDs(0, ledsChannel1, 96);
  ledController.addLEDs(1, ledsChannel2, 96);
}

void loop() {
  cHID.update();

  if (ledController.updateLEDs()) {
    FastLED.show();
  }
}

Ah da isser ja, der Pin5….jetzt bin ich gerade in die Wanne gestiegen, aber ich werde es gleich ausprobieren.
Muss ich dann den ganzen Arduino resetten? Der wird ja jetzt als ein Gerät erkannt und verbunden.

Was ich an dem Teil rumgelötet habe…alles schön auf ne Platine und die einzelnen Füße anlöten war ne riesen Arbeit. Glaube ich wäre wahrscheinlich mit dem Leonardo besser unterwegs gewesen, oder?

Meine Verdrahtung ist aber richtig?

Zum Teil ja das Relais muss auf D5 und GND, deshalb die Frage nach den Pins

Auf GND vom Netzteil? Da ist doch jetzt 5v am com. Da soll gnd dran? Oder meintest Du ich soll es von der Verdrahtung so lassen und nur der Sketch war inkomplett?

Deshalb war die Frage nach dem Relais habe so einen nicht. will ja nix kaputt machen.

Also alles so lassen und den angepassten Sketch rein?

Verstehst du nicht?
Das Relais muss angepasst, umgestellt werden sonst unter umständen macht man den D5 kaputt
Wen du endlich schreibst was auf den Pins was sind unter dem Jumper stecht machen wir weiter

Ah verstehe. Hatte gar nicht gelesen, dass ich n Foto machen soll. Du hattest den Beitrag wohl nochmal bearbeitet. Ich hatte ja die Skizze hochgeladen. So ist es auch noch angeschlossen. Hier die pics vom Relais. H und L für High und Low



Na ja so wie ich das habe in Erinnerung mit dem Schema kann man probieren.
Kann nicht noch mall mir das ansehen. teste mall

Zumindest schaltet nun das Relais schonmal. Wenn ich den USB einstecke springt es auf rot zusätzlich zu grün an aber der LED Streifen ist aus.
Wenn ich den USB abziehe schaltet es wieder.....vermutlich ist es genau falsch rum.

Die WS2812 kannst Du nicht so einfach mit der Versorgungsspannung ein und ausschalten.

Entweder funktioniert der Streifen nicht weil Du kein gemeinsame Masse hast oder er funktioniert nicht weil Du das erste LED zerschossen hast (es fehlt ein 330 Ohm Widerstnd in der Datenleitung)

Hier gibt es R1 und R5 in der Datenleitung.
Hier ist auch der Minuspol der 12Versorgung auf Masse gelegt, sogar 2 mal.

Grüße Uwe

Dan steck mall den Jumper um oder mach

 digitalWrite(relais, HIGH); 

auf

 digitalWrite(relais, LOW); 

Das mit dem Jumper ging nicht.
Ich habe nun mal den Ausgang von NC auf NO (Normally open) gewechselt....und taddaaaaa....

Auf dem Schema ist R1 und R2 drauf

An bei, danke für herunterladen und einstellen.