DMX Dowser

As projections become more common in live entertainment, so too does the need to mask the light emitted when not in use. Projectors are getting better at reducing the amount of light emitted when they are “projecting” black, still there remains a need to mask the light that bleeds through. The solution is to use a device that moves a flag in front of the projector lens to block the unwanted light bleed. There are commercial products that do this, but they are cost prohibitive and don’t work well with larger wide-angle lenses.

Using an Arduino and a servo, I was able to create a device that is controlled via DMX and requires minimal setup (Figure 1). The unit is powered from an internal power supply so there is no need to find a place to attach an external power brick. The unit clamps directly to the projector mounting pipe using a modified lighting sidearm. To use, simply plug in an IEC cable for power and connect to your existing DMX network. The channel is set by pressing in on the knob for 5 seconds and then rotating the knob until the desired address is displayed on the LCD screen. Once the desired address is displayed, press the knob once more and the address is set. The specified address is stored in the EEPROM memory so even if powered down the address is retained. The LCD backlight only turns on when the user is changing the address to eliminate excess light. Once connected, the flag can be rotated 0-180 degrees by sending a DMX value of 0-255 or an intensity from 0%-100%.

The source code is available for download here, and the printable template can be downloaded here. I have listed the major parts and pieces required for the project (Table 1), but you will also need various fasteners and basic electrical components such as resistors and capacitors. The pseudo schematic (Figure 2) has these parts listed. Chances are, if you have used an Arduino in the past, these parts may already be in your parts bin.

After sourcing your parts, print and cut out the templates for the enclosure. Use a light coat of spray adhesive to hold them on your enclosure. Be careful not to use too much adhesive, you will have a difficult time removing the paper later. When lining up the template use the edge where the lid lifts off for reference, the top and sides have rounded corners and are difficult to align. Once the templates are in place drill out the holes. Next, move on to cutting out the openings that aren’t round. This can be done any number of ways: jeweler’s saw, jig saw, etc. I used a mill and filed the corners to get rid of the radius (Figure 3). Once all the openings are cut/drilled, mount the eye bolt for the safety cable and bolt on the side arm tee. Use a degreaser to wipe everything down, then prime and paint. Flat black is always a great choice.

Now that the enclosure is completed, it is time to start on the electronics. Download the source code from the link mentioned above. Once downloaded, you will need to open the folder and install the following libraries into the Arduino IDE: LiquidCrystal_I2C, Encoder, Conceptinetics, and ButtonV2. Once all of the libraries are installed, compile the provided Arduino code and upload to your Arduino Uno. At this point, be sure your DMX shield is not connected to your Arduino. The DMX shield uses the Tx and Rx lines of the Arduino to function and will interfere with programing. Note: I was unable to successfully run this code on a 3rd party Arduino. I tried three different off-brand Arduinos before swapping them out for the original Arduino Uno R3. This was the first time I have had an issue using a 3rd party Arduino clone.

The DMX shield you receive may or may not come with DMX connectors soldered to it. These connectors will need to be removed, if present, in order for everything to fit within the enclosure. Also, the DMX shield is set up as a master from the factory, so in order to use it we have to change some connections. On the top right of the Tinkerkit DMX shield there are some solder pads labeled “DE-EN” and “RE-EN”. You will need to de-solder the Jumper from the “DE” side and run a small jumper from the center solder pad to the “RE” side of the solder pad below (Figure 4). Next, locate the solder pads labeled “TX-SEL” and “RX-SEL”. Move these jumpers from the left set of pads to the right set of pads (Figure 4). Once these changes are made, the shield is ready to be used as a receiver.

Finally, it is time to button everything up and mount it all in the enclosure. You will need to use stand offs to mount the Arduino so that it does not short out on the metal case. I used M3-0.5 stand offs, but UNC 4-40 stand offs will work as well. Whichever you choose, do not try to drill the mounting holes out to accept a larger diameter fastener. Continue mounting the remaining hardware: LCD, rotary encoder, power supply, fan, and 5 pin DMX connectors. Refer to Figure 5 for layout and mounting orientation. Once everything is mounted in place, plug it in and test functionality. You should be able to address the unit and control the rotation of the servo from the light board.