Now I've got the human interface sorted, its time to sort the most important interface: The camera interface!
The interface to the Canon EOS 450D is a 2.5mm stereo jack (Slightly smaller version of a normal headphone jack). The tip of the jack provides the shoot trigger, the centre of the jack is the focus trigger and shield (bottom) of the jack is a common ground for both shoot & focus. Power is supplied by the camera itself, so all you have to do is close the connection between focus and ground to focus the camera, then shoot and ground to take the picture.
Because the camera supplies the power, we just need a pair of electronic controlled switches to perform the required focus and shoot function. The obvious solution would be to use a transistor to perform the switch function, however we don't really want to cross connect the camera to the Arduino power supplies, so we really need an isolating switch.
For this there are two choices: A relay would be the first choice, but relays are quite slow to switch, so in a project where the point is to react as quick as possible to a sound trigger, a relay would introduce too much of a delay. The alternative then is to use an opto-coupler. This is basically a LED and a photo-transistor mounted in an IC type package, thus creating an isolated switch. The device I am using is a KB827 dual opto-isolator, which gives me the two switches I require in a single 8 pin DIP package.
I also decided at add a couple of LED's to the focus and trigger outputs to give a visual indication of the camera triggering. Also, there is a 550 Ohm in series with the LED and opto-isolator to make sure we don't overdrive the Arduino pin output. During development, rather than connect to the actual camera and risk damaging it, I thought it would be a better idea to connect the photo-transistor side of the opto-isolator with another pair of LED's to give a visual indication that everything is working before connecting to the real thing!
I've also updated the software a bit to actually show the hot-keys as they are intended to be. The other thing I decided to do was to mount the display into a box becuase I the I2C daughter board on the back of the display was bending a bit and I was also getting a occasional missed characters when writing to the display. The ultra-observant will also notice that I finally added the 4.7K Ohm pull-up resistors to the I2C SDA/SCL lines.
The next updates will be mostly software to get the camera trigger control sorted. When complete, I should be able to trigger the camera with optional parameters for exposure time and also perform time-lapse functions.
....OK, so really the next step is to trigger the real camera ;-)