DMX-Board (2024)

Im Rahmen des Studienmoduls “Mikrocontroller-Anwendungen” habe ich in Zusammenarbeit mit meinem Kommilitonen Tom Wahl dieses Board und die dazugehörige Software entwickelt. Technische Grundlage ist ein ESP32-Mikrocontroller von Espressif.

Ursprüngliches Ziel im Rahmen der Prüfungsleistung war es, eine einfache Aufnahme und Wiedergabe von Lichtprogrammen, also auf dem Eingang eingehenden Daten inklusive ihres Timings zu ermöglichen.

Nach Abschluss des Moduls wurde die Hardware dann auf Anfrage des Professors noch um GPIO-Klemmen erweitert. Ziel war es, die Platine als Anschauungs- und Versuchsobjekt in Lehrveranstaltungen nutzen zu können.

Mein Fokus bei diesem Projekt lag in der Software: Die als Prüfungsleistung eingereichte Software wurde direkt auf Grundlage des ESP-IDF entwickelt, ohne Verwendung des Arduino-Frameworks. Die Ansteuerung des DMX-Busses und der Bedienelemente (OLED-Display, Encoder) erfolgen über getrennte FreeRTOS-Tasks. So kann eine Priorisierung der Bedienung des DMX-Busses sichergestellt werden.

Zusätzlich erfolgt die Ansteuerung des DMX-Busses per DMA-Controller. Dies bietet sich an, da der DMX-Bus üblicherweise von einem zentralen Knoten (dessen Rolle wir hier übernehmen), dem Controller, bespielt wird. Eine DMX-Übertragung mit Daten für alle 512 Kanäle eines DMX-Universums benötigt ca. 22 ms. Geschieht dies nun mit der üblichen Framerate von 40 FPS, stellt man fest, dass der DMX-Bus fast durchgängig mit Daten bespielt wird. Da allerdings alle Daten bereits zu Beginn der Übertragung feststehen, wäre es ineffizient, diese unter Verwendung von CPU-Zeit durchzuführen.

Unter Verwendung von DMA kann der Mikrocontroller problemlos den DMX-Bus sowie die gesamte andere vorhandene Peripherie bedienen, wie im Screenshot des Logic Analyzers zu sehen ist.

Versuchsaufbau der Schaltung auf Breadboard. Der Arduino Uno im oberen Teil diente vorübergehend als Logic Analyzer

Erste zum Test geschriebene Software zur Ansteuerung eines RGBW-Strahlers. M steht hierbei für Mode, S ist bei RGB-Ansteuerung (Mode 0) nicht relevanter Zusatzparameter.

Parallele Ansteuerung der verschiedenen Datenbusse. Oben: DMX

Schaltung als einfache CNC-gefräste Platine

Gefertigte Platinen

Board nach einem Jahr Einsatz in der Lehre an der HTWK Leipzig