LED strip med ESP32

LED strip med ESP32

LED strips er det projekt der får folk til at sige “okay, det der er faktisk ret sejt”. Adresserbare LED strips kan vise enhver farve, og hver LED kan styres individuelt. Regnbueeffekter, notifications med lys, stemningsbelysning - det hele.

Jeg har LED strips under køkkenskabene, bag TV’et og langs trappen. De styres alle fra Home Assistant, og det tog en eftermiddag at sætte op.

Hvad er adresserbare LED strips?

Normale LED strips lyser alle LED’er i samme farve. Adresserbare strips har en chip ved hver LED, så du kan styre dem individuelt.

De mest populære typer:

WS2812B (NeoPixel)

  • 5V strømforsyning
  • Én data-ledning
  • Billige og nemme at få fat i
  • Min anbefaling til de fleste projekter

SK6812 (RGBW)

  • Som WS2812B men med hvid LED
  • Giver pænere hvidt lys
  • Lidt dyrere

WS2815

  • 12V strømforsyning
  • Backup data-linje
  • Bedre til lange strips

Start med WS2812B. De er billige, veldokumenterede, og ESPHome understøtter dem perfekt.

Hvad skal du bruge?

  • ESP32 board
  • WS2812B LED strip (5V, 30 eller 60 LED/meter)
  • 5V strømforsyning (dimensioneret til dit antal LED’er)
  • Jumper wires
  • Evt. 300-500 ohm modstand (beskytter første LED)
  • Evt. 1000µF kondensator (stabiliserer strøm)

Strømforbrug

Det her er vigtigt. Hver WS2812B LED bruger op til 60mA ved fuld hvid. En meter med 60 LED’er kan trække 3.6A.

Tommelfingeregel: 20mA per LED ved normal brug (ikke fuld lysstyrke). Så 60 LED = 1.2A, 300 LED = 6A.

Køb en strømforsyning der er lidt overdimensioneret. En 5V 10A PSU koster under 100 kr og kan drive flere hundrede LED’er.

Forbind LED strip

LED Strip    ESP32          Strømforsyning
---------    -----          --------------
+5V     -->  -              5V +
GND     -->  GND       -->  5V -
DIN     -->  GPIO16

Vigtigt: GND på ESP32 SKAL forbindes til GND på strømforsyningen. Ellers virker datasignalet ikke stabilt.

GPIO16 er et godt valg, men de fleste GPIO pins virker. Undgå pins der bruges til boot (0, 2, 12, 15).

Modstand og kondensator

Teknisk set er de valgfrie, men de forlænger levetiden:

  • 300-500 ohm modstand mellem GPIO og DIN - beskytter mod spændingsspidser
  • 1000µF kondensator over + og - på strømforsyningen - udjævner strømmen ved tænd/sluk

Jeg har kørt uden begge dele i årevis uden problemer. Men til permanente installationer er det god praksis.

ESPHome konfiguration

Her er en grundlæggende opsætning:

light:
  - platform: neopixelbus
    type: GRB
    variant: WS2812
    pin: GPIO16
    num_leds: 60
    name: "Køkken LED Strip"
    effects:
      - addressable_rainbow:
      - addressable_color_wipe:
      - addressable_scan:
      - addressable_twinkle:
      - addressable_fireworks:

Farverækkefølge

type: GRB er standard for WS2812B. Men nogle strips bruger RGB eller andre rækkefølger. Hvis farverne er forkerte (du vælger rød men får grøn), så prøv:

  • GRB (mest almindelig)
  • RGB
  • BRG
  • BGR

Effekter

ESPHome har mange indbyggede effekter. Mine favoritter:

effects:
  - addressable_rainbow:
      name: "Regnbue"
      speed: 10
      width: 50
  - addressable_color_wipe:
      name: "Farve Sweep"
      colors:
        - red: 100%
          green: 0%
          blue: 0%
          num_leds: 1
        - red: 0%
          green: 0%
          blue: 0%
          num_leds: 1
      add_led_interval: 100ms
  - addressable_scan:
      name: "Scanner"
      move_interval: 50ms
      scan_width: 5

Du kan også lave dine egne med lambdas, men de indbyggede dækker det meste.

WLED alternativ

Hvis du vil have ENDNU flere effekter og en dedikeret app, kig på WLED. Det er separat firmware der kun laver LED-kontrol, men gør det sindssygt godt.

Du kan flashe WLED i stedet for ESPHome og stadig integrere med Home Assistant. Men du mister så muligheden for at have andre sensorer på samme ESP32.

Til rene LED-controllere er WLED fantastisk. Til multi-sensor enheder er ESPHome bedre.

Automationer med LED strips

LED strips i Home Assistant åbner for kreative automationer:

Notifikation ved døren

automation:
  - alias: "Døren åbnet - LED flash"
    trigger:
      - platform: state
        entity_id: binary_sensor.hoveddoer
        to: "on"
    action:
      - service: light.turn_on
        target:
          entity_id: light.entre_led
        data:
          effect: "Farve Sweep"
          rgb_color: [255, 100, 0]
      - delay:
          seconds: 5
      - service: light.turn_off
        target:
          entity_id: light.entre_led

Temperaturindikator

automation:
  - alias: "LED farve efter temperatur"
    trigger:
      - platform: state
        entity_id: sensor.stue_temperatur
    action:
      - service: light.turn_on
        target:
          entity_id: light.stue_led
        data:
          # Blå ved koldt, rød ved varmt
          rgb_color: >
            {% set temp = states('sensor.stue_temperatur') | float %}
            {% if temp < 18 %}
              [0, 0, 255]
            {% elif temp < 22 %}
              [0, 255, 0]
            {% else %}
              [255, 0, 0]
            {% endif %}

Lange strips

Ved strips over 2-3 meter skal du tænke på spændingsfald. LED’erne i enden får mindre strøm og lyser svagere eller gulligt.

Løsninger:

  • Indfør strøm i begge ender af strippen
  • Indfør strøm hver 2. meter
  • Brug tykkere kabler
  • Brug 12V strips (WS2815)

Jeg kører 5 meter WS2812B med strømindfødning i begge ender. Fungerer perfekt.

Kabinet og montering

LED strips kommer typisk med klæbebånd på bagsiden. Det holder… nogenlunde. Til permanent montering:

  • Aluprofiler giver pænere look og hjælper med varmeafledning
  • Diffuser-cover blødgør lyset
  • Kabelbakker holder ledningerne pæne
  • 3D-print hjørner og konnektorer

IKEA sælger også billige LED-profiler der passer til de fleste strips.

Næste skridt

Med LED strips kørende kan du:

LED strips er vanedannende. Snart har du dem over det hele.