Arduino Lightboard
Introduction
I originally conceived of this project as a simple DMX lightboard. As an artist with an interest in small-scale performances and a lighting designer who is about to leave to relatively well funded world of college theater, I've been very interested in low-cost, versatile lighting control systems. The idea behind the
Open DMX Project and
USB to DMX devices really appeals to me, because it allows me to use a piece of hardware I already have (my laptop) to interface with virtually any standard stage lighting equipment. In combination with a sound design program like
Qlab, I could easily run lights and sound for a fairly complicated show from my laptop. An exciting possibility... Also, the having the flexibility to program cues for a show on my laptop, back them up to an external hard drive, and easily transfer them to someone else's computer just makes sense.
However, after playing with a few "virtual lightboard" type programs, I quickly discovered how frustrating it was to try to control even a relatively small number of dimmers with onscreen sliders and a laptop track-pad. Of course there are good keyboard shortcuts and other ways around this problem, but I still prefer working with real, physical sliders when I'm writing cues in a hurry or if I'm trying to smoothly adjust levels on-the-fly during a live performance. Even a few tactile sliders and buttons seemed like they'd make life a lot easier.
After a little bit more research, I found that some of the virtual lightboard programs could interface with a MIDI control surface (normally used with audio mixing software or to control samplers and synths). Cool idea, but it turns out that a MIDI control surface with any decent number of sliders costs about as much as buying a real lightboard.
And so, after some experimentation with Arduino last semester, I decided I would build my own lightboard.
Concept
The device I decided to create is really just a generic control surface, with the ability to interface with USB, DMX, and MIDI devices. The arrangement of the controls is based upon other lightboards (ETC, Strand, NSI) that I've worked with, but it seems like with the right code, it could be equally useful for audio mixing or controlling MIDI-driven mechanical devices.
There are 13 sets of controls, each with a push-button, a 60 mm slider, and an LED. The first 12 are intended as normal channel controls: the slider controls the intensity of a dimmer, the push-button "bumps" the dimmer up to 100% when it it pressed, and the LED shows the level of the dimmer. The 13th slider is intended as a grandmaster, meaning that it is capable of controlling all channels at once. The button above the grandmaster toggles the board in and out of blackout mode (all channels at 0%) and the LED blinks when the blackout mode is active.
I also included 4 push-buttons for cue playback (go, hold, back, and clear) and a 20 button keypad, which I will initially configure as a numeric keypad with the additional buttons for writing cues and adjusting channels beyond the 12 sliders. I also included a 2x16 LCD display to provide user feedback (important, because the buttons I'm using don't have that nice tactile "click" that many commercially made boards have) and to make it possible to program the board without being connected to a computer.
As a lightboard, this piece of hardware could work in two different ways:
- It is capable of outputting the information from the controls to a PC via USB or MIDI, so it could act as a control surface for almost any of the virtual lightboard software on the market. In this case, the Arduino could also pass incoming DMX data from USB to the board's DMX output, allowing it to act like an Open DMX interface as well.
- With some additional code, it could be used as a simple, stand-alone lightboard, similar to older NSI and Leprechaun boards. The Arduino could directly output values from the channel sliders to DMX or it could be programed via the built-in keypad and LCD screen and remember a small number of cues. With additional memory (or possibly an SD card slot) it could store and play back an almost unlimited number of cues.
Because the Arduino can be reprogrammed to use the MIDI and DMX in any number of ways, the board could be configured as a MIDI show control console (capable of controlling moving scenery, special effects, etc. or a MIDI control surface for a synth or sampler, etc. It can also receive MIDI, so it could be controlled by or run in sync with a program like Qlab, or another piece of MIDI hardware. In any of these modes, the board is capable of outputting DMX, so it has the potential to control all sorts of dimmers, moving lights, and special effects.
Parts
Microcontroller
DMX Interface
1x
Neutrik NC5FP-1 5-pin female XLR panel-mount jack - Standard connector for DMX
1x
Neutrik NC3FP-1 3-pin female XLR panel-mount jack - Some cheaper DMX gear uses 3-pin XLR connectors. I'll include both on my board so I don't have to fuss adapters.
1x
MAX485EPA+ Driver Chip - Industry standard, supposedly more reliable than the TI
SN75176AP chip I've used for previous DMX projects. Also almost 5x the price...
MIDI Interface
3x
Neutrik NYS325 5-pin panel-mount DIN connectors - Standard MIDI connector. One for MIDI in, one for MIDI out, and 1 for MIDI thru.
Optoisolators (Any of these should work, but different specs called for different models and they're cheap, so I figured I'd mess with a few):
Resistors:
220K
270K
NPN Transistors (Again, I only need 1 and I think either should work):
Diodes:
Controls
Connectors & Stuff
Enclosure
16 guage aluminum (18 gauge might be a little less sturdy, but it would be a lot easier to work with. A lexan panel could also work well):
194 x 485 mm - faceplate for control surface
50 x 400 mm - rear panel for mounting connectors
Hardwood panels for sides on enclosure
1/4" plywood for lid and bottom of enclosure
Draw catches for lid and hinges for bottom of box
Assorted screws, nails, and wood glue to hold everything together
Spray paint
Here are some images of the components before I started assembling them:
Assembly
For the sake of portability, everything will be built into a wooden box with a lid that clamps on to protect the control surface. The rear panel will be slightly set in to the wood, to protect the DMX and MIDI connectors.
I found the creation of the faceplate to be surprisingly time consuming. Aluminum tends to chatter more than steel when it is drilled, so a drill press with good clamps was absolutely necessary. A nibbler (available from RadioShack or other places that sell electronic tools) was indispensable for cutting out the square holes for the pushbuttons. Cutting the slots for the potentiometers was the most difficult part. After experimenting with saws, files, and a Dremel tool, I ended up using a 4 1/2" angle grinder with the thinnest abrasive cut-off wheel I could find. I ended up removing the guard from the grinder and using a piece of scrap wood clamped to the faceplate as a guide.
All of the controls, LED's, and plugs will be panel-mounted, and the Arduino and circuit boards will be mounted to the bottom of the case with 1/4" plastic standoffs.
Images of the Panel
Reflections on my work this semester
This semester, I only managed to get as far as designing the board, ordering components, and beginning to assemble the board. Each of these steps was far more involved than I had expected, but I feel like I've learned a lot and I will have a much easier time with future projects.
In the design phase, I discovered that I needed to know a lot more about MIDI and USB before I could proceed. Originally, I thought about sending MIDI data back to the computer over the USB serial line, but it turned out that would take more software hacking on the laptop that I wanted to deal with. Although it meant getting an additional piece of hardware, it turned out that a MIDI-USB cable was a simpler solution. I also looked into having the Arduino receive USB so it could use an external USB numeric keyboard. While it would have been a cheaper and more flexible solution, it would have used a lot of the Arduino's processing capability just to decode the incoming USB.
I spent a good deal of time with the book
Control Systems for Live Entertainment, which improved my understanding of DMX and MIDI and gave me a really good concept of what other, more complex show control technologies look like.
Ordering components from a huge supplier like Mouser also has its challenges. For example, if I search for a pushbutton switch, I get 18,000 results, out of which maybe half a dozen would work for my application. After tracking down and ordering components for this project, I feel like I've gotten a lot better at navigating online suppliers and product spec. sheets to find exactly the part I need.
Similarly, I was surprised by how involved a process it was to completely design a physical control surface from the ground up. Just figuring out how to arrange all of the components on a single surface took a good deal of time. Figuring out how to actually cut the panel and install the components was yet another thing.
I now have a much greater appreciation for the work that goes into electronic products like this. After several months, I expected to be finished, but I now realize that this will probably be a several year project, but a completely worthwhile one. I probably could have gotten an inexpensive DMX lightboard for the amount of money (not to mention time) I've invested in this project, but I think the skills I've learned will be used in the future, perhaps to make to make projects that are unique and not available anywhere.