ESP8266 DMX Modul mit Web-Server

5. März 2017 at 09:08
Print Friendly, PDF & Email

LED Lightshow basierend auf dem ESP8266

Für ein Show verwende ich ca. 15 diese Module. Jedes Modul dient dazu  einen LED-Streifen oder ein DMX-Gerät anzusteuern. Die Konfiguration erfolgt über eine Web-Oberfläche. Diese wird jedoch mit Start der DMX Übertragung abgeschaltet, da man sonst die DMX Daten nicht mehr real-time verarbeiten kann. Das Modul wartet auf udp Pakete, die per E1.31 / SACN übertragen werden. Hierin sind die DMX512 Daten für die 512 Kanäle, von denen man nur drei braucht. Welche dies sind, bestimmt die Konfiguration (s. DMX settings). Für die Übertagung von DMX Daten über ein Netzwerk gibt es noch das Art-Net Protokoll. Dies wird hier nicht verwendet und ist damit auch nicht kompatibel.

Die erste Version basierte auf einem arduino mit dem Funkmodul nrf24L01.
Vorteil ist ein geringer Stromverbrauch sowie eine properitäre Funkverbindung, die nicht so leicht geknackt werden kann. Für eine Show werden 20 Module gebraucht. Der Aufwand für die Verdrahtung für das Funkmodul war mir einfach zu hoch.

Der folgende Ansatz basiert nun auf dem ESP8266. Die Hardware ist nun wesentlich schneller aufgebaut, da ich nur noch die Treiberstufe für die LED-Stripes hinzufügen muss. Das Modul hat nun einen Web-Server und sämtliche Einstellungen können hierüber vorgenommen werden. Weiterhin lässt sich die Firmware einfach über OTA (Over The Air) aktualisieren. Weiterhin schicken die Module Nachrichten an einen Node-Server. Über diesen Server kann man sehen, ob die Module alle Daten empfangen. Für mich sehr beruhigend, da unmittelbar vor der Show eine gewisse Hektik ausbricht und man keine Zeit alle 20 Module zu prüfen.

Node Server

Für den Node Server gibt es Web-Interface, um den Status zu kontrollieren.

Software

Das Projekt ist auf github zu finden:

https://github.com/ThomasH-W/ESP8266-Artnet-Node

Web-Interface

Das Web-Interface basiert auf dieser Vorlage http://www.john-lassen.de/en/projects/esp-8266-arduino-ide-webconfig

DMX Settings

Die Module sind alle identisch aufgebaut – also keine Schalter oder DIP-Switches um eine Kodierung vorzunehmen.
Hier kann man die Rolle des Moduls bestimmen bzw. welche DMX-Kanäle verwendet werden.

Der DMX Kanal wird nicht direkt bestimmt, sondern man wählt hier z.B. den Fahrer aus.
Das Modul ermittelt dann selber den Kanal und generiert eine Namen für das Modul.
Dieser Name ist nachher auf dem node-Server und WLAN-Router sichtbar.

Gamma-Korrektur

Über die Gamma-Korrektur lässt sich die Helligkeit reduzieren.

DMX output

Das DMX-Paket wird dann über  Serial1 ausgegeben. Somit kann man beliebige Geräte mit DMX-Eingang anbinden.

LED Pin

Ich habe mit mehreren Modulen experimentiert (NodeLUA, ESP12E) und unterschiedlichen Layouts.
Hier kann man die Zuordnung der LED Treiber zum PWM Pin auswählen, so dass das Layout flexibel ist.

DMX-Sender

Backstage oder bei Proben, möchte ich in der Lage sein die Module zu testen.
Jedes Modul kann eine Testsequenz per Multicast schicken.
Somit kann ich z.B. einen Fahrer auswählen und sehen, ob dessen drei Module aktiv sind.

 

Bibliotheken

Hardware

Grundsätzlich verwende ich ein NodeLua-Modul, welches auf dem ESP12E basiert.

  • Die erste Programmierung kann über USB erfolgen
  • Ein Spannungsregler ist bereits integriert
    Achtung: es gibt Module, die für Vin nur 5V statt 12V haben

Die Treiberstufe befindet sich auf einer Platine, die auf der Unterseite verlötet wird.
Damit ist das Modul kompakt und schnell aufgebaut.

Als Treiber verwende ich den IRLR7843 mit der Bauform D-PAK. Diese SMD Bauform ist klein (aber nicht zu klein) und lässt sich gut auf eine Lochrasterplatine verlöten.
Wichtig sind der R DS (on) von 3.3m Ohm und V GS (th) von 1,5-2,3V, da der ESP mit 3,3V arbeitet.

 

 

Update Februar 2019

Für die Hardware habe ich eine Alternative bei eBay gefunden:

ARILUX AL-LC01 Mini WIFI LED Controller

Dieser basiert auf einem ESP8285. Das Modul ist wesentlich kleiner als ein NodeMCU hat aber bereits 3 MOSFETs.
Es kostet nur gut 6,- inkl. Versand aus China. Einziger Nachteil: Durch den geringen Speicher von 1MB kann die Firmware nicht mehr OTA aktualisiert werden. Da diese aber mittlerweile stabil ist, ist dies nicht relevant. Parallel hierzu betreibe ich ein solches Modul mit Tasmota, welches seit einiger Zeit ohne Ausfälle läuft.

Die Web-Seiten werden in der Funktion server_init() bekannt gegeben.
Auf der Homepage des Mdouls werden absichtlich werden nur rudimentäre Informationen angezeigt.
Ich möchte den Kids im Saal es nicht zu einfach machen, die Module zu hacken.

Anbei ein fertiges binary: DMX-Demo-default-password

 

Wenn man das Modul mit Strom versorgt, blinkt die blaue LED oben in der Ecke neben der Antenne.
So ähnlich wie beim Hochladen des binary – nur heller und schneller.
In diesem Modus versucht das Modul eine WLAN Verbindung aufzubauen.
Da dies sehr viel Strom verbraucht, legt es nach einem Scan eine Pause von 4 Sekunden ein.
Dann wird die WLAN-Einheit abgeschaltet und kann abkühlen.
Während einer Probe ist mir ein Modul abgeraucht, da es keine WLAN-Verbindung herstellen konnte.
Das Abschirmblech war dabei sehr warm – fast nicht mehr zu berühren.
Danach habe ich diese Pause eingefügt.

 

Nachdem das Module das erste Mal geflasht wurde, bleibt das Passwod im EEPROM.
D.h. man muss das EEPROM löschen, bevor man ein neues binary mit einer neuen Konfiguration haben möchte.

https://hoeser-medien.de/2017/03/flash-binary-on-esp8266-wo-idi/

Anschließend ein Reset bzw. kurz vom Strom trennen.

 

Weitere Bilder kann man in dem anderen Beitrag sehen, welcher das Gesamtprojekt beschreibt.
Unicycle LED Lightshow – ESP8266 controlled over WLAN

 

Ein Modul mit OLED ist in einem anderem Beitrag zu sehen:

ESP8266 DMX Module mit OLED

 

Ursprünglich wurde dieses Projekt unter eclipse realisiert.
Da dies nicht unter VS Code kompiliert werden konnte, gibt es jetzt eine neue Version.

https://github.com/ThomasH-W/E131-DMX-Module
Diese Firmware hat zwar keine Web-Oberfläche welche aber nur für die Konfiguration benötigt wird.
Zwei Dateien sollten angepasst werden:
e1_pawword.h -> WiFi credentials
e1_global.h -> Konfiguration des Moduls

Für die Kontrolle der einzelenen Module gibt es einen Monitor:
https://github.com/Snapstromegon/LightModules-Monitor