APA102 LED Stripe controlled by ESP8266 using E1.31 / SACN

30. Dezember 2017 at 16:19
Print Friendly, PDF & Email

Einzel adressierbare LED Streifen mit APA102

Bisher habe ich einfache LED Stripes verwendet bei denen immer der komplette Streifen gesteuert wird.
So ein Streifen bekommt man in einer einfachen Ausführung für 10,- EUR pro 5m aus China.

Es gibt jedoch Anwendungen, bei denen man jede LED einzeln kontrollieren möchte. Dazu braucht man letztendlich einen Controller pro LED.
Dies treibt den Preis jedoch nach oben: 1 m mit 60 LEDs/m kostet dann ca. 30,- EUR.
Diese LED Streifen braucht man z.B. für  POV (persistence of vision) displays.

Grundsätzlich gibt bei zwei Ausführungen:

  • Onewire – NeoPixel WS2801, WS2811, WS2812
  • SPI – APA102

Grundsätzlich ist das OneWire Protokoll sensibel bezüglich des Timings. Es gibt Bibliotheken für den arduino und den ESP8266, dies damit umgehen können. Letztendlich hängt es nachher von der Komplexität des gesamten Softwarepakets, ob es im konkreten Fall funktioniert. Adafruit selber rät von der Verwendung ihrer NeoPixel für POV displays ab.
SPI ist weniger kritisch und damit zuverlässiger, wenn man diese Art von LEDs für Bühnentechnik einsetzen möchte.

Grundsätzlich habe ich gute Erfahrungen mit dem E1.31 / sACN Protokoll gemacht und habe hierfür die Testprogramme wie SACNView.

Ein eindrucksvolles Beispiel habe ich bei Robert Oostenvald gefunden, welches aber auf ArtNEt aufsetzt:

http://robertoostenveld.nl/esp-8266-art-net-neopixel-module/

https://github.com/robertoostenveld/arduino/tree/master/esp8266_artnet_neopixel

Basierend auf seinem Code habe ich letztendlich nur die LED Bibliothek ausgetaucht, um die APA102 LEDs anzusprechen. Weiterhin wurde ArtNet durch E1.31 ersetzt.

Das Modul baut eine Verbindung zum WLAN auf (Credentials: password.h) und erhält über DHCP eine IP.
Danach startet man SACNView und gibt die entsprechende IP-Adresse im Feld für Unicast ein.

Für SPI braucht man hier nur MOSI und CLK. Beim NodeMCU Modul gibt es zwei hiervon. Da der Bus mit ID 0 grundsätzlich für den flash chip gebraucht wird, sollte man Bus 1 verwenden: HSCLK + HMOSI (siehe hier).

Das Programm für den ESP8266 findet man hier:
https://github.com/ThomasH-W/esp8266_e131_DotStar