Homebrew IR remote control for Olympus E-Series
After about one year of takink photos with my Olympus E-330 DSLR, there are a few things I would have "made better" in the firmware:
To solve these problems I searched the internet
and found an "Olypus Remote Control" which uses the infrared interface
of the E-330.
But unfortunately this remote had only one function: take a picture in "auto mode".
No series function, no bulb control.
Searching a bit more I found another remote which ould have worked quite well, but this was 99 Euro !
99 Euro for an IR remote? That's quite a lot! So I decided to give it a try and to take a microcontroller to generate the IR codes.
Step I: Getting the original IR codes and transfer protocol
For building my own remote I had to get the
IR commands and the functionality of the physical transfer layer.
Again, the internet was very great for this job: After a few hours I found a website which contained a file I could add to the remote control program supplied with my HP PDA (intended for controlling TV's, VCR's, satellite receivers, ...) I was able to release the shutter via IR!
Next step was to learn these codes into my learnable universal IR remote control (one of these cheap devices where you have to hold the original remote in front of a sensor and press the knob, so it writes the received code into its memory).
Now I had the commands in my universal remote control, but this wasn't really satisfying, because I still could only shoot a picture in AUTO mode, start and stop BULB but nothing esle.
Fortunately I have an old digital sampling oscilloscope
collecting dust on top of my cupboard, so I opened the universal rc, connected
the scope to the IR LED ans saved the signal pattern.
Some "reverse engineering" later, I had the timing sequences for the commands produced by the remote control.
THERE ARE 3 IR COMMANDS AVAILABLE:
The protocol used is the "Extended NEC Protocol" (klick for more information).
The address used by Olympus is "0011101110000110", the data commands are decimal "0", "1" and "2" (order as in table above).
Step II: Building my own remote control
Now it was no problem to implement these codes
into a microcontroller.
Due to my experiences with them, I decided to use a PIC 16F876A from Microchip.
This was the time I had to decide which features I wanted to be implemented:
For visualisation a 16 character 2-line alphanumeric
LC-Display with backlight, two knoba and a rotary encoder were attached to the
The backlight of the display is PWM dimmed and switches off when there is no user interaction for 10 seconds.
The project was written in C; the source is
available here. The source contains a pre-compiled
HEX-File which requires a 7.3728 MHz Crystal (was available in my junk box)
for IR timing generation and time counting functions (exposure and interval
The PCB was created using the freely-available CAD-tool "EAGLE". The schematic and pcb layout can be downloaded here.
The finished PCB was glued into a plastic box
with a milled hole for the LCD.
Power source is a 3.6 volts Li-Ion cell from an old notebook (nearly no self-discharge).
...and this is what it looks like:
Top Button: take picture / start bulb (depending
Second Button: Change item which should be adjusted / stop bulb (depending on menu)
Encoder-Pushbutton: Switch to next menu (see implemented features listed in table above)
Encoder-turn: Increase / decrease item
Switch on lower left: Power on / off
For greater coverage I've put an Transistor as emitter follower at the output of the PIC (where the IR-LED is installed in the schematic) to drive 6 LEDs installed around the housing.
If I find the time, I will re-write the code
,because it is a bit hard to maintain due to the loops calling each other.
There is also a bug when you use the "exposure series" feature and choose an exp. time smaller 2 seconds.
The timing (1 sec delay) is implemented by a counter increasing every call of the main loop; it would be more accurate and flexible if this counter was controlled by an interrupt which derives its clock from the crystal.
(c) Thomas Gulden, 06. 09. 2008