Mehrere RGBW Strips ansteuern

Hallo,
ich bin derzeit noch ein bisschen in der Ideen-Phase, um eine Beleuchtung mit RGBW Strips zu realisieren und hoffe auf kreativen Input.

Der gewünschte Aufbau soll drei unabhängig voneinander ansteuerbare RGBW Strips beinhalten. Da diese Teilweise auch etwas länger sind (der längste Strip ist etwa 6m) komme ich um zwei Einspeisepunkte nicht drumherum, wenn ich eine halbwegs konstante Helligkeit erreichen möchte. Oder ich speise die Strips mittig, mal sehen. Die zusätzliche weiß-Komponente ist mir wichtig, da ich den Strip als Hauptbeleuchtung einsetzen möchte und das künstlich aus drei Farben erzeugte weiß nicht mag. Der Raum in dem alles Verbaut wird ist etwas größer als 6qm, daher sollte es passen. Aufgrund der Länge der Strips würde ich auch Strips mit einer Spannung von 12V bevorzugen. Mal abgesehen davon arbeite ich sowieso in einer 12V Umgebung, der ESP32 wird bereits mit einem StepDown Converter betrieben.. Die einzelnen Pixel müssen weder dicht bepackt noch einzeln ansteuerbar sein.

Herkömmliche 12V RGBW Stripes aufzutreiben ist nicht das Problem. Allerdings bräuchte ich dann bei drei unabhängig steuerbaren Strips 12 GPIOs. Das ist mir zu viel. Ich steuere mit meinem ESP noch mehr als nur Licht..

Nun gibt es diese SK6812 mit warmweißen Licht. Diese sind adressierbar (was ich nicht unbedingt benötige) und werden nur mit einer Datenleitung gesteuert. Allerdings brauche ich dann vermutlich bei dem langen Strip auch den einen oder anderen Einspeisepunkt mehr, sowie überall einen weiteren DC-DC Wandler. Ein bisschen Strom ziehen die Strips ja auch, was wiederum der Wander aushalten muss.. So ganz überzeugt bin ich davon also nicht.

Die SK6812 als 12V Variante wäre eigentlich das, wonach ich suche.. Habe aber nichts vergleichbares gefunden.

Nun bin ich also wieder bei den nicht-adressierbaren RGBW Strips angekommen und überlege, wie ich diese mit möglichst wenig GPIOs ansteuern kann. In meiner Vorstellung bekommt dann jeder Strip einen eigenen Controller auf dem sich MOSFETS zur Ansteuerung der RGBWs befinden, sowie eine I2C Schnittstelle, um mit dem ESP32 zu kommunizieren. Das Ganze dann eben in dreifacher Ausführung.

Ist das zu kompliziert gedacht? Ist das überhaupt möglich? Habe noch nie mit I2C gearbeitet.. Oder gibt es vielleicht ein paar schöne Ansätze, wie ich mein Vorhaben etwas einfacher verwirklichen kann?

Viele Grüße

Hallo,

also ich würde Dir eindeutig zu einem adresssierbaren Streifen raten. Dei 12V versionen haben in der Regle immer 3 LED´s an einem Controler und kann nur in 3er Gruppen getrennt werden. Mehrfach einspeisen musst Du nur die Stromversorgung, die Datenleitung wir nur einmal benötigt. Du must also nichts zusätzliches basteln bis auf einen Widerstand. Da ein ESP nur 3,3V am Ausgang hat kann es sein das Du zusätzlich etwas benötigst um die Datenleitung auf 5V zu bekommen. Da gibts aber ein paar einfache Tricks.

Heinz

seackone:
Nun bin ich also wieder bei den nicht-adressierbaren RGBW Strips angekommen und überlege, wie ich diese mit möglichst wenig GPIOs ansteuern kann.

Spontan fällt mir der Adafruit 12-Channel 16-bit PWM LED Driver - SPI Interface - TLC59711 ein.

Die Möglichkeiten hängen aber ganz wesentlich von den Entfernungen ab, weil beispielsweise I2C nur für kurze Entfernungen geeignet ist. Für lange Entfernungen wäre CAN-Bus, wird in Autos eingesetzt, eine Option von vielen.

Auf SK6812 als 12V Variante warte ich leider auch noch vergeblich. Willst Du es denn auch farbig machen? Wenn ja, mal ganz quer gedacht WS2812 für die Farbe und ein weißer LED-Streifen für ein schönes Weiß. Dreimal WS2812 plus einmal PWM für Weiß wären nur vier Pins.

Es hängt halt von den lokalen Gegebenheiten ab.

Hallo ihr beiden und vielen Dank für eure Antworten!

Ganz kurz noch zur Ergänzung: Die Beleuchtung soll in unserem Wohnmobil verbaut werden, d.h. ich arbeite sowieso in einer 12V Umgebung. Natürlich würden mir die 5V Strips aufgrund der Ansteuerung sehr gut gefallen, allerdings widerstrebt es mir ein wenig, diese zu verwenden. Die zusätzlichen Einspeisepunkte wären nicht das Problem, eher die Konvertierung von 12V auf 5V. Ich müsste also einen großen DC-DC Wandler verbauen, der auch ein bisschen Leistung liefert (ich habe mich noch nicht informiert, was es für Modelle gibt) oder mehrere kleine. Beispielsweise an jedem Einspeisepunkt. Eigentlich wollte ich das vermeiden. Wobei jetzt die Variante pro Strip einen eigenen Controller zu basteln auch nicht wesentlich eleganter ist :slight_smile: Das muss ich mir also nochmal überlegen. Wo liegt denn da die Grenze bei der Länge der Datenleitung? Theoretisch könnte ich ja alle Strips mit der Datenleitung verbinden und dann die Strips doch adressiert ansteuern. Insgesamt werden allerdings etwa 10m Strips verbaut + Leitung zum ESP. Der Hinweis mit der Spannung des Logik-Signals war sehr gut, vielen Dank! Daran habe ich noch nicht gedacht.. sollte aber kein Problem sein!

Hm okay. Das mit der Entfernung bei I2C wusste ich nicht.. Die Leitungslänge vom ESP zum Strip beträgt grob geschätzt 3m. Das wird dann wohl zu lang sein? Ja, ich würde es auch gerne farbig machen. Grün und Blau eher weniger.. eine Art dezentes Orange (impliziert ja wieder grün) nutzen wir zuhause ganz gerne, rot hat sich im Wohnmobil auch bewährt. Also nicht falsch verstehen :wink: Es steht hin und wieder mal abends die Tür offen, wenn wir noch draußen sitzen. Bei rotem Licht haben wir die Erfahrung gemacht, weniger Viehzeug im Innenraum zu haben. Auch wenn nachts jemand auf die Toilette muss, eignet sich ein rotes Licht ganz gut um den Sinn zur Orientierung zu bewahren und den Partner nicht zu wecken. Über einen zweiten Streifen habe ich tatsächlich auch schon nachgedacht. Für die indirekte Beleuchtung im Fußraum (also unter der Küche, Schränke usw..) wär das kein Problem, bei den Oberschränken sähe das aber eher weniger toll aus. Dort werde ich eine Nut fräsen, sodass die Strips sichtbar sind (auch wenn eher dezent hinter Milchglas). Bei einem zweiten Strip müsste die Nut doppelt so breit werden, ich glaube damit kann ich mich nicht so richtig anfreunden.

Ohh.. habe ich gerade entdeckt:

seackone:
Die Beleuchtung soll in unserem Wohnmobil verbaut werden, ...

Mein Wohnwagen hängt nicht immer an einer Steckdose, weshalb dann Stromsparen angesagt ist. Die LED-Streifen ziehen da schon mal etwas Leistung.

seackone:
... ich arbeite sowieso in einer 12V Umgebung ...

Verseuchte 12 V im Auto sind problematisch, mit eigenem Campingakku könnte es funktionieren.

seackone:
Wo liegt denn da die Grenze bei der Länge der Datenleitung?

Bei Takt und Daten auf einer Leitung wie bei WS2812/WS1215 nur wenige cm. Bei einer Verlängerung benötigst Du Zusatzelekronik, eventuell auch mehrere ESP32, die miteinander reden.

In meiner Kellerbar habe ich mehrere Meter Streifen mit einzeln animaierten LEDs hängen, da wirkt der einfarbige Streifen aus dem Baumarkt richtig langweilig. Das ist aber wie so Vieles Geschmacksache. Keine schlafraubenden Viecher sind ein starkes Argument.

seackone:
Dort werde ich eine Nut fräsen

Für LED-Streifen gibt es auch Profile mit Milchglas, möglicherweise einfacher als Fräsen.

Moin,
wir haben ebenfalls eher selten einen Landstromanschluss aber mit 300Ah LiFePo4, Ladebooster und Solarpanelen auf dem Dach, mache ich mir da nicht so die großen Gedanken. Bin mir aber natürlich bewusst, dass die Leds alles andere als stromsparend sind. Die müssen aber nun auch nicht rund um die Uhr an sein, nicht auf voller Helligkeit leuchten, kein weiß aus allen LEDs erzeugen usw.. Ich denke das geht schon. Unsere Aufbaubatterien sind galvanisch von der Starterbatterie getrennt, jeder Verbraucher hat eine eigene Zuleitung (12V und GND, keine Masse über die Karosserie) und die Leitungen vom Wechselrichter sind getrennt verlegt. Probleme hatte ich noch nie.. aber eben auch noch nie irgendwelche Strips im Fahrzeug betrieben.

Das mit der Datenleitung ist natürlich ein Problem. Welche Art von Elektronik würde ich denn benötigen beim Einsatz einer Verlängerung? Wie könnte die Kommunikation zwischen mehreren ESPs über eine Distanz von 3-4 Metern funktionieren (wenn nicht über Wlan)? I2C wurde ja bereits diskutiert und fällt dementsprechend auch aus. Seriell würde mir noch einfallen. Hier bin ich aber auch bereits schon an die Grenzen der Hardware gestoßen und muss in meinen Skript zwischen mehreren seriellen Verbindungen wechseln. Noch eine Schnittstelle mehr, muss nicht unbedingt sein :slight_smile:

Die Profile kenn ich. Ein Aluprofil kommt auch in die Nut, zur Kühlung.. Ob ichs brauch? Wer weis.. Besser ich mach das jetzt als später. Die Schänke zerlege ich ja sowieso, daher ist das mit dem Fräsen kein Problem. Soll dann ein bisschen wie integriert aussehen.

Der ESP32 hat einen CAN integriert. Da braucht es wohl nur noch einen Transceiver (habe ich aber noch nicht selbst ausprobiert).
Das wäre dann aber die "Schnittstelle mehr" :frowning:

seackone:
... mache ich mir da nicht so die großen Gedanken.

Ich jetzt ich auch nicht mehr :slight_smile:

seackone:
Welche Art von Elektronik würde ich denn benötigen beim Einsatz einer Verlängerung?

Leider noch nicht selbst probiert: ws2812-range-extender

seackone:
Wie könnte die Kommunikation zwischen mehreren ESPs über eine Distanz von 3-4 Metern funktionieren (wenn nicht über Wlan)?

Übrigens finde ich, Du solltest dem Weiß der WS2815 eine Chance geben. Bei 12 V und maximal 10 mA je Pixel (gemessen, Datenblat 15 mA) könntest Du auch eine schöne Animation laufen lassen. Wenn es draußen Schittwetter ist, läßt Du drinnen die Sterne funkeln.

Vielen Dank nochmal für eure Hilfe!

Unabhängig davon für welchen RGB Streifen ich mich entscheide, zwischen dem ESP32 und dem Strip muss noch irgendwelche Technik verbaut werden. Bei adressierbaren RGBs dann beispielsweise ein range extender oder ein weiterer ESP, Teensy... um die Kommunikation aufrecht zu erhalten. Letztere Variante könnte ich mit ein paar mosfets kombinieren und dann auch die "dummen" RGBs verwenden. Somit brauche ich keine 12 GPIOs mehr.

Ich werde also noch ein bisschen recherchieren müssen, insbesondere mit den Schnittstellen. Vielen Dank für die Zusammenfassung!

agmue:
Übrigens finde ich, Du solltest dem Weiß der WS2815 eine Chance geben. Bei 12 V und maximal 10 mA je Pixel (gemessen, Datenblat 15 mA) könntest Du auch eine schöne Animation laufen lassen. Wenn es draußen Schittwetter ist, läßt Du drinnen die Sterne funkeln.

Ach hör bloß auf, daran habe ich auch schon gedacht :slight_smile: Ein Freund hatte bei sich damals einen Sternenhimmel eingebaut, ist aber schon einige Jahre her. Mit 3mm bedrahteten LEDs, irgendwo versteckt in der Decke eingelassen. Wie die Ansteuerung dann lief, weis ich nicht mehr. Da es aber schon recht lange her ist, würde ich Arduino oder ähnliches ausschließen.. Man hat die LEDs nicht gesehen, die wurden von dem halb transparenten Material der Deckenverkleidung (Stoff) verdeckt. Erst nachts haben die LEDs geleuchtet. Sogar richtig geflimmert. Sternbilder hatte er auch integriert. War echt beeindruckend und sicher richtig viel Arbeit! Bei den adressierbaren RGBs könnte ich mir aber noch andere Szenarien vorstellen.. Quasi eine Routine zum aufwachen, bei der die Anzahl aktiver Decken-RGBs steigt und sich zusätzlich die Farbe ändert. Also einen Sonnenaufgang nachbildet. Sicherlich auch interessant. Gerade im Winter stelle ich mir das ganz nett vor.

Aber erstmal werde ich noch ein bisschen recherchieren bzw. mich der Kommunikation zwischen zwei ESPs beschäftigen. Da komme ich vermutlich nicht drumherum und eigentlich ist die Idee auch gar nicht so doof. Einen Sack ESP8266 habe ich ja hier auch noch rumliegen. Die könnten als Controller am Strip dienen. Solange der ESP32 kein Befehl für das Licht sendet, befindet sich der ESP8266 im Deep Sleep. Erst mit entsprechenden Kommando wird er geweckt, erhält den Befehlt und gibt diesen an den Strip weiter. Somit würde er sich dann vollständig um die Beleuchtung kümmern, während der ESP32 sich wieder anderen Aufgaben widmen kann.

seackone:
Solange der ESP32 kein Befehl für das Licht sendet, befindet sich der ESP8266 im Deep Sleep. Erst mit entsprechenden Kommando wird er geweckt, erhält den Befehlt und gibt diesen an den Strip weiter.

Wie soll der den Befehl empfangen, wenn er schläft?

Gruß Tommy

Hi Tommy,
der ESP32 ist im Moment auch überwiegend im Deep Sleep und wird regelmäßig über einen Timer geweckt um ein paar Messwerte zu nehmen und abzuspeichern. Außerdem wird er noch über Touch Display geweckt und bleibt dann so lange wach, wie das Display an ist. In diesem Zusammenhang könnten auch die Controller-ESPs der RGBs geweckt werden, für den Fall das über das Touch Display ein Licht geschalten wird. Denn ohne Display kein Licht. Auf einen Webserver, Steuerung über Handy usw.. habe ich bewusst verzichtet. Daher auch die Frage zu Möglichkeiten der Kommunikation ohne Wlan. Oder man weckt die Controller wirklich erst unmittelbar vor dem zu sendenden "Licht-Befehl". In jedem Fall hast du recht, der Controller muss über eine zusätzliche Leitung geweckt werden. Vielleicht geht das aber auch irgendwie über den Bus in Form eines vorauseilenden Ping, einem entsprechenden Delay und dem nachfolgenden Befehl. Aber wie gesagt.. mit den Schnittstellen muss ich mich noch ausgiebig beschäftigen.

Wenn meine Frau was von Sternenbilder ließt, dann will sie das sofort haben. Also Psssst!

seackone:
Einen Sack ESP8266 habe ich ja hier auch noch rumliegen. Die könnten als Controller am Strip dienen.

Nach meinen Erkenntnissen eignet sich der ESP32 zusammen mit FastLED am besten zum Ansteuern von LED-Streifen. In dieser Konstellation verwende ich das, ESP8266 habe ich nicht.

Ohne WLAN, also mit Kabel, genügt auch ein Nano oder ProMini, wenn nicht zu viele LEDs angesteuert werden sollen und dadurch der Speicher nicht reicht.

Mit WLAN:
Werner Rothschopf
Fips

Beide sind hier aktiv.

Hallöchen,
ich möchte mich nochmal kurz zurück melden und mich für euren Input bedanken. Meine RGBW Strips sind noch nicht angekommen, aber heute hatte ich endlich wieder ein bisschen Zeit, mich um das Projekt zu kümmern.

Ich denke es wird dann darauf hinaus laufen, dass ich einen ESP32 als Master betreibe, der dann in 3-4m Entfernung mit dem ESP8266 als Client kommuniziert. An diesem hängt dann wiederum der Strip. Vorhin habe ich dann die I2C Schnittstelle ausprobiert und was soll ich sagen.. es klappt problemlos! Zunächst habe ich die Distanz zwischen Sender und Empfänger recht gering gehalten und nur ein paar Jumper Kabel für Data und Clock verwendet. Gesendet wurden einige char Arrays mit irgendwelchen beliebigen Zeichen. Hier gab es schon die ersten Störungen, es wurde entweder gar nichts übertragen oder nur die Hälfte. Der ursprüngliche Plan war es, auf ein ganz kurzes Netzwerkkabel umzusteigen um zu sehen, ob damit eine zuverlässigere Datenverbindung ermöglicht werden kann. Allerdings ist mir zuvor ein Telefonkabel in die Hände gefallen. 10m lang, 4 adrig, paarweise verdrillt, mit Schirmung innerhalb des Mantels aber ohne extra Schirmung der Adernpaare. Ohne irgendwelche großen Versuche zu starten, habe ich das Kabel kurzerhand angeschlossen.. zu meiner Überraschung: es funktionierte! Die Zeichenkette wurde jede Sekunde gesendet und kam immer ohne Fehler an. Ohne Extender oder sonstiges. Die Datenleitung und Clock habe ich am Sender jeweils über 2,4K Ohm mit 3.3V verbunden, das wars. Im Wohnwagen muss ja dann nichtmal eine halb so große Distanz überbrückt werden, jetzt bin ich wieder sehr zuversichtlich!

seackone:
ich möchte mich nochmal kurz zurück melden und mich für euren Input bedanken.

Potzblitz! Eine Rückmeldung kommt leider selten.

... und was soll ich sagen.. es [das andere Kabel] klappt problemlos! ...

Das wird's auch mit grünem Strom <:-)

Gruß

Gregor

Guten Morgen!
Vielleicht war ich mit meiner Euphorie gestern ein bisschen voreilig. Die Übertragung zwischen Master und Slave klappt soweit mit einem 10m Telefonkabel.. Mir ist aber ein anderes Problem aufgefallen.

Ich habe mal über Nacht folgende I2C Konfiguration ausprobiert (nur um ein wenig zu testen, mit Licht hat das nicht viel zu tun):

ESP32 - Master
DS3231 - Slave (RTC)
ESP8266 - Slave

Der Master ruft jede Sekunde die Uhrzeit der RTC (auch die war übrigens neu und meine erste I2C Komponente) ab und sendet diese Info dann an den ESP8266. SDA und SCL sind am Master über 2,4 kOhm mit 3,3 V Verbunden. Der ESP32 befindet sich auf ein Steckbrett, direkt daneben ist dann die RTC (ebenfalls auf dem Steckbrett). Anschließend kommt das 10m lange Kabel an dessen Ende sich dann der ESP8266 befindet.

Das lief erstmal überraschend gut. Ich habe mir die serielle Ausgabe vom Master (Info was gesendet wurde) sowie die des ESP8266 als Slave (Info was empfangen wurde) parallel ausgeben lassen. Irgendwann macht der Master allerdings ein Reset und zwar ziemlich sporadisch. Manchmal nach einer Minute, mal nach einer halben Stunde oder später und machmal öfter hintereinander. Das ist mir gestern nicht auf anhieb aufgefallen und tritt nur auf, wenn ich das 10m Kabel mit dem ESP8266 an den Bus hänge.

Das dann doch nicht alles so Problemlos läuft, habe ich mir bereits gedacht (daher der Test über Nacht). Allerdings hätte ich eher damit gerechnet, dass vielleicht am ESP8266 falsche oder keine Daten ankommen. Das der Master neu startet habe ich nicht erwartet. Es scheint ja durch eine Störung aufgrund des Kabels verursacht zu werden. Kennt jemand das Problem? Das Telefonkabel wird später natürlich durch ein vernünftiges Netzwerkkabel ersetzt, es ist mir gestern in meiner Kiste nur als erstes in die Hände gefallen..

Und noch ein kurzer Nachtrag:

Das Problem scheint nur aufzutreten, wenn ich zwei Geräte im Bus betreibe.
ESP32 + RTC (kurze Verbindung) läuft einwandfrei
ESP32 + ESP8266 (lange Verbindung) läuft einwandfrei

Nur die Kombination: ESP32 + RTC + ESP8266 führt dazu, dass der ESP32 gelegentlich rebootet.

Der ESP8266 ist nicht für Slavebetrieb spezifiziert.

Gruß Tommy

Hallo Tommy,
ich habe auch den ESP8266 unter Verdacht. Seit core 2.5.0 soll er wohl den Slave Betrieb unterstützen:

..die Kommunikation zwischen dem ESP32 als Master und dem ESP8266 als Slave läuft auch seit meinem Post heute morgen problemlos. Der Master stürzt relativ unregelmäßig ab, wenn sich die RTC mit auf dem Bus befindet. Die I2C Schnittstelle vom ESP8266 ist aber m.E. keine richtige Hardware Schnittstelle, weshalb ich hier auch die Probleme vermute.

Was wäre denn die Alternative? Der Controller muss nicht viele Pins haben, sollte so klein wie möglich aber ausreichend Speicher haben um einen etwa 6m langen (addressierbaren) RGBW Strip ansteuern zu können. @agmue hatte bereits den Nano und ProMini erwähnt. Mit dem Speicher bin ich mir unsicher. Ich weis nicht so genau was zur Ansteuerung meines Strips so üblich ist.

seackone:
SDA und SCL sind am Master über 2,4 kOhm mit 3,3 V Verbunden.

Wo befinden sich die PullUP-Widerstände?

Hat die RTC PullUP-Widerstände welcher Größe drauf?

Mit welcher Spannung wird die RTC versorgt?

seackone:
ESP32 - Master
DS3231 - Slave (RTC)
ESP8266 - Slave

ESP8266 zusammen mit NeoPixel scheint mir, was ich so gelesen habe, nicht so ideal zu sein, weil die Architektur den Datenfluß unterbrechen kann. Allerdings habe ich keine praktischen Erfahrungen mit ESP8266.

Wieviele Pixel pro ESP8266 sollen es denn werden? Welcher LED-Typ? Leider kann ich keine Angaben dazu finden.