Hardware selection for DMX based DSLR camera control?

My background is in software development and in theatrical lighting control, but I'm new to robotics and automation hardware.

I'd like to build a project that can control a DSLR camera (specifically, a Nikon Z6), using the DMX512 protocol.

The goal is to have a device that uses 7 DMX channels, each controlling a separate motor or function. The motors should be able to put the camera in a repeatable position each time, even after everything is powered off and back on, so the system would need some kind of homing built in.

The channels and their controls would be:

(1) Track position. DMX values 0-254 is 0% to 100%, left to right position of camera on a track (search for "camera slider" for more information). Probably needs a continuous rotation motor to rotate a belt/cable on a pulley system to move the carriage holding the camera.
(2) Pan; the left to right pan of the camera base that it is mounted on. 180 degrees is fine, -90 to 90.
(3) Tilt; tilts the camera up and down, 180 degrees. A DMX value of 127 is 0 degree tilt. Even -45 to 45 would probably be ok.
(4) Roll; In the event the track is angled, such that a camera movement on the track is going up/downhill, this control keeps the camera level. But, I might make this fixed and not motorized to start with. +/- 15 degrees.
(5) Zoom; A motor that rotates the lens zoom, probably using a belt.
(6) Focus; A motor that rotates the lens focus ring, probably using a belt.
(7) Shutter release; sends a signal to the camera shutter release port, used for automating time-lapses.

The goal is to be able to use a DMX lighting controller to program camera "cues" so that I can press the "go" button on the lighting board, and via DMX, the camera will, for example, move to the left along the track, tilt up, pan to the right, zoom in, and adjust focus.

So there's several things to think about here. First, is the repeatability. We need a way for the position and focus to go back exactly, especially for things like focus control. So we need either some way of homing on power up, and/or some way of tracking the motor positions. A more advanced system would even detect being bumped and re-correct position.


  1. Motor selection. Servo vs stepper. (or a mix, since the focus/zoom might be different that the ones that move the camera. And how big of a motor to rotate a focus or zoom ring? How big of a motor to pull a 15lb wheeled sled/carriage on a track? I was going to just buy an Uno, a motor control shield and a motor and start playing around, but despite trying to figure out what I need, I'm just completely lost on motors, and figured it was time to get some help from someone that know what they are doing.

  2. Board Selection. The Arduino Uno R3 is very popular. But I read that there is a hack required to use DMX input, that changes the firmware? I couldn't find much info on it, but maybe there is a better board choice if we need DMX input. Also what type of chip is required to convert a 3 pin DMX input (using an XLR cable) into something that can be programed via the Arduino?

  3. Motor Control. 6x Arduino Motor Shield R3's? Or is there a better choice? And does it depend on motor?

  4. Does anyone have experience with the shutter control port on Nikon cameras, and know what type of signal they take and how to generate one?

I think the programing is super simple on this project since it's just mapping DMX values to degree-percent motor positions. The trick I think, is getting the right motors, and ensuring that they land in the right spot every time. ie. DMX 127 is always 90 degrees, so it needs to establish and maintain a consistent zero degree reference.

And that's where I need the most help; do we need really fancy servos and controllers? Steppers with sensors? Or do you just "home" the steppers on power up, and they will always remain accurate?

i don't know what DMX is. but i understand that you need arduino to control motor for camera.

  1. for moving part that need degree accuracy, stepper would be great. stepper had 1.2 deg sensitivity, for adjusting the focus a small motor can do the task.
    2.arduino uno or mega is enough, dmx input can be replaced with ADC of resistor slider or potensiometer, Arduino ADC convert value of resistor slider up to 512 and dividing by 2 would be 256 (0-255)
  2. for motor control , using adafruit motor/stepper controller, it can handle 4 motor and 2 stepper.

for adjusting degree without sensor set the position at edge point (0) before power up like printer mechanism, additional gyro sensor for advance feature you need