2008.09.24 in code and photography
So! It's been an awfully long time since I've written here; that's mostly because of school and stuff, also because I wasn't quite sure when I was going to get around to introducing my latest project, which is one of the only other things I have to write about right now!
I guess I'm finally getting around to introducing said project to everyone!
One of my "complaints" about my D80 is the lack of built in intervalometer (providing, of course, the ability to take time-lapse photographs). I won't be happy until I've duplicated every bit of functionality that my old Coolpix had, and this is really the only thing remaining... but the market for such devices leaves much to be desired. Prices are insane (as is usual in the photography world), with less justification than usual.
I've been a long time out of electronics (long long time), so I figured this would be a good project with which to get my feet wet again (in the process, I remembered how much fun it is to be able to manipulate things you build, and how awesome — if frustrating — the added puzzle of DIY hardware is)...
I started out by deciding what I wanted in my intervalometer, and ended up with the following list:
- Interval mode: straightforward, take a picture every so many seconds.
- Interval Bulb mode: take a picture every so many seconds, keeping the shutter open for a given duration
- Bulb mode: provide a way to hold the shutter open for longer than the camera's 30" limit
- Trigger mode: coupled with external trigger devices, allow the capture of photographs based off of high-speed triggers; such devices could be a laser beam-break switch, or a microphone
I bought two Arduino-derived devices: the official Diecimila, and an unofficial clone, the Stickduino. Both have FTDI chips onboard, so they can plug straight into USB and be programmed from the Arduino environment (based loosely off of the Processing UI, which luckily runs natively on OS X, which factored in to my decision a little as well).
Of course, our dorm wasn't exactly set up for electronics work, so I spent a bit more GSoC money getting all the random generic parts, breadboards, wires, tools, etc. that we would need for just about any project. I also grabbed some more project-specific parts: rotary encoders, LCDs, and various bits of silicon.
I posted some pictures of the subsequent assembly on my Flickr, though none of them are up-to-date at all (I'll post more pictures tomorrow, perhaps, depending on homeworks). In fact, I'm confident in saying that nothing that sits in the most recent pictures is still on my breadboard, and the addition of 4 external ICs (shift register, digital potentiometer, 7400, 555) for various purposes has massively complicated things. New pictures must be taken!
I'm at the point of PCB design now; I have working software, though there's still lots to grow there! I have to reconstruct my circuit from the ground up, and also test out the part of my schematic that involves driving the ATmega, since I'm not putting a whole Arduino in each intervalometer... EAGLE is a little bit complicated (much more so for PCB design than schematic work, which I'm getting quite comfortable with...), but seems to be what everyone uses!
I've posted my code and schematic here, in a git repo. Have at it! (Especially if you see any obvious reductions to be made...)
The last thing I have to figure out is what I'm going to do with the design when I'm done! I'm most certainly going to publish complete schematics, source code, ideas, pictures, parts lists, etc., but I think that it would be not-horribly-unreasonable to offer a kit, or even a constructed version for a significant bit of profit, and still be incredibly competitive (competition being ~150$ devices with no LCD and a couple of random knobs). The parts cost for my design is ~30$, not counting an enclosure and the PCB, neither of which will inflate the price much beyond ~50$... a featureful, pretty, easy-to-use, Canon-and-Nikon compatible intervalometer in the 80-90$ range would — I think — be welcomed, and provide a fair bit of profit, as well!
I am looking forward to seeing this in its finished state!