| Print | Contact Me
Alan's Corner of the Internet

Nikon IR Remote Shutter Release


This page describes building a IR remote shuttle release for the Nikon D70s digital camera (compatible with the Nikon D70 and possibly others).  The equivalent commercial product is the Nikon ML-L3 remote control.  It can be used to trigger the shutter for self portraits as well as for long 'bulb' exposures.

My project uses a Microchip PIC 12F675 microprocessor to produce the coded infra-red(IR) signal to trigger the camera.  The only other parts required are a battery (I used a 3V coin battery), a switch, a resistor, and an IR LED.  The result is a pretty cheap project (only about $6 for the parts).

I would like to thank BigMike who published a similar project based on the AVR micro-controller and published the IR code sequence needed for the Nikon camera.  My version uses a few less parts but BigMike's final result looks a lot more professional than mine.

The following page describes the circuit and firmware for the project.

Warning: While the chances of damaging your camera with this project are slim, please be cautious.  The following project worked for me but you are responsible for your actions and I make no guarantees of success or that you won't hurt yourself or damage equipment as a result of the content of this page.

Limitations: After using this device for a while, I've discovered a couple of limitations.

  1. It only works up to about 10ft/3m - this can probably be increased by getting a more powerful battery and/or using a smaller resistor (more power to the IR LED).
  2. It also does not work reliably at less than an inch which makes it tricky to trigger shots where you (and the device) are not in the photo.  In other words, it is hard to reach over the camera and trigger the shutter if you are doing a long exposure.  I have not investigated the possible causes for this - perhaps the IR LED I'm using has a narrow beam which does not reliably point at the IR detector on the camera

Hardware - Firmware - Photos - Conclusion - Contact Info


The following diagram shows the circuit for the project.  Basically, the switch is used to apply power to the microprocessor.  An output from the microprocessor is connected to the IR LED via a current limiting resistor.  I used a 330 ohm resister but this could be changed depending on power supply and on the IR LED used.  The microprocessor can operate on any voltage between 2V and 5.5V.  As soon as the switch is closed, the microprocessor powers up and sends out the coded IR signal to the camera, before powering off.  The power up sequence is almost instantaneous and this method saves battery power over having the processor in stand-by waiting for a trigger and is simpler than having a separate on/off switch.

Circuit Diagram

I placed the electronics inside a 2xAA-battery box that I found at a local electronic surplus store.  Conveniently it came with a power switch and a little hole originally for the wires but that I used for the IR LED.

The microprocessor, the PIC 12F675  from Microchip, has only 8 pins and runs off its internal 4Mhz clock.  In this configuration, other than the power pins (anything between 2.0V and 5.5V) all the remaining 6 pins are general purpose IO pins.  Since the processor can source up to 20mA from a pin, I can power the LED directly from an output (via a current limiting resister).  This has the advantage of allowing a very low parts count.  I mounted the microprocessor in a socket so that I could easily remove the processor for re-programming if necessary.

All the components (except the battery and switch) were soldered on to a chunk of pre-drilled circuit board that I cut to fit within one of the cavities designed for the AA battery.  Since I did not have a battery holder for the coin battery I used to power the device, I just scotch taped the power leads to the surface of the battery.  The switch was remounted in its original location in the battery box.


The firmware for the microprocessor is pretty simple.  When power is applied, the processor does a few set up operations and then begins sending out the IR code to the camera.  The IR sequence was decoded by BigMike.  The IR is modulated at 40kHz and consists of the following pulses:

2250us on (40khz modulated)
27600us off (no signal)
650us on
1375us off
575us on
3350us off
650us on
-- repeated a second time after 63ms

Update: A visitor to this page has found that shortening the 650us pulses to 530us and lengthening the off pulses has improved the triggering of the camera. Thanks Nick

Update (Nov 8, 2006): Another visitor (thanks Michael) has measured the signals from the ML-L3 (Nikon's IR remote control) and come up with the following timings using a 38kHz modulation. I have not tried these timings so please let me know how they work:

2.0ms on
27.8ms off (perhaps 28.0ms)
0.5ms on
1.5ms off
0.5ms on
3.5ms off
0.5 ms on
repeated after a 63.0 ms pause

The tricky part of the program is the timing of the pulses - both the 40kHz modulation and the code pulses.  The full source code is available - it is written in C and compiles with the HI-TECH C compiler (free, integrates with Microchip's MPLAB IDE).  I would appreciate you sending me an email before using this code.

You need to use a programmer to transfer the HEX file to the microprocessor.  I use the K128 made by that I bought mine through  I highly recommend that you compile the code from the source rather than using the HEX file since it is much easier to debug - adding a red LED and some code to turn it on can be used to check that your code is running - very useful during the debugging stage.  Wiring up a breadboard with the circuit and several indicator LEDs is probably a required step before soldering everything together.


Here are some photos of the project.

Battery Box before modification
The battery box before modification
The circuitry
The circuitry: battery, the power switch and the circuit board
Circuitry packed into the box
The circuitry packed into the box
The finished box
The finished project showing the switch on top and the LED poking out the front

Photo taken using the remote
Test photo taken using the remote control


This was a nice quick project.  I have not fully tested the range of the device but it works well at 10ft from the camera.  It would also be relatively easy to modify the device as mentioned by BigMike to add long distance wires for remote trigger, or modify the code to fire the camera on a repeating basis, or cause it to be triggered from some automated source.

Also check out Magnus Stromqvist's similar project for the Olympus C-4040z digital camera. He includes a self timer and multiple photo feature.


Written: May 2, 2005
Changes: 2005/05/16 added more on programmer, a warning and limitations; 2005/06/10 - fix processor part number 12F765->12F675 (thanks Pierre); 2006/11/08 - added additional timing modulations (thanks Michael).

Main Page:
Popular Pages: