ESP8266 DMX Modul mit Web-Server
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:
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
Hallo,
ich bekomme die SW nicht gebaut. Ich habe noch die fehlenden Bibliotheken ChainableLED-1.2, E131-maste und ESP-Dmx-master hinzugefügt,bekomme aber noch reichlich fehlermeldungen.
Ist für einen ersten Test evtl eine compilierte .bin zum direkten flashen verfügbar?
Hallo Volker,
Ich habe den Beitrag ergänzt und ein binary mit default password eingefügt.
Gruß,
Thomas
Hello Thomas
First of all thank you for this wonderful project
There was a scheme with the Oled screen. And a text or video about full installation.
More details about OLED here:
https://hoeser-medien.de/2018/02/esp8266-dmx-module-mit-oled/
Hallo Thomas
auch ich wollte mir das Projekt bauen aber leider hagelt es Fehlermeldungen ohne Ende. Wäre schön gewesen wenn die Libs die benötigt werden komplett aufgelistet wären……
Hallo Klaus,
Damals habe ich das mit Ecplise/Sloeber 4.1 programmiert. Mittlerweise bin ich auf VS-Code umgestiegen. Vor zwei Wochen wollte ich das Projekt unter VS-Code wieder erzeugen und habe auch eine Menge Fehlermeldungen erhalten 🙁
An dem Projekt gefallen mir zwei Sachen überhaupt nicht: Die Konfiguration über das EEPROM und die Implementierung des Web-Servers. Statt EEPROM würde ich nun ein JSON file im SPIFFS verwenden. Ebenso kann man die html Dateien im SPIFFS ablegen.
Momentan habe ich die Umstellung aus Eis gelegt, da ich openHAB mit MySensors und SONOFF ändern muss.
Die verwendeten Bibliotheken füge ich in den Beitrag ein.
Viele Grüße,
Thomas