For some time now I’ve been looking for an intervalometer for my photography. I have one of sorts, the Pentax Remote Assistant program. It works, and works well, but has severe limitations for what I want to do. Specifically, it only allows you to take up to 99 pictures at a time and I needed something that would allow me to take far more than that, as in several hundred. Plus, the RA program has to run on a laptop to control the camera and I wanted something smaller, either handheld or attachable to the camera tripod. So, I went online and started looking for homebrew intervalometers.
As you can probably tell from the subject, I discovered the Arduino Uno, a microcomputer on a small PCB. They say imitation is the sincerest form of flattery…so be aware that there are fakes out there being sold as the genuine article. The real one says “Made in Italy” and is on a blue PCB.
I really like the Arduino Uno. That’s probably obvious or I wouldn’t be blogging about it. Well, either that or I really dislike it, so maybe it’s not that obvious after all. Let me say it again just to be sure you get it: I love the Arduino Uno.
It wasn’t all fun and games getting it, though.
I ordered it on the 14th August from Amazon.com and when I placed my order, they showed it as being in stock. Then they gave me a delivery date of 20 – 25 August which was fine. Then for the next 5, yes five, days, there was no activity on my account. After a couple days I went to check on the status of my order and…it hadn’t shipped yet. I started checking it just about every day after that and it constantly showed “not shipped yet.”
That was frustrating. There were 9 in stock according to the web page showing the Arduino Uno on Amazon.com. Yet, they won’t ship it? That totally sucks, man! Interestingly enough, even after I got mine it still shows 9 in stock.
Finally, around the 20th the status changed to “will ship soon”. A couple more days of that then it finally said “Your order has shipped.” About time, I thought.
Surprisingly enough, it actually arrived on the 24th.
Why they had to wait until the last possible moment to ship it I have no idea. It makes absolutely no sense to me and was both frustrating and irritating. Not customer friendly, if you ask me. You get the order, you process it, you ship it even if that means it’ll get there before the stated delivery date. Heck, you gain customers that way. Granted, it arrived on time, but still…!
Enough of that ranting, I’ve got it now and I’m one happy geek.
BTW, the only thing you get is the Arduino Uno board with the components on it. No cables, no real instructions for programming or anything. All the programming stuff is readily available online, as is a programming IDE and the instructions on what to do when you get it. If you order one, keep that in mind. I had the necessary USB cable already and that’s really the only other piece of hardware besides a computer you need to start using it.
As soon as I got home, I had it out of the box and was playing with it. I’d already downloaded the Arduino IDE for programming it, had already read the Quick Start guide and had the guide up on my computer screen. Following those directions, I plugged my USB printer cable into the Arduino then my computer and it powered up. It promptly began running the Blink program that was onboard. Success!
It’s ALIVE! *insert evil scientist laughter*
Seriously, that ran through my mind when it came on and started blinking.
Pleased as all get, I fired up the Arduino IDE, loaded the Blink program from the Examples, then followed the routine of programmers everywhere. I modified the Blink program to become my first program: HelloWorld.pde. Utilizing the onboard LED, I programmed it to indefinitely cycle through “Hi” in international Morse Code. Satisfied with my code, I tried to upload to the Arduino Uno.
Puzzled, I sat there for a minute wondering what was wrong. Suddenly I remembered what I’d read in the Quick Start. A dive into Device Manager, selecting the Arduino, and installing the Arduino Uno driver from the IDE download was all it took. The Device Manager now showed the Arduino Uno as Com 4. Switch to the IDE, select that port from the tools dropdown, hit upload, and Voila! The Arduino Uno status LEDs flickered, the programmable LED went off, then it started flashing: . . . . . . . . . . . . . . . . . . over and over.
Not satisfied with that, I next modified it for “Hello World”. Hee! Hee! I was having a blast and this Arduino Uno was so easy to work with. I was wishing I’d found this years ago.
Looking around, I found a couple LCD displays that I had and I remembered coming across some sketches (Arduino-speak for programs) for interacting with displays. Reading a few sketches and the manual for my display, it only took me 20 to 30 minutes to create a sketch that displayed “Hello World! My name is Arduino” on the LCD.
This Arduino product is super easy to program. The Arduino IDE is somewhat simplistic compared to, say, Eclipse, yet at the same time it’s actually perfect. No bells and whistles that aren’t needed: it’s lean, mean, and fast. There’s a nice program editing area, a display below for status messages, and a dropdown menu system supported by hot keys.
What’s really nice is the board has headers so that it’s easy to jumper from the Arduino to a protoboard (aka solderless breadboard) which makes it super easy to design and test the necessary external circuitry to control whatever you’re out to create. Once you have the circuits worked out, then you can simply wire it up on a perfboard with connectors and cables and plug into the Arduino Uno.
I’ve not yet looked at the intervalometer sketches in any detail, but there are several out there. I’ve absolutely no doubt that in a couple weeks I’ll have my own custom intervalometer and be taking the shots I want. Heck, I could have it running off my protoboard in less than an hour if I had all the parts here.
I could actually run this Arduino Uno as an intervalometer by this weekend with a simple mod to the Blink sketch where I explicitly state the durations for how long to hold the shutter open, how long to wait between pictures, and loop until I turn it off. Add a simple circuit consisting of an optoisolator, a digital relay or transistor, and a stereo plug for the camera. That’s how easy this system is to use and program.
There are several ideas drifting around in my head such as integrating a star/planet tracker in my version of the intervalometer so that I can use it to track, say, Orion or Saturn and get a great series of long exposure photos. I might just make it a separate unit with a dedicated head for my tripod. Maybe a mobile Morse decoder for when I’m driving just to monitor my HF mobile radio.
I think I’m going to be buying another Arduino Uno. Or two.
For those that are interested, I’ve run the Arduino IDE on Win 7 32 bit, Win 7 64 bit, and Ubuntu 10.10 (Linux). Installation and setup was equally easy on all three and the Arduino Uno was recognized on all three with no problems via USB.