I was a bit slow getting into the whole Arduino thing. I've read a lot of stuff about Arduinos over the past few months that didn't really make a whole lot of sense to me until I saw Jeremy Blum's (SciGuy14) Arduino videos on Youtube. I'd been inspired by the folks at openmoco.org to have a go at one of these at some point, but I kept putting it off purely because I most of it went way over my head (because it's nearly 20 years since I last did any kind of electronics) and I haven't had the time to look into it. But, after watching Jeremy's videos, I picked up an Uno, a new soldering iron, a bunch of components and got stuck in.
After finally getting my quick rough breadboard & bits version working the way I wanted (based off this, this and this), I figured it was time to get things a bit more polished so I can actually take it out of the house and use it over the next few weeks.
I've had a couple of people on here show interest in the project, as well as a bunch of people on Twitter and locally, so thought I'd post something up on here to point everybody to.
So, the image below is what I've been trying to put together over the last couple of weeks. Basically input is taken from the PS2 controller in order to adjust the interval between shots, and to start and stop the firing sequence. The PS2 controller might seem a little overkill, but eventually I plan to add a bunch of other software features & menus to the intervalometer itself, as well as stepper or servo motors to send it up and down a slider and operate a pan/tilt head, and I think having 14 buttons and two analogue joysticks using only 4 Arduino pins will make life much easier.
The board outputs visually to a 4x20 HD44780 LCD via a 74HC164 shift register, and it triggers the camera's shutter via a 4N25 optocoupler. The camera connects to the board by way of a cannibalised 3 pin connector from a dead RF-602 receiver. Basically I went with this option because Yongnuo (the manufacturer of the RF-602) supply a bunch of different cables to go from this 3 pin socket straight to Nikon 10-pin plugs, PC sync plugs (the main two I'll be using), as well as various other Nikon & Canon plugs for different models of camera body. So, being able to easily switch out the cable to go between cameras is a lot easier than having to desolder & resolder a new cable each time I want to use a different camera. The 3-pin to PC sync plug also lets me plug straight into an RF-602 transmitter to fire a camera sitting on a receiver up to 100 metres away (according to the docs anyway, personally I've only tested to about 50m).
This is how my mess looked this morning (forgive the crappy image, shot it on the iPhone to post on Twitter), but it works. Shutter hooked up to Pin 13 via 4N25, PS2 controller on pins 9-12, LCD on pins 14-17 (Analogue pins 0-3), along with 5v & gnd where appropriate.
I headed down to the local electronics shop earlier today and picked up a couple of boards and other bits I needed so I could start over and neaten things up a bit. Still a bit empty, and just going through it all in Photoshop to get things right in my head before I start soldering most of the stuff on. The two 16-pin connectors in the photo aren't actually soldered to the board, they're just there for illustrative purposes. The one on the left will actually be an 8-pin connector, there'll also be a 6-pin connector for the PS2 controller (there's actually 8 wires, but I'm not bothering with the rumble motors, heh), and a 2-pin connector going to the shutter connector cable, but I'm still waiting for those connectors to arrive in the mail.
I've been over the diagram a few times to make sure I've got everything pointing to the right places, and will continue to do so over the weekend (but if you spot something obvious, let me know :)). I realise I didn't put the 10K pot on there to control the contrast on the LCD, but I haven't forgotten it - it'll be in the gap at the bottom right where those blue lines currently are.
My missing components should arrive on Monday, so then I'll start get everything put together.