Seite 1 von 5

LED Stripe Control

Verfasst: 17.09.2013, 11:09
von thkl
Moin,

ich habe mir mal Gedanken über die Ansteuerung von RGB LED Stripes gemacht. Das hat hier ja schon mal jemand hier mit der Ansteuerung der Fernbedienung dieser Stripes realisiert. Ich habe jedoch den Ansatz gewählt die Stripes direkt über ein Arduino Ethernet Modul direkt anzusteuern. Die Farben und Leuchtstärken können dann direkt per HTTP und damit auch aus der CCU gesteuert werden.

Wenn Interesse besteht kann ich hier ja mal Schaltplan & Software einkippen.

Gruß Thomas

Re: LED Stripe Control

Verfasst: 17.09.2013, 11:11
von Boris
Interesse besteht auf jeden Fall!

Re: LED Stripe Control

Verfasst: 17.09.2013, 13:22
von Benny
Ja, Interesse ist da :mrgreen:

Re: LED Stripe Control

Verfasst: 17.09.2013, 14:17
von Vestnetz
Hallo,

Interesse ist auf alle Fälle da, vor allem wäre eine Lösung super wo man nicht mehr unbedingt zum Lötkolben greifen muss.

Das hat nix mit Faulheit zu tun sondern einfach gibt es ein paar kleine Probleme mit den Augen die es recht schwierig machen solche Aufgaben zu erledigen.

Aber ich würde mich auf jeden Fall über den Schaltplan+Software freuen

Re: LED Stripe Control

Verfasst: 17.09.2013, 14:43
von pix
Ja, Interesse besteht auf jeden Fall!

Re: LED Stripe Control

Verfasst: 17.09.2013, 17:36
von mikewolf99
Auch ich hätte Interesse !

Re: LED Stripe Control

Verfasst: 17.09.2013, 18:42
von grissli1
Hi,

möchte auch Interesse anmelden falls es günstiger als eine Artnetsteuerung (100 Euro) ist.

Viele Grüße
Chris

Re: LED Stripe Control

Verfasst: 17.09.2013, 21:06
von thkl
Nabend,

so hier im Anhang der Schaltplan und die Programmierung. Letztere ist noch etwas quick and dirty aber funktioniert erstmal ;)
Ich erklär mal das Prinzip:

Das Arduino Ethernet Board (kosten so um die 50 Eur) ist ein programmierbarter Microcontroller mit (sagt ja der Name schon) Ethernet Anschluß.
Die Programmierung erfolgt (anders als bei den üblichen Arduino Boards) nicht über eine USB Schnittstelle sondern über ein serielles USB Interface (Mal bei Amazon nach FTDI Kabel suchen (14,99 Eur). Auf dem Controller kann dann mit kleinstem Aufwand ein HTTP Server laufen. Dieser kann abhängig von den Requests die Ausgänge des Microcontrollers steuern.

Damit kommen wir zur Ansteuerung der LED Stripes. Die meissten Stripes haben eine gemeinsame +12 V Versorgung und für jede Farbe einen einzelnen Ausgang der LED Kathode. Je nachdem wie hell die jeweilige Farbe jetzt leuchtet wird eine Mischfarbe erzeugt. In meinem Fall werden die Kathoden der LED Stripes über ein MOSFET auf Masse gezogen. Gesteuert wird der jeweilige Farbkanal über die PWM (Pulsweitenmodulation) Ausgänge des Arduino. Damit kann also die
jeweilige Farbe recht einfach gedimmt werden.

Komplette Hardwarekosten belaufen sich auf um die 60 Euro (ohne das optionale Relaismodul bzw das Programmierkabel)

Der Rechte Teil der Schaltung ab J6/R5 ist optional. Da der Controller noch freie Ausgänge hat habe ich einfach diese über einen Treibertransistor noch mit einem Relais versehen man kann die also noch einzeln als geschaltete Ausgänge nutzen.(In der derzeitigen Software noch nicht implementiert).

Die Software ist so geschrieben, das das Board sich via DHCP eine IP vom Router holt. Ein Request http://ip/?r=[0-255]&g=[0-255]&b=[0-255] schaltet dann die jeweilige Farben. Die Software versucht schon die Farben beim Wechsel nicht hart zu wechseln sondern entsprechend überzublenden.

Ich hab der CCU ein Programm verpasst welches auf einen Wandtaster reagiert und den anzuzeigenden Farbwert in eine Systemvariable schreibt.
Ein zweites Script reagiert auf die Änderung der Variable und erzeugt den passenden HTTP Call. (Das habe ich deswegen getrennt, weil ich ein Script habe was alle Lichter aus schaltet und an der Stelle nur die Variable geändert werden muss)

Die Software des Boards muss sicher noch angepasst werden so ganz zufrieden bin ich noch nicht, aber make it run then make it right
Denkbar wäre hier noch eine eigene Weboberfläche für die Steuerung der LED Stripes (auf dem Ethernet Board ist noch ein SD Slot der genutzt werden kann um html Dateien zu speichern die der Webserver dann ausliefert)

Re: LED Stripe Control

Verfasst: 17.09.2013, 21:17
von thkl
Hier noch die CCU Scripts

Es wird eine Variable vom Type String gebraucht (in meinem Fall LCD_CH_1)

Das Script hier reagiert auf den Tastendruck eines Wandschalters.
In der var Presets sind derzeit 7 voreingestellte Farben gespeichert.
Bei jedem Auslösen des Scripts wird zuerst der Inhalt der Systemvariable gelesen.
Dieser ist der aktuelle Farbwert + der Indes in der Presettabelle also bsp für die 3. Farbe aus der Tabelle: 0-0-255-2
Dieser Index wird dann um 1 erhöht und der passende Wert aus den Presets genommen.
Das ganze wird zusammengesetzt und in der Variablen gespeichert. Damit wird also bei jedem Tastendruck die nächste Farbe gewählt. (bzw Aus für 0-0-0-0)

Code: Alles auswählen

var ch1 = dom.GetObject("LED_CH_1").Value();
var id =ch1.StrValueByIndex("-", 3);
var presets = "0-0-0;255-0-0;0-255-0;0-0-255;255-0-235;255-255-0;0-255-255;163-232-255";
if (id){
 id = id.ToInteger();
} else {
 id = 0;
}
id = id+1;
if (id>7) {
  id = 0;
}
var pr = presets.StrValueByIndex(";",id);
ch1 = pr + "-" + id;
dom.GetObject("LED_CH_1").State(ch1);
Und hier das 2. Script welches auf die Aktualisierung der Variable reagiert um die Farben an das Modul zu senden:

Code: Alles auswählen

var ch1 = dom.GetObject("LED_CH_1").Value();
if (ch1)
{
  var r = ch1.StrValueByIndex("-", 0);
  var g =ch1.StrValueByIndex("-", 1);
  var b =ch1.StrValueByIndex("-", 2);
  system.Exec("wget -q -O /dev/null http://[ip des moduls]/?&r="+r+ "&g=" + g + "&b="+b+"&1=2");
}
Der letze Parameter &1=2 ist aktuell nötig da die Systemsoftware des Moduls einen Bug hat und den letzten Parameter nicht richtig erkennt.
Das fix ich noch

Re: LED Stripe Control

Verfasst: 19.09.2013, 21:15
von thkl
So ich hab mal 2 Fotos des fertigen Moduls auf Lochrasterplatine angehangen. Es ist die Version mit 2 zusätzlichen Relais.
Die Software des Servers ist auch aktualisiert. Relais werden unterstützt und es gibt die Möglichkeit die Farbinfos an ein 2. Modul weiterzureichen.