an altogether higher class of gibbonindex
Timelapse-o-Tron™ 9000, part 1
posted in Electronics by Cargo Cult on Wednesday June 13 2012
Computers are way too fancy these days, with their gigabytes of memory, gigahertz of multiple processing cores, hyper-parallel GPUs and terabytes of storage. Sometimes we nerds yearn for a simpler age, when processors were real processors and programmers were real programmers.
So last year, I got into microcontrollers, via the hipster-compliant, super-straightforward Arduino platform. 16MHz! 32KiB program memory! A whopping 2KiB of SRAM! All in a neat and tidy little circuit board with oodles of connectivity:
But what to do with such a thing? I rapidly got it to blink morse code on a tiny on-board LED upon receiving terminal data, but that seemed too simple. I needed something altogether fancier; something that tied in with my frankly excessive number of cameras; a project that absolutely nobody had ever thought of before. So, an Arduino Intervalometer was it - seemingly a nice and straightforward introduction to programming something less powerful than my first computer, back in 1988.
Some research online revealed pinouts for EOS external trigger sockets - the 'communications protocol' turning out simply to involve short-circuiting things to the camera's ground. Flashy new diagrams here for maximum information-dump-ness:
My Canon PowerShot G10 had the 2.5mm connector, the same as my converted-to-infrared EOS 350D. But the 7D? A distinctly non-standard Canon effort. How to obtain a connector without buying an expensive Canon remote trigger? Turned out to be simple - by buying a cheap trigger from Amazon. Easy! Chop cable and connector off, tease out internal wires, identify them and that's it.
I decided on using 3.5mm audio cables as extensions, using a 3.5mm-to-2.5mm adaptor for the lower-end cameras and soldering a 3.5mm headphone-style jack onto the end of the higher-end cable when it eventually arrived. A 3.5mm headphone socket would act as the connector into my circuitry.
After breadboarding-up a brainless version with a couple of microswitches, I started looking into interfacing with the Arduino. One problem being that the protocol is so utterly dumb that it ignores such niceties as 'digital levels' and 'known voltages'. I needed something to isolate the camera with its mysterious voltages and currents. Relays? Too chunky, and moving parts are noisy and prone to wear. Only one thing for it: opto-isolators.
While trying to find where to buy the blighters (Radio Shack had a fine line in antiquated relays suitable for Edison-style currents), I checked SparkFun online - where they not only had some opto-isolators perfect for interfacing with an Arduino, but someone in the comments had already used the things to control a camera.
So, let's breadboard it up:
Only one thing for it now - write a program to take photos with a camera. Simple enough: do this in setup(), with 'focus' connected to pin 6 and 'shutter' connected to pin 7:
pinMode( 6, OUTPUT ); pinMode( 7, OUTPUT );
... and this in loop():
digitalWrite( 6, HIGH ); delay( 800 ); digitalWrite( 7, HIGH ); delay( 200 ); digitalWrite( 7, LOW ); digitalWrite( 6, LOW ); delay( 9000 );
And there I had it - an intervalometer taking a photo every ten seconds. Focus 800ms, shutter 200ms, wait 9000ms.
Was that it?
Obviously not. I now had to turn it into something fancy. To be continued!
Article is now closed for commenting.