Aufbau einer Fotowand mit smarter Hintergrundbeleuchtung

14.01.2020

Mit der Familiengröße steigt das Bedürfnis an Erinnerungen und Anekdoten - insbesondere in Form von Bildern. Deshalb wurde entschieden, dass eine Bilderwand her muss am Besten über dem Sofa. Weil ich in der angemieteten Wohnung die Wand nicht mit Nägeln perforieren wollte und dennoch eine gewisse Dynamik in der Gestaltung der Bilderwand erwarte, haben wir beschlossen, die Bilder nicht direkt an die Mauer zu hängen, sondern an einer vorgebauten Holzwand. Um auch mich von dem Projekt zu überzeugen, konnten wir uns darauf einigen, das diese dann zumindest in irgendeiner Weise smart beleuchtet werden muss. Meine Internet-Recherche hat mich bald zum quelloffenen LED-Licht-Projekt McLighting geführt.

Das verwendete Material

Die Umsetzung der Montage- und Holzarbeiten.

Das Brett wurde auf der Vorderseite tapeziert und durch flache Leisten auf der Rückseite stabilisiert und dadurch auch auf Abstand zur Wand gehalten werden. Dieser Abstand ist wichtig, damit die Leuchtstreifen später besser aus dem Hintergrund heraus leuchten können.

An der Hauswand wurde zur Montage eine Aufhängeleiste befestigt, in die sich das Brett mithilfe von Metallbeschlägen leicht verschiebbar einhängt. Zur Probe wurde das Ganze schon mal an Ort und Stelle drapiert.

Der Aufbau der Beleuchtung

Das Grundprinzip der Beleuchtung basiert auf LED-Leuchtstreifen mit dem WS2812B RGB LED Chip in Verbindung mit dem Open Source Projekt McLighting. Dort ist die Funktion bis zur Inbetriebnahme und Konfiguration der Software beschrieben und deshalb wird dieser Teil hier nicht vollständig wiederholt.
Die WS2812B LEDs vereinen auf einem Chip eine RGB-LED mit hoher Leuchtkraft sowie einem Kommunikationsbaustein. Diese Chips lassen sich in nahezu beliebigen Formen anordnen.

Quelle: Amazon

Sie hängen alle parallel an einer 5 Volt Spannungsversorgung und sind mit einer Datenleitung seriell miteinander verbunden. Es entsteht eine Kette, bei der jede LED eine eigene Adresse hat und über die Datenleitung einzeln angesprochen werden kann, egal wie lang die Gesamtkette ist. In diesem Fall wurde ein LED-Streifen benutzt, bei dem die LEDs auf einem 5 Meter langen selbstklebenden Band montiert sind. Überschüssige Streifen schneidet man an der markierten Stelle einfach ab. Das Ende kann offen bleiben. An den Kupferflächen der Schnittkante lassen sich die notwendigen Anschlussleitungen oder Verlängerungen anlöten. Deshalb werden diese LEDs auch oft als Streifen verkauft - ideal für dieses Projekt. Die Lieferung erfolgt inkl. Anschlussleitungen für die Stromversorgung und die Steuerungsplatine.

Quelle: Amazon

Als Steurungsplatine benutze ich den WLAN-Chip ESP8266, der zum Arduino Mikro-Controller kompatibel ist.

Quelle: Amazon

Im folgenden Bild ist schematisch zu sehen, wie die Verkabelung vorgenommen wurde. Wichtig ist dabei zu beachten, dass die Gesamtkette 5,4 Meter lang ist. Bei der verwendeten Kette von 60 LEDs pro Meter ergeben sich 324 LEDs, die mit einer Gesamtleistung von 100 Watt leuchten können. Das sind bei 5 Volt also 20 Ampere. So hohe Ströme verursachen auf der Spannungsversorgungsleitung erhebliche Leitungsverluste, die dazu führen, dass die LEDs am Ende der Kette weniger Spannung abbekommen und sichtbar dunkler leuchten. Dieses Problem wird dadurch gelöst, dass die Spannungsversorgung als Ringleitung ausgelegt wird - also das Ende mit dem Anfang verbunden wird. Zusätzlich wurde durch eine Diagonalleitung ein weiterer Spannungsausgleich zur Mitte der Kette hergestellt. Erst damit ist sichergestellt, dass alle LEDs bei maximaler Leistung immer noch gleich hell leuchten.

Bei der Spannungsquelle ist dafür Sorge zu tragen, dass sie in der Lage ist, 5 Volt bei 20 Ampere Strom dauerhaft zu liefern. Das kann ein kleines Steckernetzteil in der Regel nicht. Deshalb wurde hier eine speziell für diesen Zweck entwickelte Schaltung benutzt siehe Stückliste oben.

Quelle: Amazon

Bevor man die Bilderwand mit den montierten LED-Stripes aufhängt, sollte man auf jeden Fall einen Testbetrieb der Beleuchtung durchführen. Dadurch sieht man sofort, ob es in der Verlötung der Einzelstreifen zu einer Kette irgendwo unerwartete Leitungsunterbrechungen gibt. Dabei kann man sich darauf verlassen, dass die LED Chips sehr robust sind. Sie widerstehen Spannungsschwankungen, Kurzschlüssen und Verpolungen in der Regel ohne Folgen.

Mit Hilfe der Software aus dem McLighting Projekt, die man auf den ESP8266 aufspielt, kann man über eine Webmaske die Einstellungen der Lampen vornehmen. Dabei kann man die Wunschfarbe direkt am Farbrad einstellen sowie aus einer Liste von 60 Szenarien ganze Programme und Choreografien abspielen lassen. Diese werden bereits mit der Installation des McLighting Projektes mitgeliefert.

In Realität sieht das dann zum Beispiel so aus, wie auf dem folgenden Bild. Als Ambientebeleuchtung ist das vermutlich etwas zu aufdringlich aber es zeigt ganz gut die Möglichkeiten.

Integration in das Smart Home

Durch den WLAN-Chip ist es möglich, die Lichter auch über eine API anzusprechen. Dazu ist in der Software des McLighting Projektes eine entsprechende REST-Schnittstelle bereitgestellt. Über ein selbst entwickeltes Software-Modul wurde dieses in den itemManager integriert, so dass die Lichter wie eine normale Farblampe über die Haus Automation gesteuert werden können.

Eine besondere Herausforderung war bei der Programmierung, dass ich die RGB-Lichter des LED-Streifens genauso steuern will, wie bisher die Philips Hue Lampen, die bereits in hundhome verbaut sind. Diese verstehen allerdings keine RGB-Farbwerte, sondern nur das von Philips eingesetzte xy/brightness-Prinzip. Ohne jetzt genau darauf einzugehen, wie sich diese Verfahren unterscheiden, zeige ich hier zumindest, wie ich die Umrechnung in LUA Code vorgenommen habe, weil diese Funktionen für den einen oder anderen nützlich sein könnten.

Zunächst die Funktion zur Wandlung von RGB nach XY:

    rgb2xy = function(r, g, b)
        --r, g, b with values 0 - 255
        local rr, gg, bb = r/255, g/255, b/255
        local x, y, z, resultx, resulty, resultbr
        --gamma correction begin
        if rr > 0.04045 then rr = math.pow((rr+0.055)/1.055, 2.4) else rr = rr/12.92 end
        if gg > 0.04045 then gg = math.pow((gg+0.055)/1.055, 2.4) else gg = gg/12.92 end
        if bb > 0.04045 then bb = math.pow((bb+0.055)/1.055, 2.4) else bb = bb/12.92 end
        --gamma correction end
        x = rr * 0.649926 + gg * 0.103455 + bb * 0.197109
        y = rr * 0.234327 + gg * 0.743075 + bb * 0.022598
        z = rr * 0.000000 + gg * 0.053077 + bb * 1.035763
        resultx = x/(x+y+z)
        resulty = y/(x+y+z)
        resultbr = math.round(y*255)
        return resultx, resulty, resultbr
    end

Die Funktion zur Umwandlung von xy nach RGB ist entsprechend:

    xy2rgb = function(x, y, br)
        --x, y with values 0 - 1
        --br with value 0 - 255
        local z = 1-x-y
        local yy = br/255
        local xx, zz = (yy/y)*x, (yy/y)*z
        local r, g, b, resultr, resultg, resultb
        r =  xx * 1.4628067 - yy * 0.1840623 - zz * 0.2743606
        g = -xx * 0.5217933 + yy * 1.4472381 + zz * 0.0677227
        b =  xx * 0.0349342 - yy * 0.0968930 + zz * 1.2884099
        --reverse gamma correction begin
        if r <= 0.0031308 then r = 12.92 * r else r = (1.055) * math.pow(r, (1.0/2.4)) - 0.055 end
        if g <= 0.0031308 then g = 12.92 * g else g = (1.055) * math.pow(g, (1.0/2.4)) - 0.055 end
        if b <= 0.0031308 then b = 12.92 * b else b = (1.055) * math.pow(b, (1.0/2.4)) - 0.055 end
        --reverse gamma correction end
        local max = math.max(r, g, b)
        r = r / max
        g = g / max
        b = b / max
        resultr, resultg, resultb = math.round(r*255), math.round(g*255), math.round(b*255)
        if resultr < 0 then resultr = 0 end
        if resultg < 0 then resultg = 0 end
        if resultb < 0 then resultb = 0 end
        return resultr, resultg, resultb
    end

Beide Funktionen beinhalten eine sogenannte Gamma-Korrektur, die die Farbwerte besser für das Menschenempfinden einander anpassen. Mit den dargestellten Werten habe ich für mein Empfinden gute Erfahrungen gemacht. Ein gleicher Farbwert mit einer Philips Hue Lampe sieht ähnlich aus wie bei dem Lichtstreifen.

Zurück