Sunday, December 9, 2007

RF Nikon Remote Shutter Release

Nikon digital SLR's have become very popular as of late, and deservedly so.  They are wonderful cameras.
I recently purchased a D40x which I am utterly happy with and have had great fun taking some really wonderful pictures with it so far.  The one disappointment I have had with it is the inability to trigger the shutter remotely in a simple way.  I am frequently involved in rocket testing and there is a fundamental conundrum with getting good pictures of a rocket motor firing - the camera wants to be close, but you don't!

A 250lbf. rocket firing.  You can imagine what the 14,000lbf.
one we will soon be testing looks like...

Having looked into it a bit, it seems that few of the new digital cameras are easy to trigger remotely easily.  When I say easily, I mean 

Here's the phone jack, when you complete the circuit the camera begins taking pictures.  When you break the circuit, it stops.

If it were that easy, I could just run a 2 conductor wire out to my camera with a switch on the other end.

Nikon sells their ML-L3 infrared remote trigger which, while inexpensive, requires you to be standing in front of the camera at relatively short range (<10m)>

So I set out to build something better and the first thing I found is that there are others who have had similar ideas...

Jan Wagner cast his in epoxy and referenced Big Mike's page on the protocol.  Big Mike even has AVR (my favorite) source code up.  Unfortunately I planned on using the ATTiny15 rather than the ATTiny2313 that he used and since the tiny15's internal RC oscillator runs at 1.6mhz only, I would have had to re-write a fair amount of his delay code to get it going.  Instead I decided to just re-implement the protocol from scratch, which really isn't very difficult.  My code simply repeats the IR command every 65ms or so as long as one of the input pins on the AVR is held at logic high.  It also flashes a visible LED to indicate it is transmitting.  My source code is here.

Anyway, rather than having the thing hard-wired, I wanted to make it RF trigger-able so that I don't have to worry about stringing wires around every time I want to take some pictures.  I found this very nice little module at  $19, good range, two transmitters in case I loose one and (as it turns out) very simple to hack.
The device is designed for automotive operation so the main switching
relay in it has a 12V coil.  That is all well and good except that it is kind of a pain in the butt to get 12V in a small device without some kludge like 8 AAA's, two 9V's or one of those expensive little 12V remote batteries which would probably last all of 5 minutes holding the relay open.  Luckily, when I received the device and opened the receiver up, it was beautifully simple and easy to mod:

The receiver consists of a 5V regulator, a radio module (the little board perpendicular to the main board), a decoder IC, a switching transistor and the aforementioned relay.  The radio and the decoder IC both are 5V devices so the 78L05 regulator simply takes the 12V supply and conditions it for these two components.  The switching transistor is used to power the 12V relay using the 5V logic level signal from the PT2272 decoder IC.

But I have no desire in using the relay at all and it is the only component that needs 12V so I simply desoldered it and the switching transistor leaving me a nice clean 5V logic level interface and a voltage regulator so I can use any supply I want > about 6V.

Note that the board is clearly marked where the ground wires are soldered and the connection labeled "IN" is the 12V (or now anything > 6V) supply.  My AVR IR transmitter requires a 5V supply and a 5V logic level signal to tell it when to become active.  I pulled the 5V supply off the back side of the circuit board along an easy-to-access trace associated with the 12bit coding of the PT2272:

Note the white wire soldered along the far right side of the jumpers.  This is the 5V supply rail from the 78L05.  If you are confused about which trace, follow it from the 78L05 itself.  I soldered a 9V battery connector directly to the "IN" pin and one of the "GND" pins on the board and the modifications to the receiver module were complete:

I soldered this to the AVR board, crammed it all in a RadioShack plastic project box with the LED, the IR LED, the battery connector and the blue antenna wire sticking out and it is finished.

Here is a picture I took from about 100 feet away:

I believe the range is significantly further than this as long as the antenna is well unfurled, but I haven't tested the theory.