Skip to content

DIY DMX Steuerung mit ArduinoDIY DMX Controller using Arduino

Arduino, ein einfacher RS485 Treiber IC und ein Widerstand sind alles was man benötigt um einen billigen DMX Lichtkontroller zu bauen und man bekommt auch noch eine voll funktionsfähige Software gratis dazu.

Als Erstes bauen wir den DMX Kontroller, ich hab mich entschieden dafür ein Arduino ProtoShield zu verwenden. Das Design basiert auf der Arbeit von Tom Kness. Einfach nachbauen und den “Input” mit D0/RX auf dem Arduino verbinden. Ich hab mcih für einen Jumper entschieden, damit ich leicht zwischen D0 (damit wird aus dem Arduino ein OpenDMX Interface) und D3 – ist der Standardport für die DMX Simple Bibliothek – wechseln kann.

Als nächstes benötigen wir eine Lichtsteuer-Software und das bitte gratis. Q Light Commander ist gratis und Open Source und für Mac OS X / Windows und Linux verfügbar.

Das Wichtigste ist allerdings, dass vor dem Start der Software der FTDI USB Treiber (wird vom Arduino IDE mit installiert) beendet wird!

Prüfen ob der Treiber geladen ist:

$ sudo kextstat | grep FTDI

Treiber beenden:

$ sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext

Treiber wieder laden:

$ sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext

Arduino, a simple RS485 driver, one resistor is all you need to get build your own cheap DMX light controller and get a full featured controlling software for free.

First you have to build your DMX controller, i’ve chosen to build it on a ArduinoProto Shield. It’s based on the design by Tom Kness. Just connect the “input” to D0/RX on your Arduino Board. I used a jumper to switch between D0/RX (for Arduino as a OpenDMX Interface) and D3 which is the default Output for the DMX Simple library

The next thing we need is a free Software to control the lights. I use Q Light Commander which is available for Mac OS X / Linux and Windows.

The most important thing is to unload the FTDI USB drivers (which you probably use for Arduino development because they get preinstalled with the Arduino IDE)!

check if the drivers are loaded:

$ sudo kextstat | grep FTDI

unload them

$ sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext

load them again

$ sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext

14 thoughts on “DIY DMX Steuerung mit ArduinoDIY DMX Controller using Arduino

  1. Willi Bromenne

    Hallo,
    ich habe mir vor kurzem ein Arduino Uno bestellt (hoffe das kommt bald mal an ;-)) und möchte mir daraus auch ein USB-DMX Interface bauen. Nun habe ich noch ein paar fragen.
    Auf welchem Arduino-Board wurde das Inferface getestet, also läuft das auch auf dem Uno-Board, weil ich im Arduino-Playground gelesen habe das das dort vorgestellte DMX-Projekt nur auf den älteren Boards funktioniert.
    Muss ich auf das Arduino-Board noch ein Programm laden oder ist das komplett Hardware basiert?
    Letzte Frage: Wie funktioert das mit dem Treiber-Wechsel unter Windows?
    Schon mal vielen Dank
    Willi

  2. hallo willi,

    leider muss ich dich enttäuschen, das dmx interface funktioniert nur mit dem alten arduino (duemillanove), nicht mit dem Uno 🙁
    grund: dieser “hack” missbraucht das arduino board, da es die gleiche usb schnittstelle (ftdi chipset) wie das OpenDMX projekt verwendet. somit wird nur der usb teil vom arduino verwendet, nicht das arduino an sich. ist also nützlich wenn man ein arduino board rumliegen hat und mal schnell was mit dmx machen will.

    das uno board hat neue usb chips drauf, dadurch funktioniert das natürlich nicht mehr.

    ich habs mal auf windows (virtuelle maschine auf meinem mac) kurz getestet, da war kein treiberwechsel notwendig.

    ich hoffe das beantwortet deine fragen, ansonsten einfach nochmal nachfragen 😉

  3. Willi Bromenne

    Hallo,
    vielen Dank für die schnelle Anwort. Das heißt ich werde mir dann wohl irgendwo einen billiges DMX-Interface kaufen müssen -> trotzdem noch teuerer als mit Arduino und nicht so flexibel. Hab ihr auch schon das Interface von Digital Enlightment fast fertig liegen, kann das nur ohne Osszillator nicht Debugen 🙁
    Naja muss mir halt was anderes einfallen lassen….
    nochmal vielen Dank
    Willi

  4. Für das OpenDMX braucht man keinen Code, da die Lichtsteuersoftware das direkt anspricht, auf dem Arduino muss auch nichts laufen, weil der Arduino für das DMX gar nicht gebraucht wird, in Tat und Warheit wird er sogar umgangen.
    Die Sache funktioniert so: das Shield ist im Prinzip das OpenDMX Interface ohne USB Anschluss. Der Arduino 2009 hat zufällig den selben FTDI USB Chip wie das OpenDMX und der ist auch noch auf die Pins D0 und D1 direkt durchverbunden. Also Shield auf den Arduino, wird verbunden mit dem FTDI USB Chip und man hat ein vollständiges OpenDMX Interface, der Rest vom Arduino wird gar nicht gebraucht, aber wenn man eben ein Arduino 2009 rumliegen hat, kommt man so sehr schnell und billig zu einem DMX Interface 😉

  5. Hi there! I’ve done the same project and it worked! 🙂

    I have a question, do you know the software DLight? Its a software to controll the lihgts, just like Freestyler or QLight Commander. I tried the dmx shield with Freestyler and it worked out, but not with Dlight. Can you tell me why?

  6. sorry, don’t know DLight, because i use QLC+ on my Mac. I guess Dlight and Freestyler are Windows only applications, so no chance to test it.

  7. Hallo,

    Also funktionieren alle simplen Schaltungen die nur einen Widerstand und den 485 chip nutzen mit neueren Arduinos nicht mehr? Dann hätte ich mir stundenlanges testen sparen können.

    Hatte genau dieses : http://fritzing.org/projects/arduino-to-dmx-converter/ mit meinem Arduino Mega getestet. Es wird nur kein Interface erkannt.

    Wenn das am Arduino selber liegt, ist einiges klar…. 🙁

    Grüssle aus Stuttgart

  8. Hallo,

    ja da hast du leider Recht, dass es mit dem Mega nicht funktioniert. Der Trick an der ganzen Sache ist folgender: Auf dem Duemillanove Board war zwar der Arduino Chip drauf, der wurde aber gar nicht verwendet, sondern der FTDI USB Chip alleine, sprich man hat den Arduino als USB Converter missbraucht und den Mikroprozessor einfach links liegen lassen, man konnte den sogar aus dem Sockel rausnehmen.

    Das OpenDMX verwendet eben den FTDI Chip und dadurch wird das dann als OpenDMX erkannt. Drum gilt leider wenn das Board einen anderen USB Chip nimmt, dann funktioniert es NICHT.

    Ganz alte Mega’s hatten glaub ich auch den FTDI Chip drauf, aber wenn du ihn auf deinem Board nicht finden kannst, dann hast du leider keine Chance :-/

  9. Danke für die Antwort. Beim Mega R3 wirds USB im ATMega 16U2 implementert. Somit desteht also offenbar keinerlei chance.
    Nun stell ich mir jedoch die Frage ob ich mittels eines DMX-Shields das ganze dann per z.B. Freestyler ansteuern könnte.
    Ich habe da allerdings so meine Zweifel das ich den Arduino samt DMX Shield dann im Freestyler oder ähnl. eingebunden bekomme….

  10. Hallo nochmal.

    Habe nun eine andere Lösung gefunden, hänge aber dabei auch etwas. Und zwar folgendes: http://stevenbreuls.com/2013/05/diy-usb-dmx-dongle-interface-for-under-10/
    Nun war mein Problem das ich nur einen USB zu rs232 Konverter habe. Kurz überlegt und gegoogelt und fast ist eine Lösung da. Ich hänge den Max485CPA hinter die RS232.

    Jetzt kann ich meinen 4 Kanal DMX LED Flood Panel zumindest mal in Freestyler ansteuern. Dimmer geht und RGB auch. Allerdings flackert mein Licht nun massiv zw an und aus hin und her. Ich habe also kein konstantes Leuchten.
    Da Du(Sie) sich vermutlich etwas besser auskennen, frag iczh einfach mal hier nach wo mein Denkfehler liegt, oder was ich in der Schaltung vergessen haben.

    Die Schaltung findet sich hier:
    http://fritzing.org/projects/usb-to-dmx-with-usb-to-rs232

    Wie gesagt, die ansteuerung der Kanäle funktioniert einwandfrei. Nur das massive Flackern ist natürlich nicht zweckmässig.

    Grüssle
    Matze

  11. sorry, ich bin manchmal etwas langsam mit freigeben von kommentaren hier im blog 😉

    und du passt sehr gut und ich versuch auch zu helfen:

    ich vermute dass das Problem das RS232 ist, das hat ja in der Regel Hi/Lo Pegel von +/- 12 V und der MAX 485 erwartet so um die 5V / 0V, da man den ja normal aufs Arduino drauf stecken kann und das läuft ja im Normalfall mit +5V

    Was du nun brauchst ist ein RS232 auf TTL Converter: zum Beispiel den http://www.doc-diy.net/electronics/rs232plug/ (nur ganz schnell gegoogelt)
    Also du würdest dann von USB -> RS232 -> mit Max 232 von RS232 -> TTL und dann mit Max 485 von TTL -> RS485 / DMX wandeln, dann sollte das vermutlich besser funktionieren.

    Bei der hier beschriebenen Schaltung macht ja das Arduino aus USB -> TTL mit 5V und da dann der Max 485 dran. Wie gesagt, ist eine Vermutung

    Alternativ könntest du dir auch ein USB -> TTL Kabel verwenden, das hat den FTDI Chip drin und gibts wahlweise in 5V oder 3.3V, müsstest nur nochmal beim MAX 485 nachlesen ob der mit 3.3 auf läuft, sonst würd ich die 5V Variante nehmen: http://www.watterott.com/de/TTL-232R-USB-Serial-Converter

  12. Ach ja einen wichtigen Hinweis noch!

    Das DIY DMX ist sehr einfach und auch billig, allerdings solltest du nicht vergessen, dass dein DMX Universum mit deinem Computer direkt verbunden ist, UNGESICHERT! Also im schlimmsten Fall können Masseschlüsse oder Stromspitzen von den DMX Geräten direkt deinen USB am PC grillen.

    Damit man da keine Sorgen haben muss, koppeln Interfaces die etwas professioneller sind DMX seitig die Stromversorung und auch die Datenleitungen über Optokoppler galvanisch vom Computer ab. Dies ist auch nicht wirklich kompliziert, hab mal ein Layout zusammengebastelt aber noch nicht aufgebaut, könnte es dir also bei Interesse schicken, allerdings ohne Gewähr.

    Aber zum Anfangen mit DMX und etwas Basteln ists so schon mal ein guter Einstieg und wenn du das dann aber produktiv für Licht bei Konzerten oder so einsetzen willst, dann würde ich entweder ein Interface mit galvanischer Trennung kaufen (ich hab das Enttec DMX Pro) oder die Optokoppler mit einbauen. Ein neuer PC ist deutlich teurer als ein DMX Interface oder ein paar Optokoppler 😉

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.