Ein RGB LED Strip bietet eine einfache und kostengünstige Möglichkeit zur (indirekten) Beleuchtung. In diesem Blog-Eintrag beschreibe ich wie es möglich ist, mit einem ESP8266 Mikrocontroller und etwas Arduino Code, eine solchen RGB LED Strip über das eigene WLAN zu steuern. Der ESP8266 stellt dafür im Heimnetzwerk eine REST API zur Verfügung. Diese kann sowohl zur Automatisierung im Smart Home oder aber auch direkt auch zur Steuerung über Computer oder Smartphone genutzt werden.

ESP8266 Mikrocontroller

Der ESP8266 ist ein 32bit Mikrocontroller der chinesischen Firma espressif. Die ersteren Versionen waren wohl nicht besonders stabil, inzwischen erfreut sich der verbesserte Chip dank seiner Features und des Preises aber einer wachsenden Gemeinde von Fans. Es gibt verschiedene Module, die alle Gemeinsam haben, dass sie für den Preis von ca. 2 Euro eine günstige Möglichkeit zum basteln mit Netzwerk-Fähigkeit (WLAN) sind. Die Unterschiede liegen vor allem in der Anzahl den nutzbaren Pins (GIPOs) und der Größe des Flash Speichers. Stefan Frings hat zu den Modulen eine schöne Übersicht erstellt.

Der ESP8266 lässt sich (auch) mit der Arduino Plattform programmieren was insbesondere für Bastler und Hobby-Elektronik den Ein- und Umstieg erleichtert. Die Chips brauchen eine Spannungsversorgung von 2,5 bis 3,6V, so dass man sie in einem 3,3V Stromkreis mit vielen aus dem Arduino Bereich bekannten Sensoren nutzen kann. Mit einigen Tricks lässt sich zudem der Energieverbrauch stark reduzieren, so dass sich Projekte fernab der Steckdose realisieren lassen.

Besonders viele Fans hat der ESP8266 aufgrund seiner geringen Kosten und Konnektivität im Bereich Hausautomatisierung gefunden. Das gilt sowohl für Selbstbauprojekte als auch für fertige Produkte. Die beliebten Sonoff * Geräte basieren zum Beispiel auf den Chips.

Für den Einstieg in die ESP8266 Welt ist ein Entwicklerboard wie das NodeMCU * zu empfehlen. Dieses bring neben dem Chip schon ein paar Hilfsschaltungen zur Programmierung und Stromversorgung mit.

Aufbau der Hardware zur RGB LED Wifi Steuerung

Um einen RGB LED Strip mit einem ESP8266 jetzt „WLAN-fähig“ zu machen braucht es neben dem Mikrocontroller und dem LED Strip selbst eigentlich nur noch drei Transistoren und die passende Schaltung.

Benötigte Hardware

Bezeichnung Preis
RGB LED Strip * ca. 19,00 Euro
NodeMCU Entwickler Board * ca. 8,00 Euro
3x IRLB 8721 MOSFET N-Channel ca. 2,00 Euro

 

Für den Aufbau wird außerdem ein Experimentier Steckboard * mit entsprechenden Kabel benötigt. Wer ein solches noch nicht besitzt und sich an den Nachbau machen möchte, sollte am besten gleich zu einem Set * greifen, dass neben dem Steckbrett und Kabel noch weitere Bauteile enthält die man häufiger benötigt.

 

Steckbrett Prototyp

Fritzing: Prototypischer Aufbau zur Steuerung des RGB LED Stip

In dieser Schaltung wurde schon eine eigene 3,3V Spannungsversorgung für das NodeMCU Modul basierend auf den 12,0V die wir für den RGB LED Strip sowieso benötigen integriert. Für Testzwecke ist dies nicht zwingend nötig, da wir das NodeMCU Modul auch direkt über USB mit Strom versorgen können. Zu der Spannungsversorgung gleich noch etwas mehr.

Prototyp mit NodeMCU, MOSFETs und RGB LED Stip

 

Aufbau auf gefertigter Platine mit ESP-12E

Theoretisch kann man das Projekt mit dem Steckbrett abschließen und direkt weiter zum Punkt Software springen (bzw. damit erst mal den Prototyp testen und weiterentwickeln). Wer die ganze Schaltung später aber hinter dem Schrank verstecken möchte, dem rate ich zu einer gefertigten Platine. Die Gründe sind schnell aufgezählt: Zum einen ist die Schaltung deutlich kleiner aber trotzdem robuster und auch die Querschnitte der einzelnen Leiter können besser dimensioniert werden.

Eine eigene Platine kann man theoretisch auch mit einem NodeMCU Modul aufbauen und dieses verlöten, ich habe mich allerdings dafür entscheiden ein ESP-12E Modul zu nehmen und nur die benötigten Funktionen des NodeMCU nachzubauen.

Liste der benötigten Bauteile

Zusätzlich bzw. als Alternative zu den oben aufgeführten Teilen benötigen wir für den Aufbau mit einem ESP-12E auf einer Platine noch die folgenden Teile:

Bezeichnung Preis
ESP-12E Modul * (als Alternative zum NodeMCU) ca. 4,00 Euro
LD1117V33 Spannungsregler * ca. 5,00 Euro
2x 100nF Kondensator * ca. 4,00 Euro
10uF Kondensator * ca. 4,00 Euro
4x 10k Widerstand * ca. 2,00 Euro
2x DIP-4 Drucktaster * ca. 1,00 Euro

Ich habe an dieser Stelle nur Beispiel-Links zu Amazon gesetzt. Dort erwirbt man meistens gleich mehrere der Bauteile. Wie bei vielen elektronischen Bauteilen handelt es sich pro Bauteil um einen „Cent-Artikel“ die es teilweise günstiger bei Reichelt, Conrad oder auch AliExpress * gibt.

Schaltplan

Eagle Schaltplan des RGB LED Controller mit ESP-12

Der Schaltplan für den Aufbau mit einem ESP-12E ist nur leicht komplexer. Wir müssen zwei wesentliche Funktionen des NodeMCU nachbauen: Die Spannungsversorgung und was wir zum programmieren des Chips brauchen.

Ganz rechts in der Schaltung finden wir die drei aus dem Prototypen bekannten MOSFET vom Typ IRLB 8721. Diese sind mit GND, dem ESP-12E und einer Anschlussleiste zum späteren Anschluss des RGB Strip verbunden. Die 12V Eingangsspannung leiten wir ein Mal direkt an die Anschlussleiste des RGB Strip weiter und schalten parallel dazu den LD1117V33 Spannungsregler wie im Datenblatt beschreiben. Jetzt haben wir eine stabile 3,3V Versorgung zum Betrieb unseres Mikrocontroller. Der Kondensator C3 sowie die Widerstände R1 bis R4 werden im Datenblatt für den ESP-12E für eine verbesserte Stabilität empfehlen bzw. dienen als Pull-Up Widerstände für die beiden Taster S1 (Flash) und S2 (Reset) die später das programmieren erleichtern. Hierzu empfiehlt es sich auch die TX und RX Pins sowie die Spannungsversorgung des ESP-12E auf eine Pin-Leiste zu legen .

Platine zum Aufbau

Die Platinen habe ich bei ALLPCB * produzieren lassen. Ich habe den Service vor kurzem entdeckt und muss sagen das ich mit dem Preis-Leistung Verhältnis äußerst zufrieden bin. Früher habe ich Leiterbahnen noch mit Edding auf mit Kupfer beschichtete Platten gezeichnet, die Platine dann geätzt, per Hand gebohrt und bestückt. Neben dem Arbeitsaufwand war das immer mit Folgeaufwand wie dem ordentlichen Entsorgen der benötigten Chemikalien verbunden und sicher auch nicht ganz ungefährlich. Die Variante am Rechner zu entwickeln und die Produktion durch in Auftrag zu geben gefällt mir deutlich besser.

Bisher habe ich neben dem RGB Wifi Controller noch eine zweite Platine ähnlicher Größe bei ALLPCB anfertigen lassen. Die Produktions- und Lieferzeit ist dafür, dass die Produktion & Versand aus China erfolgen mit rund einer Woche Laufzeit absolut zufriedenstellend. Einziger Nachteil ist, dass man immer gleich mindesten 5 Platinen bestellen muss.

Platinen von ALLPCB Deteilansicht der Platine von ALLPCB Bestückte Platine

Das bestücken der Platine mit den Bauteilen geht mit etwas Übung sehr schnell von der Hand. Die Nachdem die Platine mit den Bauteilen bestückt ist kann diese dann in einem kleinem Gehäuse untergebracht werden. Bei dem Gehäuse unbedingt auf Öffnungen für die Lüftung achten. Beim Spannungsregler ist zudem ein kleiner Kühlkörper absolut zu empfehlen, bei den MOSFETs sind diese eher optional.

Aufbau in Gehäuse verschraubt und verkabelt.  Aufbau beim Programmieren mit USB zu TTL Serial FTDI Adapter Gehäuse nach dem Zusammenbau

Beim Anschluss von Stromversorgung und Netzteil an die Platine gibt es viele denkbare Optionen. Ich habe zum Beispiel auf der Platine verwendet Anschlussklemmen, man könnte die Kabel aber auch direkt verlöten. In das Gehäuse habe ich eine DIN Buchse eingebaut und mir ein DIN Stecker Kabel für den RGB LED Strip gelötet. Der Vorteil ist, dass die DIN Stecker-/Buchsenkombination beim Stecken verpolungssicher ist. Für die Stromversorgung habe ich im Gehäuse eine Buchse für Hohlstecker eingebaut. Dadurch konnte ich das mit dem RGB LED Strip gelieferte Netzteil weiterverwenden.

Software zur RGB LED Wifi Steuerung

Wie schon erwähnt ist in meinen Augen einer der großen Vorteile der ESP8266 Microcontroller, dass sich dieser mit der Arduino Plattform und seiner C-ähnlichen Programmiersprache und insb. den vielen Bibliotheken und Beispielen programmieren lässt. Damit das funktioniert muss man im Board Manager der IDE noch die ESP8266 Boards hinzufügen. Dazu einfach die Einstellungen öffnen und unter „Zusätzliche Boardverwalter-URLs“ die URL http://arduino.esp8266.com/stable/package_esp8266com_index.json eintragen. Anschließend kann die esp8266 Platform unter Werkzeuge > Boards > Boardverwalter installiert werden. Eine ausführlichere Anleitung dazu findet ihr beim ESP8266 Arduino GitHub Projekt

Ich habe eine für den RGB LED Controller eine kleine REST-API zur Steuerung geschrieben. Diese kann man entweder programmatisch zur Automatisierung nutzen oder man nutzt die ebenfalls integrierte, grafische Oberfläche und steuert seinen RGB LED Strip mit dem Controller dadrüber.

Der Code für das ganze Projekt ist in meinem esp8266-arduino-wifirgb Projekt auf Github zu finden. Wenn ihr das Projekt nachbaut, das Github-Projekt klonen oder downloaden und dann in die Arduino IDE importieren. Anschließend müssen vor dem aufspielen auf den Mikrocontroller noch einige Anpassungen vorgenommen werden.

Konfiguration

Im Haupt-Sketch des Arduino Projektes, der WifiRGB.ino müssen jetzt ein paar Anpassungen gemacht werden. Für Arduino Einsteiger: Das ist der erste Tab, der mit WifiRGB beschriftet ist.

Netzwerkeinstellungen

Als Erstes müssen die Netzwerkeinstellungen an das eigene WLAN angepasst werden:

const char* ssid = "your_ssid";
const char* password = "your_wifi_password";
const char* deviceName = "wifi-rgb";

Der deviceName ist dabei frei wählbar, solange es kein Gerät mit dem gleichen Namen im Netzwerk gibt.

Ich empfehle die Netzwerkeinstellungen manuell festzulegen und eine feste IP-Adresse zu vergeben. So ist der Controller später immer unter der gleichen Adresse ansprechbar.

IPAddress clientIP(192, 168, 178, 250); //the IP of the device
IPAddress gateway(192, 168, 178, 1); //the gateway
IPAddress subnet(255, 255, 255, 0); //the subnet mask

Wenn ihr stattdessen DHCP nutzen möchtet, könnt ihr die drei Zeilen ignorieren und müsst die Zeile

WiFi.config(clientIP, gateway, subnet);

entweder mit zwei // einkommentieren oder ganz entfernen. Beim Booten gibt der RGB LED Wifi Controller später die IP-Adresse über die Serielle Schnittstelle aus. Da man aber bestimmt nicht immer einen Seriellen Monitor angeschlossen hat muss man die Adresse ggf. auch auf anderem Weg herausfinden. Daher meine Empfehlung für eine feste IP.

RGB Pins anpassen

Wenn mein Schaltplan eins zu eins verwendet wird, können die folgenden Zeilen einfach so stehen bleiben. Wer aber eigene Anpassungen vornehmen möchte oder beim verlöten zwei Kabel vertauscht hat kann mit den folgenden drei Zeilen die RGB Pins anpassen.

#define REDPIN 12
#define GREENPIN 14
#define BLUEPIN 5

Ich habe die drei Zeilen übrigens gebraucht, weil in meinem ESP-12 Eagle Package die Package Pins des ESP-12 für das Board nicht richtig belegt waren…

Verbindungsanzeige über interne LED

Im Standard habe ich die LED des ESP-12 so konfiguriert, dass diese sobald die WLAN Verbindung hergestellt ist leuchtet. Wer eine eigene LED verwenden möchte kann den Pin in der Zeile

#define BUILTIN_LED 2

ändern. Alternativ kann man auch die Zeilen

pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
digitalWrite(BUILTIN_LED, LOW); // Turn the LED ON by making the voltage LOW after wifi is connected

auskommentieren oder entfernen um die Funktion ganz zu entfernen wenn die Statusanzeige stört.

Flashen der Firmware auf den ESP8266

Ist man mit den individuellen Anpassungen fertig kann den Sketch kompilieren und auf den ESP8266 kopieren. In der Arduino IDE geht das mit einem Klick, man muss lediglich vorher den Chip direkt per USB Kabel (NodeMCU) oder mit einem USB zu TTL Serial FTDI Adapter * (eigene Platine mit ESP-12) anschließen und den richtigen COM Port auswählen. Das NodeMCU Board ist in der IDE hinterlegt, für den ESP-12E habe ich die folgenden Einstellungen verwendet.

Programmiereinstellungen ESP12

Beim Programmieren des ESP8266 (egal ob ESP12 oder NodeMCU) sollte man zur Sicherheit die 12V Spannungsversorgung für den RGB LED Strip trennen.

REST API

Sobald der Controller gestartet ist wartet dieser unter der URL http://ip-adress/api/v1/state auf Befehle. Zur Steuerung muss ein HTTP POST Request an die URL gesendet werden. Der Body muss dabei einen JSON mit entweder einem RGB-Farbwert oder einen HSV-Farbwert enthalten.

Die Werte im JSON selbst sind denke ich selbsterklärend:

RGB HSV
{
  "state": "ON",
  "brightness": 100,
  "color": {
    "mode": "rgb",
    "r": 255,
    "g": 125,
    "b": 75
  },
  "mode": "SOLID"
}
{
  "state": "ON",
  "brightness": 100,
  "color": {
    "mode": "hsv",
    "h": 250,
    "s": 50,
    "v": 50
  },
  "mode": "SOLID"
}

Der Parameter mode ist ein bisschen vorweg gegriffen, da aktuell nur eine Farbe unterstützt wird. Wahrscheinlich werde ich hier in Zukunft aber noch mehr Modi einbauen.

Benutzeroberfläche

Wem das ganze jetzt etwas zu technisch und theoretisch war und es lieber bunt und praktisch mag, der kann nach dem starten des Controllers mit seinem Webbrowser die Adresse http://ip-adress/ui aufrufen.

 

Im Hintergrund passiert hier nichts anderes, als dass Befehle an die oben vorgestellte REST-API gesendet werden.

Ausblick

Mit dem aktuellem Stand lässt sich bereit vieles realisieren. In Verbindung mit Plattformen wie ioBroker oder openHAB lässt sich der RGB LED Strip dank der API einfach integrieren. Damit sind der Automatisierung keine Grenzen mehr gesetzt. Auch eine Steuerung über Amazon Alexa * oder Apple Homekit lässt sich mit solchen Plattformen sehr einfach einrichten.

Die Software kann (und soll) natürlich auch noch weiterentwickelt werden. Auf der ToDo-Liste stehen ein einfacheres Set-Up mit einem eigenen Netzwerk zum Einrichten, weitere Funktionen für das ansteuern des Lichtes wie pulsieren oder Übergänge. Neben REST sind auch andere Protokoll-Implementierungen wie MQTT denkbar. Zu guter Letzt hat die grafische Oberfläche auch noch Luft nach oben.

 

Disclosure: Ich habe in diesem Artikel sogenannte Affiliate-Links verwendet und sie mit einem „*“ gekennzeichnet. Erfolgt über diese Links eine Bestellung, erhalte ich eine Provision vom Verkäufer, für den Besteller entstehen dabei keine Mehrkosten.


44 Kommentare

Tobias Friedrich · 5. August 2018 um 22:09

Hallo Chris,
ich finde die Anleitung wirklich super!
Ich hab noch nie so eine Platine selbst gemacht, kannst du mir das Layout zukommen lassen?

Vielen Dank
Beste Grüße
Tobias

    Chris · 6. August 2018 um 19:28

    Hallo Tobias,

    ich habe dir die Dateien mal hochgeladen. Bei der Projektdatei bin ich mir jetzt gerade nicht sicher, das GERBER File ist definitiv falsch. Die verwendete ESP-Library in EAGLE hatte vertauschte Pins, so dass die Belegung nicht stimmte. Das kann man in dem Arduino Software-Sketch aber korrigieren.

    Die Eagle Projektdatei: https://chrisklinger.de/wp-content/uploads/2018/08/WifiRGB_eagle.zip
    GERBER Dateien: https://chrisklinger.de/wp-content/uploads/2018/08/WifiRGB_gerber.zip

    Viele Grüße
    Chris

      Matthes · 11. Mai 2019 um 15:04

      Liegt der Fehler der GERBER Dateien auch nur in der falschen Pinbelegung? Wenn ja, welche Pins müsste man vertauschen?

      Vielen Dank

        Chris · 12. Mai 2019 um 14:37

        Ja, in der GERBER sind auch nur die Pins „falsch“. Dabei handelt es sich im GIPO 4/5, man müsste also im Arduino Sketch die Zeile #define BLUEPIN 5 in #define BLUEPIN 4 ändern.

Tobias Friedrich · 7. August 2018 um 09:07

Hallo Chris,

vielen Dank, soweit ich das sehe sind nur Pin4 und Pin5 beim ESP vertauscht. Das hab ich mal korrigiert und versuch jetzt mal mein Glück bei ALL PCB!
Vielen Dank

Markus · 10. September 2018 um 20:39

Hallo Chris,
Ich verwende die gleichen Mosfets und ebenfalls einen ESP8266 jedoch habe ich das Problem das meine Fets nicht „voll durch schalten“ dabei hab ich meine Komponenten genau gleich am Steckbrett gesteckt. Ist es Möglich das auch deine Fets nicht die ganzen 12V schalten?
LG Markus

    Chris · 1. Oktober 2018 um 22:26

    Hallo Markus,
    ich habe mir gerade mal die Mühe gemacht und die Mosfets in einer einfachen Schaltung ohne Verbraucher durchzumessen. Bei mir kommen da die vollen 12V durch:

    Arbeitest du auf einer Steckplatine? Dort sind manchmal ziemliche Widerstände versteckt, welche bis zu ein paar hundert mV kosten können.

      Clemens · 4. November 2018 um 14:48

      Hallihallo,
      danke erstmal für die coole Idee und die gut verständliche Beschreibung.
      Ich habe allerdings das gleiche Problem wie Markus. Meine MosFETs schalten auch max 11V durch. Ich habe zwar andere verwendet (http://www.onsemi.com/pub/Collateral/RFP70N06-D.pdf), die sollten aber bei gemessenen 3,3V am Gate auch voll durchschalten, oder?

      Mfg,
      Clemens

        Chris · 8. November 2018 um 19:51

        Ich habe das gestern noch mal gemessen und kann in der Tat auch einen Spannungsabfall von 1 bis 1,3 Volt messen. Aber nur wenn eine Last (in meinem Fall 5 Meter LED Stripe, also ca. 1A Strom pro MOSFET) dranhängt. Bei dem IRLB8721 kann ich mir das aber noch nicht so richtig erklären, der sollte laut Datenblatt auch mit Last nur einen minimalen Spannungsabfall haben.
        Bei dem RFP70N06 könnte das schon Problematisch sein mit nur 3,3V VGS Spannung, siehe Fig. 7/8 im Datensheet.
        Ich hab mir jetzt noch mal andere MOSFETS bestellt und werde berichten…

          Chris · 2. Dezember 2018 um 12:55

          Mal ein Update: Auch vom Datenblatt bessere MOSFETs (IRF 3708) schalten bei mir nur ca. 11 V durch. Ich vermute daher, dass dieser Verlust durch den LED Strip selber zustande kommt. Wir haben bei 5 Meter LED Stripe immerhin 10 Meter Leitungslänge (hin & zurück). Ich kann auf meinem LED Stripe auf 5 Metern 1,7 Ohm Leitungswiderstand messen. Bei ca. 0,5A Stromaufnahme (Labornetzteil) sind die 1-1,5V da auch theoretisch als Leitungsverlust drin. Bei 10 Metern sollte das noch blöder aussehen.
          Abhilfe können da wohl mehrere Einspeisungen mit entsprechenden Leitungsquerschnitten und geringerem Verlust machen. Oder zumindest die Einspeichung an der Mitte des LED Stripe statt am Ende. Ob die +1V am Ende dann aber den Aufwand wert sind muss jeder selber entscheiden.

Markus · 18. September 2018 um 09:24

Hallo Chris,

sehr gute Anleitung! Ich bin dabei deine RGB Steuerung nachzubauen. Kannst du mir verraten was du für ein Gehäuse für deine Platine verwendet hast?

Gruß
Markus

majuss · 7. Oktober 2018 um 15:03

Dein Guide ist wirklich fantastisch! Aber wie auch Tobias ganz oben habe ich noch nie PCBs bestellt, könntest du bitte ein Screenshot hochladen, was genau eingestellt werden muss (Dimension, Layer, Dicke etc.). Ich bin da ziemlich verloren bei den ganzen Parametern 😀

    Chris · 10. Oktober 2018 um 19:37

    Vielen Dank. Ich hoffe das hilft dir weiter:

      majuss · 21. Oktober 2018 um 20:39

      Hi! Danke für den Screenshot 🙂 Hat mir geholfen und mittlerweile habe ich auch schon alles zusammengebastelt. Folgendes Problem: Ich flashe den Code auf den ESP, aber auf IP/UI läd es 5x und dann kackt es ab.

      Folgendes habe ich gemacht: Git clone, auf dein Repo, das .ino file geöffnet und zugestimmt das es in ein extra Ordner geschoben wird. Dann das Board hinzugefügt: NodeMCU 1.0 ESP-12E Module und ausgewählt. Dann „include library“ und dein Unterordner im Repo ausgewählt. Jetzt bei lib hinzufügen nochmal auf den selben Namen wie der Unterordner und der entsprechende Include-code wurde hinzugefügt. Dann habe ich bei den Libraries ArduinoJson 5.13.3 installiert (da es mit 6.5 beta überhaupt nicht kompiliert, siehe Github issue). Dann richtigen serial Port ausgewählt und erfolgreich geflasht. Wenn ich nur auf die IP gehe, funktioniert alles ohne Probleme, aber sobald ich auf IP/ui gehe, geht gar nichts, im serial output sieht man, dass er es dreimal versucht, aber er zeigt sofort die stacktrace an. Kannst du mir bitte helfen 🙂 ?

majuss · 23. Oktober 2018 um 10:38

Hm sieht sehr schlecht aus: https://imgur.com/a/a0kvLah

Hier noch der originale Stacktrace: https://pastebin.com/craXmVna

majuss · 23. Oktober 2018 um 18:43

Ich hab schon 2 Kommentare gepostet, aber keins ist durchgekommen. Schaltest du sie manuell frei oder werden sie weggefiltet wenn sie Links enthalten? Leider gibt es hier bei dir keine Bestätung nach dem Motto: „Kommentar erfolgreich gesendet“.

    majuss · 23. Oktober 2018 um 19:14

    Ich habe einfach mal ein github issue geöffnet, dort ist die Kommunikation doch wesentlich angenehmer 😉

    Chris · 23. Oktober 2018 um 19:34

    Ja muss ich. Das mit der Bestätigung versuch ich bei Zeiten mal einzubauen …

majuss · 24. Oktober 2018 um 21:21

Hey ich bin mal wieder 😉

Ich habe den Controller nun erfolgreich mit einem Aqua Computing RGB Strip zum laufen gebracht. Aber mit den Yeelight RGB Strips tut sich nicht sehr viel bzw. ist Rot ultra hell, Grün super schwach und Blau komplett aus. Die Pins hab ich schon vertauscht bringt alles nichts. Beschriftet ist der Strip NUR mit einem „+“ das dann den 12 V Pin abbildet, bzw. VCC auf dem Board. Die anderen 3 Pins haben eben keine Beschriftung… Die LED Chips haben ganz gewöhnliche 2x 3 Pins, also können es keine 5V digitalen sein.

    Chris · 25. Oktober 2018 um 17:06

    Ich kenne die Yeelight RGB Strips leider nicht. Grundsätzlich ist es aber so, dass bei gleicher Spannung Rot heller als Grün und Grün wieder heller als Blau ist. Das ist aufgrund der unterschiedlichen Halbleiter so und sollte sich bei jedem RGB Strip mehr oder weniger beobachten lassen.

    Bzgl. des Yeelight würde ich mal empfehlen diesen an den Orginal Controller anzuschließen und dann bei 100% Weiß, Rot, Grün und Blau die Spannungen der einzelnen Pins ggü. dem + Pin zu messen.

      majuss · 25. Oktober 2018 um 19:20

      Danke für die Hinweise! Leider besitze ich keinen originalen Controller und bin an die Strips nur durch Zufall geraten. Aber Jemand im Arduino Forum schrieb:

      „Had the same red-only problem with a light kit ordered online (sorry, not here). I also got about 50% dim green. Turns out the LED strip is rated at 24V (not 12!) but the instruction „recommended“ DC transformer supplies of 12V 6A. Poor documentation on my kit.
      Seems as though some RGB lights supply 8v potential across each color channel. If you provide less voltage, the lights are dim. That’s my working hypothesis anyways- since 12V supplied yielded only Red and half-bright Green (no blue).“

      Ich glaube ich werde also mein Glück mit einem 24 V Netzteil und diesem Schätzchen: https://www.conrad.de/de/gaptec-lme78-03-10-dcdc-wandler-print-24-vdc-33-vdc-1000-ma-33-w-anzahl-ausgaenge-1-x-1603783.html versuchen. Das sollte funktionieren, oder?
      Im schlimmsten Fall Schrotte ich eben 1 m.

        Chris · 27. Oktober 2018 um 21:41

        Ohne jetzt detailliert ins Datenblatt geschaut zu haben sind die MOSFETS ja mit bis zu 30V angegeben. Von daher ja, sollte gehen 🙂 In meinen Augen spricht auch nichts gegen den verlinkten Regler um den ESP zu versorgen.

          Wolfgang · 26. Februar 2019 um 13:45

          Ich kann bestätigen dass es mit 24V auch funktioniert – die LED-Strips von Ikea werden auch mit 24V betrieben.

          Die Spannungsversorgung muss man da allerdings wirklich mit einem DC-DC-Wandler wie majuss machen – ich denke aber, dass das je nach (Geld- und Temperatur-)Budget auch für die 12V-Variante sinnvoll sein könnte.

majuss · 10. November 2018 um 17:40

Ich habs hinbekommen! Mit dem von mir verlinkten Regler und entsprechenden Voltage stepper funzen meine 24 V Strips jetzt 100% korrekt! Was cool wäre, wenn du nen Gerber Board für den 24 V Regler hochlädst, denn die Pins von dem Teil sind komplett anders und somit musste ich jetzt Kabel nehmen um ihn anzubringen. 24 V Strips lassen sich dann auch auf über 10 M verlängern 🙂

majuss · 27. November 2018 um 18:45

Hallo Chris,

ich bin auf etwas sehr interessantes gestoßen: https://github.com/xoseperez/espurna.
Mit Hilfe dieser Lib lässt sich der 8266 auch sofort in Home-Assistant etc. integrieren. Auch Alexa und Google-Assistant sind dann kein Problem. Vlt. findest du ja mal Zeit damit rumzuspielen 🙂 Denn im Moment lässt sich der Controller nur schwer irgendwo einbinden.

    Chris · 2. Dezember 2018 um 12:48

    Gibt es eine konkrete Anbindung die dich interessiert? Ich hatte bisher nur auf dem Zettel noch mal das MQTT Protokoll zu integrieren.
    Die Alexa Integration mache ich aktuell über iobroker da ich bei mir so oder so mehrere Protokolle und Schnittstellen zusammenfahren muss.

majuss · 2. Dezember 2018 um 15:51

Konkret interessiert mich die Integration in Home Assistant, aber die kann auch über MQTT laufen: https://www.home-assistant.io/components/light.mqtt_json/

Elmar · 13. Dezember 2018 um 18:55

Guten Tag und cooles Projekt.
Ich habe ein ähnliches Projekt, jedoch ohne Website.
Nun habe ich mal dieses Sketch ausprobiert. Es läuft gleich super von Anfang an.
Ein Problem habe ich jedoch und vielleicht könnt ihr dieses lösen:
Und zwar habe ich eine Schaltung, wo die Mosfets positiv durchschleifen, nicht wie hier negativ.
Das Problem macht sich in sofern bemerkbar, das wenn die Helligkeit hoch gestellt ist, meine LEDs dunkle sind und umgekehrt. Kann man das Problem vielleicht im Hauptsketch (WiFiRGB) abändern, vielleicht am Ende bei den Formeln (switch/case)?

Über eure Anregungen und Hilfen wäre ich sehr dankbar.

    Chris · 15. Dezember 2018 um 15:49

    Hi, der Sketch ist dafür nicht optimal weil es ne ganze Menge stellen gibt. Nach deiner Beschreibung müsstest du alle analogWrite mit dem Kehrwert ersetzen. Der Block ab Zeile 219 müsste also wie folgt aussehen:

    // Set Output
    analogWrite(REDPIN, (int)(1/mappedRed));
    analogWrite(GREENPIN, (int)(1/mappedGreen));
    analogWrite(BLUEPIN, (int)(1/mappedBlue));

    Gibt leider keine zentrale Stelle wo man das anpassen kann, ich nehme das mal auf die To-Do Liste auf…

Mark · 11. Februar 2019 um 15:28

Hallo Chris, super Tutorial. Ich habe mir die Teile bestellt und es wurden zuerst die NodeMCU geliefert.
Die Programmierung der Controller geht super.

Mein Projekt soll mehrere NodeMCU gleichzeitig steuern (also ein LEDStreifen auf der Schrankwand, einer hinter der Couch u.s.w.)
Wie kann ich mit einem Befehl mehrere Controller gleichzeitig ansprechen?

Meine Idee: 1 Controller ist der Master mit einem angepassten WebIf, also mit Buttons für Controller1,Controller2… und einem Button für alle zusammen.
Ich habe aber noch keine Ahnung wie ich das umsetzen soll.

Für einen kurzen Hinweis wäre ich sehr dankbar.

Vielen Dank und bitte weiter so 😉

    Chris · 11. Februar 2019 um 20:43

    Hallo Mark, die aktuelle Webinterface Implementierung mit iro.js sendet in Zeile 55 nur per Javascript den neuen Status an die REST API des lokalen Controller.
    Du könntest z.B. in das aktuelle oder ein neues Interface ein paar Checkboxen einbauen (und die dann mit CSS hübsch aussehen lassen…), den Status an der Stelle abfragen und den neuen Status auch an andere Controller REST API Endpunkte senden.

t0bybr · 13. Februar 2019 um 01:50

Hallo,

vielen Dank für den ausführlichen Artikel. Ich plane gerade etwas ähnliches und habe die Anleitung mal nachgebaut, jedoch mit einem 24V LED Streifen der zusätzlich zu den RGB LEDs auch noch warm- und kaltweiße LEDs hat. Leider habe ich auch das Problem, dass bei voller Helligkeit die LEDs sehr dunkel sind. Sind die MOSFETs für 24V ungeeignet?

    Chris · 27. Februar 2019 um 23:00

    Ich nehme an du hast dann wie weiter oben beschrieben auch 24V Input Spannung und verwendest für den ESP einen DC Wandler… eigentlich sollte das dann problemlos gehen. Was man immer mal machen kann ist einen sehr einfachen Arduino Sketch zu bauen der einen PIN einfach auf an schaltet. Dann sieht man die Helligkeit.

    Was bei mir bzgl. dimmen noch wichtig war sind Zeile 55-57 im Sketch der die PWM Range steuert. Aber wenn du da nichts geändert hast sollte das eigl. passen.

Stefan · 25. Februar 2019 um 18:29

Hallo Chris, schliesse mich an, super Tutorial. Sehe ich das richtig, dass ich in deinem WifiRGB_eagle.zip die Route von Pin 14 auf Pin 13 ändern muss und dann von ALLPCB herstellen lassen kann?

Christof · 1. März 2019 um 13:47

Hi Chris!
Ich habe heute Dein Arduino Code mal als Alternative zu meiner Tasmota Umsetzung ausprobiert.
Ich habe mit meinem Stripe leider das Problem, das ich kein Gelb erhalte. Alle anderen Farbe (insbesondere RGB) funktionieren einwandfrei. Es kommt statt Gelb immer eine Grün raus. Da ich das Problem auch mit Tasmota habe, schätze ich liegt es an dem Stripe.
Aber vielleicht hast Du ja noch einen Tipp für mich ?

Danke und Gruß,
Christof

    Chris · 31. März 2019 um 15:03

    Hallo Christof, mit welchem Parametern steuerst du den Controller für Gelb den an? Sattes Gelb solltest du mit folgendem JSON bekommen?

    {
    "state": "ON",
    "brightness": 100,
    "color": {
    "mode": "rgb",
    "r": 255,
    "g": 255,
    "b": 0
    },
    "mode": "SOLID"
    }

Marco · 26. März 2019 um 23:45

Hallo, auch von mir ein Dankeschön für diese Anleitung!
Kannst Du was zur Temperaturentwicklung am Spannungsregler sagen, der dürfte doch bei 12V ziemlich warm werden!?
Grüße

    Chris · 31. März 2019 um 15:05

    Hallo Marco, ad-hoc kann ich nur sagen dass ich im Alltag noch keine Probleme festgestellt habe. Ich habe wie auf den Bildern zu sehen aber auch einen Kühlkörper auf dem Spannungsregler.
    Wenn ich die Zeit finde kann ich bei Interesse gerne auch mal einen Testaufbau machen und die genaue Temperatur messen.

marius · 29. April 2019 um 14:58

Hey, ich meld mich mal auch wieder 🙂
Wäre es nicht am einfachsten, wenn du einfach ein Template für Tasmota bereitstellst? Dann ist MQTT etc. sofort alles dabei und sogar auto-discovery (und hunderte andere sinnvolle Tasmota features).

    Chris · 12. Mai 2019 um 14:46

    Wahrscheinlich ja, mir fehlt es aktuell leider einfach an der Zeit mich damit zu beschäftigen 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.