Nikon Camera remote and Intervalometer
- 1. Introduction
- 2. Software Design
- 2.1. Burn Bootloader on Mac OS with Arduino as programmer
- 3. Hardware Design
- 4. Final Words
This is how I made a camera remote and intervalometer (time lapse photography) for a Nikon camera. It is compatible with at least ML-L3. Thanks to http://www.bigmike.it/ircontrol/ and Lucky Larry for your effort!
The Arduino Mini (04) is used and placed in a small box (70x48x24 mm).
The Arduino Mini has a long boot time (waits for a new sketch for 10 seconds). That is not feasible if you just want to take a short photo. That's why you should reprogram it. If it sounds difficult, don't worry if you have a programmer or another Arduino since it can be done quite easy.
Burn Bootloader on Mac OS with Arduino as programmer
- Just follow the steps on ArduinoISP and how to disable autoreset.
- Hold shift key down when you press Verify in Arduino IDE (software). If there are no errors the log will at the end show where it stored the binary file, something like this on Mac: /var/folders/IJ/IJtvJffSGYC7KGb+wr7Gx++++TI/-Tmp-/build2724284308685698718.tmp/HAI_CHIIZU.cpp.hex
- Open terminal and browse into the AVRDUDE folder located inside the Arduino program folder, probably:
- Run the program:
./avrdude -C ../etc/avrdude.conf -P /dev/tty.usbserial-A800eIbT -b 19200 -c avrisp -p m168 -v -e -U flash:w:/var/folders/IJ/IJtvJffSGYC7KGb+wr7Gx++++TI/-Tmp-/build2724284308685698718.tmp/HAI_CHIIZU.cpp.hex
- Hopefully everything went well. If you get a signature error there is probably something wrong with your wiring (shorts etc).
Follow the steps below.
This was the breadboard prototype. A 9 volt battery is attached on the right side of the image. The positive wire goes via a resistor to the IR LED. The "value" of the resistor depends on how much current the LED can handle. But the more current, the longer distance you can be away from the camera. The LED is controlled by a transistor (I used BC548) from pin 2 on the Arduino Mini. On pin 13 I have attached an ordinary LED that can inform me just before the "shutter" goes off. On pins 6 to 8 there is a DIP switch (I thought 2^3=8 options were enough) so that the user (me) can choose the time between each shot if used as an intervalometer for cool time lapse photography.
I decided not to solder the Arduino Mini directly onto the board for two reasons. First, I may want to use it (temporarily) in other projects without destroying this project. Second, I am a beginner at soldering and did not want to destroy by accident. So I started by placing two rows of pins so I just have to put the Arduino there without soldering.
On the opposite side of the board I attached the pushbutton and the battery connector. It's always a good idea to make a knot on the battery wires before they are pulled through a smaller hole. This reduces the risk of the battery wires loosen from the board.
Ground from battery is connected to ground on Arduino. When the button is pressed the current will flow into the 9 volt pin of the Arduino.
On pin 13 I connected an LED. The cathode of course goes to ground.
Now it is time to see if the LED works. It should if everything is done correctly so far.
Next step is the IR LED. From 9 V I put a resistor of 33 Ω. This will give a current of about 300 mA. I am not sure if the LED I am using can handle it (but it does so far). It is a S081 from Kemo Electronics but I haven't found any specifications, only rumours that it is the same as some Siemens LED that can handle up to 1 A (for very short times!).
If you want longer distance you want more current. With 300 mA I can be about 5 meters away (I wish it was 50 meters).
The transistor is mounted. One leg goes to the LED (left in this picture), center goes to Arduino's pin 2 and right leg goes to ground.
Pin 2 is used to control the transistor. A resistor of 1 kΩ is used in-between.
Now it is second time to verify the progress. It should be able to shoot, even if the object is less interesting (like this).
In this step I solder the DIP switch so the user can choose delays between shots. It is optional. I used pull-up resistors of 10 kΩ connected to 5 V (red wire). Each resistor is then connected to one pin of the DIP switch AND a pin on Arduino (6 to 8). The other side of the DIP switch are connected to GND. Sorry for the confusing but it is difficult to explain.
I also mounted another switch that can remain on, which is good if you use it as intervalometer unless you enjoy to push the button all the time. It is simply a parallell connection to the pushbutton.
To keep the battery in place under all circumstances, I glued some sponge. This is leftovers from when I have ordered chips. Now I can shake the box! It is also recommended to drill some holes so the LEDs and buttons can be viewed and accessed!!
In hobby projects everything isn't perfect, true this time as well. The pushbutton did not reach outside so I had to complement it with something that reaches the pushbutton. Luckily I had an old and broken TV remote with nice and soft buttons that I could cut and insert.
The final product! You can see, from upper right to lower left, the pushbutton, info LED, the DIP switch, and on the edge the always-on switch.
If you only want a remote for a Nikon camera I think ML-L3 is cheaper than the Arduino Mini, but on the other hand it lacks time lapse functionality. All other components are cheap (€10?).
The Arduino Mini is a bit over qualified for this job, but it is easy to make it work. The downside can of course be endurance. I still have to do some tests to see how long it works for a standard 9 volt battery.
If you don't want to build this and have a computer at hand, why not use gphoto2 to control your camera!
Created February 2011.
My Arduino mainpage