Projekt/WLampe: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
{{ProjektInfoBox
{{ProjektInfoBox
|name=Projekt/WLampe
|name=WLampe
|status=stable
|status=stable
|image=Lampe.png
|image=Lampe.png
|description=Eine mit WS2812b gepimpte Ikea-Lampe.
|description=Eine mit ansteuerbaren LEDs gepimpte Ikea-Lampe.
|username=Pintman
|username=Pintman
|author=Pintman
|author=Pintman
Zeile 9: Zeile 9:
|update=2021-10-21
|update=2021-10-21
|platform=ESP8266
|platform=ESP8266
|tags=Licht & Sound, Projekt
|tags=Licht & Sound, Projekt, Fun
}}
}}


Man nehme: Eine Ikea-Lampe [https://www.ikea.com/de/de/p/vickleby-standleuchte-weiss-handarbeit-50430390/ Vickleby], einen ESP8266, einen Streifen WS2812b LEDs, etwas Kabelbinder und das Projekt [https://kno.wled.ge/ WLED] für die Ansteuerung. Fertig ist eine schicke Lampe, die sich mit einer App oder über verschiedene Protokolle (MQTT, UDP, DMX, ...) ansteuern lässt.
Man nehme: Eine Ikea-Lampe [https://www.ikea.com/de/de/p/vickleby-standleuchte-weiss-handarbeit-50430390/ Vickleby], einen ESP8266, einen Streifen WS2812b LEDs, etwas Kabelbinder und das Projekt [https://kno.wled.ge/ WLED] für die Ansteuerung. Fertig ist eine schicke Lampe, die sich mit einer App oder über verschiedene Protokolle (MQTT, UDP, DMX, ...) ansteuern lässt.


Das fertige Ergebnis kann man sich in einem Video bei [https://youtu.be/RV2hnFb_tM8 YouTube] ansehen.
== Demo ==
 
<youtube>RV2hnFb_tM8</youtube>
 
[https://tube.tchncs.de/w/iDkTK4NdmmXKMpPRDCbg8K Video bei Peertube]


== Zusammenbau ==
== Zusammenbau ==


Die LEDs wurden stümperhaft mit etwas Kabelbinder an dem mittleren Metallstab befestigt:
Die LEDs wurden stümperhaft mit etwas Kabelbinder an dem mittleren Metallstab befestigt:
<gallery>
Datei:Lampe 1183.png|LEDs an Metallstab
Datei:Lampe 1184.png|LEDs an Metallstab
</gallery>
Die Kabel der LEDs wurden über eine Lüsterklemme mit ein paar Steckbrücken verbunden, die wiederum in einem ESP8266 stecken. Zwischen Masse und 5V steckt ein kleiner Kondensator. Die LEDs können beim Einschalten recht viel Strom ziehen und geben dem ESP dann ggf. nicht die Möglichkeit, zu starten.
Die folgenden Bilder zeigen die recht simple Verdrahtung mit dem ESP8266. Wichtig ist hier nur Pin D4, der als Datenleitung die LEDs ansteuert. Eigentlich mögen die LEDs 5V und man könnte daher zusätzlich einen Level-Shifter einbauen (die Projektseite von WLED stellt unterschiedliche Bauteile vor), bei mir klappte es jedoch auch so.
Wenn der ESP über die USB-Buchse betrieben wird, liegen an Vin 5V an, die für die LEDs genutzt werden können.
<gallery>
Datei:Lampe 1186.png|thumb|Lüsterklemme
Datei:Lampe 1187.png|thumb|ESP8266
Datei:Lampe 1188.png|thumb|ESP8266 vorn
</gallery>
== Konfiguration ==
Der LED-Streifen verläuft einmal von unten nach oben und dann wieder nach unten. Um die beiden Stränge in der gleichen Richtung zu betreiben, werden sie in der Mitte geteilt und in WLED in zwei Segmente eingeteilt, wobei das zweite Segment in umgekehrter Reihenfolge konfiguriert wird.
<gallery>
Datei:Wlampe settings.png|thumb|WLED settings
</gallery>
Die Einstellungen werden in dem Preset 16 gespeichert - nur dieses Preset speichert auch die Konfiguration der Segmente ab.
== Ansteuerung ==
Die Lampe kann mit verschiedenen Protokollen angesprochen werden. Das folgende Beispiel zeigt ein Python-Programm, welches eine sehr direkte Steuerung der einzelnen LEDs über ein eigenes UDP basiertes [https://kno.wled.ge/interfaces/udp-realtime/#udp-realtime Protokoll] erlaubt.
<pre>
import socket
API_ENDPOINT = ('192.168.179.15', 21324)
NUM_LEDS = 50
# Byte 0 of the UDP packet tells the server which realtime protocol to use.
PROTO_WARLS = 1  # WARLS
PROTO_DRGB = 2  # DRGB
PROTO_DRGBW = 4  # DRGBW
PROTO_DNRGB = 3  # DNRGB
PROTO_WLED_NOTIFIER = 0
PROTO_WAIT_TIME = 50 # seconds
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
pos = 0
while True:
  data = [PROTO_WARLS, PROTO_WAIT_TIME]
  for i in range(NUM_LEDS):
      data.append(i)


[[Datei:Lampe 1183.png|thumb|LEDs an Metallstab]]
      data.append(2*i) # red
      data.append(255-2*i) # green
      data.append(255 if i==pos else 0) # blue


[[Datei:Lampe 1184.png|thumb|LEDs an Metallstab]]
  sock.sendto(bytes(data), API_ENDPOINT)
  pos = (pos  + 1) % NUM_LEDS
</pre>


== Links ==
== Links ==


* [https://blog.bakera.de/wlampe.html Blogartikel]
* [https://blog.bakera.de/wlampe.html Blogartikel]

Aktuelle Version vom 10. Januar 2022, 12:00 Uhr

       
WLampe

Release status: stable [box doku]

Lampe.png
Description Eine mit ansteuerbaren LEDs gepimpte Ikea-Lampe.
Author(s)  Pintman
Last Version  0.1
Platform  ESP8266



Man nehme: Eine Ikea-Lampe Vickleby, einen ESP8266, einen Streifen WS2812b LEDs, etwas Kabelbinder und das Projekt WLED für die Ansteuerung. Fertig ist eine schicke Lampe, die sich mit einer App oder über verschiedene Protokolle (MQTT, UDP, DMX, ...) ansteuern lässt.

Demo[Bearbeiten | Quelltext bearbeiten]

Video bei Peertube

Zusammenbau[Bearbeiten | Quelltext bearbeiten]

Die LEDs wurden stümperhaft mit etwas Kabelbinder an dem mittleren Metallstab befestigt:

Die Kabel der LEDs wurden über eine Lüsterklemme mit ein paar Steckbrücken verbunden, die wiederum in einem ESP8266 stecken. Zwischen Masse und 5V steckt ein kleiner Kondensator. Die LEDs können beim Einschalten recht viel Strom ziehen und geben dem ESP dann ggf. nicht die Möglichkeit, zu starten.

Die folgenden Bilder zeigen die recht simple Verdrahtung mit dem ESP8266. Wichtig ist hier nur Pin D4, der als Datenleitung die LEDs ansteuert. Eigentlich mögen die LEDs 5V und man könnte daher zusätzlich einen Level-Shifter einbauen (die Projektseite von WLED stellt unterschiedliche Bauteile vor), bei mir klappte es jedoch auch so.

Wenn der ESP über die USB-Buchse betrieben wird, liegen an Vin 5V an, die für die LEDs genutzt werden können.

Konfiguration[Bearbeiten | Quelltext bearbeiten]

Der LED-Streifen verläuft einmal von unten nach oben und dann wieder nach unten. Um die beiden Stränge in der gleichen Richtung zu betreiben, werden sie in der Mitte geteilt und in WLED in zwei Segmente eingeteilt, wobei das zweite Segment in umgekehrter Reihenfolge konfiguriert wird.

Die Einstellungen werden in dem Preset 16 gespeichert - nur dieses Preset speichert auch die Konfiguration der Segmente ab.

Ansteuerung[Bearbeiten | Quelltext bearbeiten]

Die Lampe kann mit verschiedenen Protokollen angesprochen werden. Das folgende Beispiel zeigt ein Python-Programm, welches eine sehr direkte Steuerung der einzelnen LEDs über ein eigenes UDP basiertes Protokoll erlaubt.

import socket

API_ENDPOINT = ('192.168.179.15', 21324)
NUM_LEDS = 50

# Byte 0 of the UDP packet tells the server which realtime protocol to use.
PROTO_WARLS = 1  # WARLS
PROTO_DRGB = 2   # DRGB
PROTO_DRGBW = 4  # DRGBW
PROTO_DNRGB = 3  # DNRGB
PROTO_WLED_NOTIFIER = 0
PROTO_WAIT_TIME = 50 # seconds

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
pos = 0

while True:
   data = [PROTO_WARLS, PROTO_WAIT_TIME]
   for i in range(NUM_LEDS):
      data.append(i)

      data.append(2*i) # red
      data.append(255-2*i) # green
      data.append(255 if i==pos else 0) # blue

   sock.sendto(bytes(data), API_ENDPOINT)
   pos = (pos  + 1) % NUM_LEDS

Links[Bearbeiten | Quelltext bearbeiten]