A couple of years ago I built an Arduino based intervalometer for my DSLR. It triggered the Canon EOS350’s focus and shutter at pre-programmed intervals. I built it because I had seen some nice time-lapse photography and wanted to try some of my own. I took apart a cheap, knock off, Canon trigger, which I probably sourced from DealExtreme.com, where I get most of my cheap, knock off stuff. The innards of the switch revealed that it simply shorted one then the other contacts on the plug to the sleeve to first focus then trigger the shutter. Info on how that plug works can be found here.
I used an Arduino (way overkill) hooked up to two optoisolators in something like this fashion to short the contacts and found it worked perfectly. A simple script to trigger the focus and shutter did what I wanted it to do.
Examples of the test runs of that project are on YouTube here, here, and here. Not very exciting, but a triumph in actually building something useful!
Unfortunately, this unit had no input or display system and timing had to be programmed in from the source code. It worked extremely well at home, close to a computer, but was almost completely useless in the field.
With other projects on the go but going nowhere quickly, and ideas and dreams about this flying around, I thought there might be an off chance I could actually put together something functional. My ideas included the following:
- An 2×16 character LCD to display a menu and selection system to change parameters
- Rotary Encoder w/ push button for Input
- Optically isolated outputs for the Camera (Focus and Shutter) and two external flash triggers.
After a short time planning, the feature list grew considerably to include a more in-depth menu system to accommodate more crazy ideas:
- Infrared LED array (3 or 4 LEDs) to output Canon (maybe other brands as well) remote trigger codes.
- Sensor inputs to trigger the camera based on environmental events such as sound and light changes
- an EEPROM to store settings over reboots (and just to learn how to interface with an EEPROM – I2C perhaps?)
- Anything else I have room for (temperature module, light sensor?)
The plan was, and continues to be to create a highly flexible system to trigger, not only for my camera, but external flashes as well, based on multiple variables and inputs, including time for time-lapse, but also sensors such as sound, light, laser path breaks, etc.
As this project has grown and developed, I’ve learned of other similar projects. The Camera Axe caught my eye as an open-source camera trigger. It’s extremely well developed, but I’m no expert coder, and I have to admit, I have a lot to learn before I could understand what was going on there. Since most of my projects are about learning, (and it feels cheaper to buy components as I add them one by one, instead of all in one package), I decided to forge on with my design.
The hardware design was fairly straightforward, and I got something breadboarded pretty quickly. One by one the LCD and quadrature encoder code was written, the optoisolators triggered the camera and flashes properly, and the EEPROM was hooked up and tested. Like I said, I’m no expert coder, but with the help of some existing Arduino libraries and pouring through probably dozens of other people’s code for ideas, I cobbled together a fairly functional system. Unfortunately, as it grew, my poor coding was catching up to me. I was having random crashes that I’m certain were a result of ram limitations.
I’ve recently shown my results to a friend, who works programming embedded graphic processing systems, and boy did she have a lot to offer. Besides being good at everything, she is also incredibly helpful and enjoys working on this stuff. She re-wrote a good deal of my work, reorganizing the system into a “state-machine“, then taught me just what that was. Our work together is ongoing, but I should have some layout designs and code up shortly.
More to come…