Interaction Design WikiPhysical Computing

DMX Shield

In der Bühnentechnik wird schon lange auf eine eigenes Protokoll zum Kontrollieren von Lichtern und sonstigen Effektgeräte gesetzt. Dieses Protokoll nennt sich DMX (Digital Multiplex) und wird von vielen Geräten unterstützt. Das gute an DMX ist, dass über dieses Protokoll nur die Parameter übergeben werden und keine direkte Übertragung von Strom stattfindet. Weiterhin lassen sich mit nur einem Anschluss 512 Kanäle mit jeweils 8bit Auflösung (256 Werte) steuern. Diese Eigenschaften machen DMX auch für Interaction Designer sehr interessant. Wir haben ein eigenes DMX Shield, welches sich unter Verwendung der DMX Simple Library sehr gut mit dem Arduino verwenden lässt.

Auf der Hardware Seite verwendet DMX sogenannte XLR Anschlüsse, welche entweder über drei oder über fünf Pole verfügen. Die beiden sind aber untereinander kompatibel. Folgende Darstellung zeigt die Anschlüsse in einem XLR Stecker für das DMX Signal.

Das DMX Protokoll verwendet Adressen und Werte. Die Adresse kann von 0 bis 512 gehen – was bedeutet, dass theoretisch 513 Endgeräte an einen Bus angeschlossen werden können. Teilweise verwenden die Geräte aber mehrere Adressen um z.B. die Kanäle Rot, Grün und Blau einer Leuchte anzusprechen oder um mehrere Achsen eines Scanners zu bewegen usw. Die Werte, welche an die jeweilige Adresse geschickt werden können sind 8bit Werte. Das heisst es lassen sich Einstellungen mit 256 Werten übergeben, was in den meisten Fällen (z.B. RGB Licht) völlig ausreicht.

Mit dem DMX Shield und der Arduino Library können wir nun jegliche Art von DMX Endgerät ansteuern. Dazu wird das Shield auf das Arduino aufgesetzt und die Library entsprechend initialisiert. Die Funktionsweise ist im folgenden Beispiel dargestellt.

Beispiel

1x Arduino
1x DMX Shield
1x XLR Kabel
1x DMX Lichtquelle 

Beispiel DMX Expand source
#include <DmxSimple.h>
void setup() {
  DmxSimple.usePin(11);
}
void loop() {
  //The BarLight 1
  DmxSimple.write(1, 0);
  DmxSimple.write(2, 255);
  DmxSimple.write(3, 255);
  
  //The BarLight 2
  DmxSimple.write(4, 0);
  DmxSimple.write(5, 255);
  DmxSimple.write(6, 255);
  
  //The SpotLight 1
  DmxSimple.write(7, 255); //Red
  DmxSimple.write(8, 0); //Green
  DmxSimple.write(9, 0); //Blue
  DmxSimple.write(10, 0); //Intensity
  DmxSimple.write(11, 0); //Color Temperature
  DmxSimple.write(12, 0); //Strobe Frequency
  DmxSimple.write(13, 0); //Strobe Duration
  DmxSimple.write(14, 0); //Strobe Effect
  
  //The SpotLight 2
  DmxSimple.write(1, 0); //Red
  DmxSimple.write(16, 255); //Green
  DmxSimple.write(17, 255); //Blue
  DmxSimple.write(18, 0); //Intensity
  DmxSimple.write(19, 0); //Color Temperature
  DmxSimple.write(20, 0); //Strobe Frequency
  DmxSimple.write(21, 0); //Strobe Duration
  DmxSimple.write(22, 0); //Strobe Effect
  
  //...
  
  delay(10);
}

Weitere Informationen

DMX - Wikipedia 
DMXSimple - Library auf googlecode 
DMX - auf arduino.cc