- To create an interface to control a computer and a projector with a theatre lighting board. I work in a high-school theatre that has high technical ambitions but no budget to back them up. Often, I am forced to make do with what equipment is available and with fewer people then are really needed, to the point that I am often left to do the jobs of four people: running lights, sound, video and the rigging system. I wanted to be able to combine two jobs (lights and video) by having the same control board control both the lighting and video systems. The problem is that the two systems speak wildly different languages. The lighting system speaks DMX, a serial communication protocol based on RS-485, and the video system speaks either RS-232 serial or USB serial, depending on the particular piece of equipment. Therefore, I need a translation interface to connect the two systems. (There was a commercial version of this on the market several years ago, but it has been discontinued, and isn’t compatible with some of the components in the video system.)
- To create a “mini theatre” with working lights that can be controlled with a theatre lighting board. As I work in a high school theatre, one of my duties is to provide basic instruction in the technical aspects of theatre – lights, sound, etc. The most effective way to do this is in small groups; however, because there is only one lighting system, it is difficult to do this without disrupting the rest of the class. In order to provide a realistic experience without disrupting others, I would like to build a “mini theatre” with working lights that can be controlled by a lighting board.
Components To manage the project, I divided it into several individual components that can be built and tested separately and then integrated.
- USB Serial Communication Interface This was the easiest and simplest component to build. The USB Serial Communication Interface makes the Arduino behave like a USB keyboard and can perform all functions that a “regular” USB keyboard can. This component required a USB-Breadboard cable, 3 resistors and 2 Zener diodes to regulate power voltages. The interface communicates with the Arduino on 5 pins. Three pins are for data and the remaining pins are used to power the interface and the Arduino from a USB port. This component worked successfully the first time. (The most difficult part was to track down the correct Zener diodes, as they have to be a very specific type which is not commonly available.)
- DMX Communication Interface DMX is a digital serial frame-based communication protocol based on the RS-485 standard. For each frame (communication cycle), a header (Mark after Break and a zero byte) is sent, followed by 512 data bytes (each data byte corresponds to a device that can be controlled). Once the last data byte is sent, a long “Break” is sent to end the frame. About 44 frames are sent per second, which is fast enough that even though there is not a constant control signal being sent to each device, we don’t notice. This protocol uses two wires (plus ground) to send data, a “High” line and a “Low” line. A binary 0 is represented by a high voltage (relative to ground) on the High line and low voltage on the Low line. A binary 1 is the opposite. This whole arrangement makes DMX very resistant to electrical interference; however, it also makes it difficult to deal without purpose-built components. In order to communicate with the Arduino, a separate chip, a MAX481, is required to translate the High line/Low line signals into a signal that the Arduino can read with a digital IO pin. I never actually was able to get this component to work properly; upon further research, it may have to do with an incompatibility between the MAX481 library and the RedBoard Arduino.
- RS-232 Serial Interface RS-232 is a serial protocol that was widely used back in the “good/bad old days” of personal computing for communicating with everything from printers to mice to (gasp) dial-up modems. It has largely died out in the world of home personal computing; howver, for some strange reason, it remains extremely prevalent in the world of data projector control. This protocol requires anywhere from three to nine wires, depending on exactly what is being communicated with. There is some debate on whether the Arduino can speak this protocol natively; however, the consensus seems to be that an external chip is needed especially if cable runs exceed 5 feet. Such a chip is the MAX3233, which communicates with the Arduino via two digital IO pins and which requires 4 1μF capacitors to regulate power. As with the DMX Interface, I was never actually able to get this to work, again, most likely due to an incompatibility with the RedBoard.
- LED interface The Arduino Uno comes with 6 PWM pins that can control the brightness of an LED, but because I wanted to control about 40 LEDs, I needed to find a way to significantly expand the number of PWM pins available. I found a solution from Texas Instruments that can provide over 1000 PWM pins in multiples of 16, and that only requires five pins on the Arduino to do so. With three of these chips, I was able to control 48 LEDs. This component was easy to build, however, the wiring was a bit of a pain due to the small breadboard and it took me a while to figure out the finer points of the library. But it all worked in the end.
- Mini Theatre I had a model of a theatre kicking around from a previous project. To this, I added some rails on the ceiling made out of thick copper wire, which I wired to the common cathode rail on the LED interface. Then, I constructed 20 miniature theatre lights by attaching a reflector (made out of a metal sewing thimble) to the LED and soldering a wire to the anode of the LED and an alligator clip to the cathode. To power the lights, I attached the alligator clip to the copper rail and the wire to a channel on the LED interface. All of the lights worked, though some of them had to be adjusted because the two leads of the LED shorted on the metal thimble.
Putting it all together The idea was to have two separate interfaces: one going from DMX to USB and RS-232 and one going from DMX to LEDs. For both interfaces, the DMX values would be read into an array and then actions would be carried out based on the values in the array. Going Forward Through this experience, I have gained quite a few skills related to electronics. I hope to apply them in the near future on a restoration project. One of the local high schools has a vintage 1972 Ward Leonard & Co. “Solitrol” Lighting Control system. As this school is salted for closure and demolition, at the end of next year I am hoping to remove the control system and build an interface to allow the old board to communicate with modern equipment. (The board uses a separate wire to communicate a zero-to-negative-ten volt value to each dimmer, as it predates the advent of DMX by 20 years.)