Intervawhat? An intervalometer is a camera controller that signals the camera to take a picture after some set interval. This is really useful for creating time-lapse videos. For a long time, I used my TI-89 calculator to create time-lapse videos with my Canon digital Rebel XTi. It worked quite well, and the calculator in/out port just happened to be the same as the Canon remote shutter port, so there wasn’t even any hardware hacking involved. However, it was a bit buggy, as calculators are obviously not made to control cameras. There were also some limitations to using the calculator. For example, I wasn’t able to easily to high dynamic range time-lapses with the calculator. I also just needed a project to work on, so I started this Arduino-based camera controller.
I made a prototype using an Arduino Duemilanove (with an Atmega328 chip) and a breadboard. This was mostly to test the software, but it also helped me figure out exactly what sort of hardware interface I wanted. I settled on a 3 digit display comprised of 7-segment LED displays to show the user the number of pictures taken, the time interval between pictures, and any other information. I also set up three buttons: start/stop, increase, and decrease. The increase and decrease buttons are for setting up the time-lapse: changing the time interval and number of pictures to be taken. Finally, I decided to use two toggle switches in the interface. One is to switch between HDR mode and normal mode, while the other is to swith the interval units from seconds to minutes. This saves me from needing to press the “increase” button 600 times to get to an interval of 10 minutes (600 seconds). At first, I planned on using the Arduino board pictured in the prototype, but soon I realized that I wanted a small form-factor, so I bought an Arduino Pro Mini from Sparkfun to use in the intervalometer.
Here is the final circuit schematic for the intervalometer. If you’re interested, you can take a look at the Arduino source code.
I knew I wanted the whole thing to fit inside of a 2″ x 3″ x 1″ Radio Shack project box, so a lot of the soldering would have to be pretty tight. I started with the 3 digit display. The 7-segment LED displays are driven by three 74164 shift registers. A blog called Paul’s Electronics provided a nice primer for shift registers, 7-segment displays, and controlling them with an Arduino. Essentially, the shift register allows you to control 8-bits of data using only one microcontroller output pin. The 8 bits of data are sent in to the shift register serially (i.e. one bit at a time) and then the shift register outputs the states of each of the 8 bits in parallel (i.e. all at once). After triple-checking my pinouts and wiring, I set to work soldering the displays to the shift registers on a printed circuit board. I set up the displays at 90 degrees to the shift registers so that the registers would sit in one of the pre-made board slots in the Radio Shack project box.
When the display assembly was soldered together and working, I had to start on the user interface. The first step was to cut a hole for the display, which I managed with a Dremel tool and a small file. It actually came out really nicely, and the 3 LED digits friction fit perfectly into the rectangular hole.
For more detail: Arduino Intervalometer Camera controller