AI-1 ("All-in-one") Remote

A Photographic Accessory That You Can Build

This page was last updated on July 2, 2008. Added Brian at Wulfden as a parts source for the Hantronix display and adapter and my Eagle library of selected components for the AI-1 project.


August, 2007  One of my other hobbies is photography, and, about a year ago, I purchased a new digicam - a Panasonic FZ30. I joined the Panasonic forum on the dpreview site. One of the posters, a programmer and electronic hobbyist, designed a nifty wireless remote using a very inexpensive RF transmitter/receiver combination that he found on eBay. After he'd perfected that, he began designing an interval timer using a Radio Shack egg timer.

At the time, I had just discovered the Picaxe 18X microcontroller. I realized that the PICAXE might make a good vehicle to power such photographic accessories, and that some sort of "do everything" remote might be a good project to learn how to use the PICAXE. Even better, the Picaxe is programmed in a very simple form of BASIC. Programs can be downloaded to the processor over a serial link from your computer -- no programmer is required. And the development system is a free download. In this case, a Picaxe is an ideal vehicle for "gizmo" design, since anyone can duplicate a project designed with one of these chips, and many can do design modifications or original designs with them.

So, with a good deal of discussion with Bryan ("linuxworks" on dpreview), I conceived the remote described herein, one combining an RF wireless remote, intervalometer, real-time clock, externally-triggered remote, wired remote, and a camera power supply.

Unfortunately, during the design phase, I received more and more suggestions for features from folks in the forum. Soon, my little Picaxe proof-of-concept project outgrew anything that could possibly be implemented on the little Picaxe.

About that time, a hard disk crash and life both got in the way, so I put the project on the back burner. There it stayed for the last year.

I decided, about a month ago, to have another try at this project. I knew that this was too much for the Picaxe 18X, but RevEd had recently introduced the Picaxe 28X1, having much more program memory than the 18X. So I gave the 28X1 a try.

Still not enough memory to support anything but a greatly reduced subset of the features that this unit now provides. So I looked around a bit more.

I finally found the right processor in the Arduino version of the ATmega168 processor. This is a 28 pin chip, with lots of I/O, and 16k of program RAM. And, like the Picaxe, the Arduino is supported by a free development system that can download a program to the processor from your PC without requiring any dedicated programming hardware. It proved to be the ideal processor for this project.

I'm finally happy to report that, three different microcontrollers later, I've finally completed the design, and it looks very good.


What the Heck Is It?

Quoting from my AI-1 User's Guide:

The All-in-one remote has been designed as a versatile, portable photographic accessory that you can tuck in your camera bag. It combines a number of useful features that you will provide capabilities that you’ll find both useful and fun during your field, home, or perhaps even studio photography.

In one box, you’ll find a wired remote, a wireless remote, a power supply for your camera, a versatile intervalometer, and an interface to devices such as pressure-sensitive pads, trip wires, etc, that can take a picture when your subject trips the trigger device.

The unit can be set for a normal exposure, bulb exposure, or programmable time exposure from 1/10 second to almost 1000 hours.

You can program the intervalometer to pause between pictures anywhere between 0 seconds and almost 1000 hours. It will stop taking pictures after the number of shots you specify so you won’t overfill your digicam’s memory card capacity.

In addition, you can configure the intervalometer to stop taking pictures after a specified run time.

You can also program the intervalometer for scheduled operation, automatically starting and stopping at specified times on specified days. Let’s say you’ve been hired to document the history and progress of a construction project. You’d like to lock a camera in place, then take a picture of the construction site every 30 minutes between 7 AM and 4:30 pm, on Mondays through Fridays. The AI-1 is just what you need for this job, or any other long-term photography task.

The remote can even function as a travel alarm clock, complete with snooze alarm.

The unit is powered by a self-contained 9 volt battery, or can be powered by an external 12 volt “wall wart” power supply or even a 12-volt sealed lead-acid battery pack.

The remote is easy to build, using inexpensive, commonly-available through-hole parts.

In effect, this is an accessory that's easy for you to build, following instructions on this page, that won't cost you a fortune, but will provide lots of features you can use to improve your photography. And it all tucks into your gadget bag.

Have I piqued your interest? If so, this might be a good time to download and peruse the User's Guide.

Although I've designed the remote for the Panasonic FZ30, this project can be adapted to almost any digital camera that can be controlled by some sort of wired remote. Instructions are provided to drive Canon prosumer dSLR's as well as the Panasonic FZ line. The design is readily adaptable to other cameras, too, by means of a "personality plug" that can easily configure the output circuit for different cameras.

Right now, I only have the wired remote details for Panasonic and Canon cameras. As I proceed, I'll try to find out how wired remotes work on other cameras, and will update the appropriate information. Any help would be greatly appreciated.


At this time, I'm only publishing a reference design for this project that you can either build yourself or use as a source of ideas for your own design.

(If you improve the design, please publish your results and let me know what you're doing. I'll be happy to link to your project page. Likewise if you just build one of these units as designed, I'll help you brag, and be happy to post a photo (or more) on this page.)

I've only constructed and tested this unit on a breadboard. I'm not certain that I'll ever build it into a box, since my style of photography doesn't really demand a unit like this. (My style of photography could, however, make good use of a computerized az-el platform, so something like that might be my next photography project...)

During a previous attempt at this project, I had a number of enquiries for circuit boards. At this time, I have no intention (and very dubious skills) of designing a circuit board. I see too many problems accommodating different parts, housings, etc. I'd have to specify a parts list very tightly in order to accommodate a single-design circuit board, then establish and maintain a supply chain. That's virtually an impossible task for an individual.

Even if I did decide to have some boards made, I'd have to invest quite a bit of money up front to obtain a supply of boards for an uncertain market. And, since I don't have access to the infrastructure to supply either parts kits or finished units, those are out of the question at this time, too.

So this is a build-it-yourself project. I've left the design loose enough to accomodate parts that you might have on hand, or be able to purchase easily, and where possible, I've allowed for reasonable parts substitution. If you're an experienced hobbyist, you should be able to successfully complete this project.

However, if any of my readers would like to have a batch of boards made for this project, or furnish kits to hobbyists, you have my blessing. (If you do a nice mechanical design and kit it well, something outside my skill set, I would be very interested in buying a kit from you.) If you want to build and market this as a commercial product, that's a no-no.

So, with all this in mind, if you think you might like to build one of these nifty accessories for your own camera, read on!


The unit is constructed from readily-available through-hole parts. Following the hardware discussion, I'll discuss parts sources and substitutions, and provide links to data sheets.

All resistors are 1/4 watt


  • C1: Tantalum, minimum 16 uF, minimum 10 WVDC rating
  • C2: Aluminum Electrolytic, 100 uF 10 WVDC minimum rating
  • C3: Tantalum, minimum 16 uF, minimum 35 WVDC rating
  • C4: Tantalum, minimum 16 uF, minimum 16 WVDC rating
  • Supercapacitor: minimum 0.022 Farad, minimum 5.5 WVDC rating

You can, generally, use any appropriate capacitors that you have on hand, as long as they meet the minimum ratings and voltages shown above.

The heart of the design is an AVR ATmega168 microcontroller, loaded with the Arduino bootloader. The processor is ideal for projects such as this. It runs at 16 MHz, provides 20 input/output lines, draws relatively little power, and is available in a through-hole (28-pin skinny dip) configuration. (This design uses every one of those 20 I/O lines, hopefully to good effect.)

The Arduino bootloader lets you program the microcontroller over a serial link from your computer, just as you can with the Picaxe. And, like the Picaxe, the development system is available as a free download. To use an Arduino, you don't have to buy any expensive equipment or software. It's ideal for a project such as this, since all you have to do to load the software is to download and install the Arduino development system, download the AI-1 software and install it in the proper directory on your computer, hook a serial port up to the remote's serial-TTL jack, and upload the software. Less than a minute later, your AI-1 should be up and running.

The processor also has a lot of memory -- 16k of program memory (14,336 bytes available), 1k of RAM, and 512 bytes of EEPROM. As microcontrollers go, this little gizmo has lots of elbow room. And I made good use of all that space. The AI-1 software, linked below, uses over 14,000 of those 14,336 bytes!

The next item of importance is a clock. This unit is all about time, so a good clock chip is important. I think the Maxim DS1302 I've chosen is excellent for our purposes.

First, it's a through-hole part, packaged as an 8-pin DIP. Second, it's readily available, and very inexpensive. It uses a 32.768 kHz watch crystal as its clock source, has a built-in trickle charger for the supercapacitor backup, and requires no other passive components, helping to keep the board real estate requirements down. (The supercap I've chosen keeps the clock running for approximately one week when the remote is powered down. If you'd like perpetual date/time backup, you can substitute a 3.6 volt coin cell for the supercap. If you do, please pay attention to the note at the top of the Preamble in the software listing for the small change you need to make to disable the trickle charger.)

The DS1302 feeds the program seconds, minutes, hours, day of the week, date, month, and year.

Next is a 16 character by 2 line ("16x2") liquid crystal display module. The AI-1 supports all LCD modules that provides an HD44780-compatible parallel interface. A LED backlight arrangement is optional and well supported. (HD44780-compatible LCD modules include just about all the inexpensive LCD modules on the market. You shouldn't have trouble finding one that fits your needs and budget.)

The processor drives the display module using a 4-bit, 6-wire interface. Ground RW, the contrast line, and the ground line, connect the module's Vdd input to +5 volts, and hook up the backlight. Although I've shown the backlight dropping resistor in series with the driver transistor, a better arrangement would have the dropping resistor in series with the backlight's +5 volt feed, with the driver transistor's collector connected directly to the backlight's cathode terminal. (If your display needs it, you might add a contrast pot, but try grounding the contrast line first. You might be able to save a component in your unit.)

If you choose a miniature display with a backlight, you can use the backlight drive circuit I've shown in the schematic. The little Hantronix display I found requires only 20 mA for its backlight, so a PN2222, 2N3904, or other general-purpose NPN transistor can be used as the driver.

July, 2008 update:   The miniature Hantronix display is now available from Brian at Wulfden, This display package also includes a very handy adapter to convert the Hantronix' fine-pitch FFC/FPC harness to standard 0.1" spacing, making the display easy to use in both the AI-I or for breadboard use. Even if you don't plan to build this project, consider purchasing a Hantronix diaplay and Brian's adapter for general-purpose use on your breadboard. Brian has made it very easy to use this very fine little display.

If you choose a larger backlighted display for your project, its backlight, most likely, requires something on the order of 120 to 150 mA. Though the software minimizes backlight power requirements, even short shots of 150 mA is a lot to ask from a 9-volt battery. However, if you go the large display route, use a TIP-41 transistor rather than the specified PN2222, and reduce the base resistor from 1000 to 330 ohms. Also, you'll need to calculate the proper backlight dropping resistor value for your display. Refer to the data sheet for your chosen LCD module.

The specified LM2931AZ-5, TO92-packaged 5 volt low dropout regulator is only good for a maximum of 100 mA so, if you choose an LCD module with a high current backlight requirement, you need to use a higher-capacity low dropout regulator. There are a myriad of them available. One that might work well, is inexpensive and stocked by Mouser electronics, is the Sharp PQ050RDA1SZH, a 5 volt, 1 amp part with a maximum input voltage of 24 volts. The regulator comes in a 4-lead TO220 package. An even better regulator I found recently is the ST Micro L4941, a pin-compatible LDO replacement for the venerable 7805 regulator.

If you have a better one available, or one that's easier to obtain, by all means, use it. Just make sure that it can handle the input voltage provided by a 12-volt wall wart power pack (often up to 15 volts or more at light loads) and provide enough output current to handle your backlight's requirement plus a suitable overhead for the rest of the circuit. One-half amp should be more than sufficient.

The display you choose will, pretty much, determine the size and form factor of your project. It might be the most important choice you'll make.

(During my previous attempt at this design, Bryan pointed me to a very inexpensive LCD assembly, consisting of a 16x2 non-backlighted LCD, four pushbuttons, and three LEDs. All for not very much money. The module is a bit large for my current conception of this project, but has many possibilities for non-portable projects. Also, as you can see below, I was able to form the pins so that I could plug it into a breadboard socket. It's a terrific assembly for breadboard work, even if I never incorporate it into a permanent project. If you're interested, these modules still appear to be available.)



The next item of interest is the transmitter/receiver set used to provide wireless remote capability. You need something that will interface to CMOS/TTL, has a receiver that's powered by 5 volts, and provides a logic high when you press the transmitter button. (Details of the set I used can be found below, in the "Parts Sources" section.)

Two Arduino output lines drive a PAA-110 dual solid-state relay module to provide isolated contact closure outputs to the focus and shoot circuits for your camera's wired remote jack.

To tailor the dry contact closures for the requirements of any given camera, I've made provisions in the design for "personality plugs," built on 14-pin DIP header plugs, that accommodate different cameras that you might own. If you plan to use this unit with both a Canon and Panasonic camera, you might construct a personality plug for each one. You'd install the appropriate personality plug when you use your AI-1 with each camera.

If you plan to use your AI-1 with only one camera, you can eliminate the personality plug and hardwire the appropriate interface circuitry between the relay IC and the Focus/Shoot jack.

The sketch, below, details personality plugs for Panasonic FZ cameras and Canon prosumer dSLRs.

If you have the wired remote interface information for cameras other than those two, please pass them along. I'll be happy to incorporate your information.

July, 2008 Update:   John Pateman informed me that the Nikon D200 camera uses the same output circuitry as the Canon, but uses a proprietary 10-pin connector. John purchased a pre-made adapter cable, then cut it in two to obtain the connector. Thanks for the info, John. --Tom

A small piezo sounder provides audio output for the alarm clock and for the error conditon warning beeps. Use the smallest, loudest one you can find. If you choose a small speaker rather than a piezo sounder, place a 10 uF electrolytic capacitor, positive to the processor's pin, in series with the speaker.

5 volt power for the system is provided by an LM2931AZ-5 low dropout regulator in a plastic TO-92 package. This regulator doesn't drop out until the battery voltage reaches 5.6 volts, providing maximum battery life. If you substitute this part, make sure you choose another 5 volt low dropout regulator, not a standard 7805 or 78L05 part. A 7805-type regulator will shorten battery life considerably.

The LM7808 regulator provides up to 1 amp of 8 volt DC power to your camera. Check your camera's external power specifications for compatibility. If your camera requires a different voltage, feel free to use another regulator chip. If your camera draws a high average current, install a good heatsink for your regulator when you build your unit.

The five pushbuttons are any normally-open momentary contact buttons you might have on hand, or that you might be able to scrounge. You'll notice that four of the pushbuttons are connected to the processor without pullup resistors. This isn't an omission; on those four pins, the processor provides internal pullup resistors.

Don't omit the rear-panel reset button. You must reset the Arduino immediately prior to uploading the software.

And speaking of uploads, another decision you'll have to make will be the location of the RS232-to-serial TTL level converter. The Arduino chip supports a serial interface, but only at positive-true TTL logic levels, not at RS232 levels. To use an RS232 interface with your Arduino chip, you need to convert RS232 levels to positive-true logic levels.

I haven't specified any level converter on the schematic for a couple of reasons. First, I didn't have any more space on the drawing. <g> Seriously, reducing the board size in order to be able to build this unit as small as possible was one of my recent design goals. And, I'm assuming -- or at least hoping -- that you won't have to program the processor very often.

For this reason, I'd omit the onboard level converter if I was going to build this unit, and jerry-rig some sort of converter for the initial program load and the few (if any) occasions when I had to reprogram the Arduino. In addition, any onboard level converter arrangement you add to the board would draw at least some power from the battery, reducing battery life for no operational or functional gain.

However, if you really want onboard level conversion, probably the best arrangement would consist of a Maxim MAX232 chip in a 16-pin DIP, five 0.1 uF capacitors, and one resistor, as I've shown in the sketch below. A MAX232 would give you a true RS232 interface at the remote's Serial jack. Although the MAX232 and its support components occupy quite a bit of board real estate, it's the solution I recommend if you want to build your level converter onboard.

There is actually a better solution than the MAX232 chip -- the Dallas DS275. This is an 8-pin DIP which requires no external passive components to convert between RS232 and logic levels. However, these parts are apparently obsolete and aren't available from the major vendors I checked. If you can find one somewhere, though, consider using it.

Another alternative, very popular in the Arduino community, is the use of an FTDI USB-to-serial-TTL cable. If you buy one of these when you purchase your Arduino chip(s), you can install a 6-pin male header connector on your circuit board in place of the Serial (TTL) jack on the rear panel. When it's time to re-program your Arduino, you would open your box, connect the USB-to-serial cable to the header connector, push the reset switch, and upload the program to the chip.

If you plan to use the FTDI cable, you can buy both the cable ($20) and the Arduino ATmega168 chip ($5) from The Modern Device Company. Shown below is a sketch showing the inclusion of the 6-pin male header on your board.

And, of course, with a suitable amount of cobbling, you can use either a MAX232 circuit or the FTDI cable as your external RS232-to-Serial TTL converter. (By the way - my own solution is a DB9 breadboard adapter that incorporates a surface-mount version of the MAX232 chip. If I build one of these units, I'll simply cobble a cable arrangement to connect the TTL side of my adapter to an appropriate 3.5 mm plug, and I'll be ready to go whenever I need to re-program the Arduino.)


Parts Sources

The passive components are readily-available from common sources. Unless mentioned below, use what you can find from stock on hand or from your regular sources. Shop around!

Prices quoted below are from the distributors' web sites, in US dollars, on August 1, 2007 and, on that date, all listed components were in stock.

  • Hantronix Miniature LCD Module
  • June, 2008 Update:

    The display is available from Brian at Wulfden for $8 + S+H. The package includes the display and a very handy adapter that convertes the display's 1 mm pitch FPC/FFC harness to standard 0.1" spacing pinouts.

    Even if you don't plan to build the AI-1, the display and adapter make a very nifty tool to have available for general-purpose breadboard use.

  • LM2931AZ-5 5 Volt, 100 mA, Low Dropout Regulator, TO-92 package
    Data Sheet

    From Mouser Electronics: various vendors, $0.60 to $0.80.

    There are a number of other 5 volt low dropout regulators available in TO-92 3-terminal packages. Anything you can find that provides a minimum of 100 mA capacity should be suitable.

    Don't substitute a standard 5 volt regulator for a low dropout regulator. The specified regulator will work down to a battery voltage of 5.6 volts. A standard regulator will "give up the ghost" at a higher voltage. If you use a standard regulator, you'll be throwing a lot of battery capacity into the trash can each time the battery gets low. Also, the unit will probably stop functioning before it ever displays the low battery icon.

  • Sharp PQ050RDA1SZH 5 volt, 1 amp low dropout regulator, TO-220 4-lead package
    This regulator replaces the LM2931AZ-5, listed above, if you use a backlight that has a large current requirement. See the discussion, above.

    This regulator will require heatsinking.

    Data Sheet

    From Mouser Electronics, $ 0.73

    Connect the On/Off pin (4) to the Input Voltage pin (1). Use the same capacitor values as specified for the LM2931AZ-5 regulator.

  • ST Micro L4941 7805-compatible 5 volt low dropout regulator
    Data Sheet

    From Mouser Electronics, $0.96

    This is a pin-compatible replacement for the venerable 7805 5 volt, 1 amp, TO-220 package regulator, except that it's a very low dropout design. Even if you don't build the AI-1, consider purchasing some of these for your junkbox to use whenver a design calls for a 7805. Your battery-powered projects will thank you.

  • LM7808 8 volt, 1 amp regulator, TO-220 package
    Data Sheet

    From Mouser Electronics, $0.55

    This is a generic part. Use what you can find locally, and, if your camera draws a high average current, provide heatsinking within your project box.

  • PAA-110 2 Form-A solid state relay, 8-pin DIP package (or International Rectifier PVT322A)
    PAA-110 Data Sheet

    From Mouser Electronics: CP Clare PAA-110, $6.59.

    PVT322A Data sheet

    From Allied Electronics: IR PVT322A, $7.61

    Pin-compatible substitutes for this part include the CP Clare LAA-110, available from DigiKey for $5.13.

    or from Newark Electronics, $3.50

    If you cannot locate a suitable dual solid-state relay chip as specified, you can substitute a pair of sensitive 5 volt reed relays, having a minimum coil resistance of 500 ohms, in parallel with a 1n914-type suppresion diode as shown in the sketch below:

    Make sure that the reed relays you choose have a high coil resistance. Double-check with your ohmmeter. If you don't, you may permanently damage your Arduino chip.

    It is also vitally important that you do not wire the diodes in backwards! Doing so will instantly kill the Arduino chip at powerup.

    An example of a sensitive reed relay is this one, available from Electronic Goldmine for $1.00 each.

  • DS1302 Real-time Clock and 32.768 kHz watch crystal
    Data Sheet

    From Allied Electronics, $4.61.

    From Newark Electronics, $3.48

    From DigiKey, $3.31.

    In addition to the DS1302 chip, you'll need a 32.768 kHz watch crystal. These are widely available. If you can find one, get a crystal designed for a 6.0 pf load capacitance for maximum accuracy. Those designed for 12.5 pf load capacitance are also suitable, but will provide lesser accuracy.

    This is a typical example of a 6 pf crystal.

    If you are going to buy your chip from Newark Electronics, they have several 12.5 pf 32.768 kHz crystals. They also carry some 6 pf ones, but they aren't available at this time in a radial lead package in quantity-1 orders. This is an example of the 12.5 pf line, at $0.32.

    Peter Anderson sells the DS1302 packaged with a suitable crystal. He's on vacation until August 20,2007, but check his site after that date for price and availability.

  • 0.022 Farad Supercapacitor
    These are widely available. Use one that's rated for at least 5.5 WVDC and with a minimum capacitance of 0.022 Farad. More capacitance will result in longer backup time, but more capacitance or higher voltage ratings will waste board space. Here is a typcal example of a suitable supercap. But check your local sources first, or add a suitable supercap to a mail order you're already placing with a vendor.

    From DigiKey, $1.85.

  • Transmitter-receiver set
    You can use any transmitter-receiver set that you have on hand, or that you can obtain, as long as the receiver is powered by 5 VDC and provides a logic-high when you press the transmitter button.

    The radio transmitter/receiver module I used came from eBay seller MadeInChina. Their store is here.

    The URL for the auction changes periodically. If you plan to use the same equipment that I used, go to MadeInChina's store and search for "4CH RF Superregeneration Receiver Module & Remote"

    The module you want looks like this:

    (On Jan 4, 2008, this was the direct link to the equipment.)

    This is a four-channel set, with only one channel used. There are three other transmitter buttons and receiver channels that you can use any way you see fit in order to add additional functions to your unit. Or you can just ignore them, as I do.

    The receiver mounts in an 8-pin female Molex socket or directry through the board using 0.100" spacing. To save vertical space, you can bend the pins 90 degrees and mount the receiver flat, just above your main circuit board.

  • Arduino chip, FTDI USB to Serial TTL cable, and crystal/resonator
    ATmega168 Data Sheet

    FTDI TTL-232R Data Sheet

    Drivers for the FTDI cable

    You can obtain the Arduino chip for $5 from The Modern Device Company. If you so desire, you can also obtain the FTDI cable from them, for $20, when you purchase your Arduino chip. Or you can obtain the cable from Mouser Electronics for the same price.

    The processor chip will need either a 16 MHz 3-terminal resonator or a 16.0 MHz crystal and 2- 22 pf disc ceramic capacitors. Resonators and crystals are widely available, but here are some typical examples:

    16.0 MHz crystal

    16.0 MHz 3-terminal ceramic resonator

    Resonator from Newark Electronics, %0.36

    Although he currently doesn't show active links to these parts, check Peter Anderson's Arduino page. He's on vacation until August 20, 2007, but has carried Arduino supplies in the past. (In fact, I bought my Arduino chips from him.) He's also a source for DS1302 clock chips.

    Brian at Wulfden is now carrying Arduino supplies, too. His "Rock Bottom Freeduino Kit" is ideal for this project.

  • Max232 RS232-to-TTL converter
    Data Sheet

    From Mouser Electronics, $1.56

    From Newark Electronics, $5.31

    From DigiKey, $5.51.

  • Piezo sounder
    When you're choosing a piezo sounder, make sure you purchase one that's a true piezo sounder, and not a "piezo buzzer." (Piezo sounders are passive devices, designed to be powered from interrupted DC or AC at the generated audio frequency. A buzzer contains an audio oscillator and is designed to be powered from DC. A buzzer probably won't work at all in this unit.)

    You can also substitute a small speaker for the piezo sounder. (If you use a speaker, you can eliminate the 1.8 k shunt resistor.) If you do use a speaker, add a 10 uF electrolytic capacitor in series, as shown in the sketch below:

  • Panasonic camera remote cable assembly
    The Panasonic FZ-series cameras require a 2.5 mm, 4-conductor plug to mate with their wired remote jacks.

    I've heard that these plugs are used on some inexpensive cellular earset/microphone assemblies. I haven't found one locally. However, if you can find one of these cheaply and locally, buy one. Cut the cable and discard the earset/microphone assembly (or save it for use in another project, as I would.)

    If you can't find a suitable headset, you can buy a Kobiconn cable assembly, terminated with the proper 2.5 mm plug, from Mouser Electronics for $4.62.

A general note about obtaining ICs: check the manufacturers' web sites. Often, they're willing to send you one or two free samples of their chips.

Board Layout

Although I'm not currently planning to build one of these beyond the breadboard stage, I gave board layout some thought when I was assigning the Arduino's pins. I had the layout shown below in mind.

If you're building on a perfboard (as I would, for a one-off project), or if you're designing a printed circuit board, try locating the main components as I've shown as your first cut. It should work out pretty well, with good routing between the processor chip and the other major pieces.

August 8, 2007 Update:

I've found a free schematic capture / board layout program, Eagle Lite. It looks like this free program will let me deploy a board schematic, and a printed circuit board layout using the parts I have on hand.

If you'd like to find my parts (which I'll specify), you should be able to use the board I've designed. If you choose to substitute parts, you should be able to modify the PCB layout to suit the parts you've found.

I don't know how it will work out, but it might be a route to a printed circuit board for your project.

If you'd like to get started learning Eagle with me, you can find the free software at at this link. After you've read the introductory material and, perhaps, have taken their tour, navigate to the Download section, then download the appropriate version of software for your system.

When you first start the program, specify that you're using the freeware license, and you'll be set to go.

Navigate to the Documentation section on the CadSoft site, then download the manual and the tutorial. Work through the tutorial; you should gain familiarity with the program fairly quickly. CadSoft did a good job with it.

I'll keep you posted as I progress.

July, 2008 Update:

Although I haven't completed a PCB design for this project, I was able to build some components for such a board in Eagle. I'm posting my (incomplete) Eagle library that you can download from the link below.


You're probably anxious to take a look at the AI-1 Remote's software. So to scratch your itch, here's a text listing of the code that you can read online or download to peruse offline in a text editor. Once you're done peeking at the code, let's get back to work and install the Arduino development environment.

AI-1 Software Text Listing

Before installing the AI-1 software, you need to install the Arduino development system, arduino-0008, on your computer. The Arduino environment runs on Windows, Macs, and Linux machines. I'll provide detailed installation instructions for Windows machines below. If you use a Mac or a Linux box, follow the instructions on the Arduino site for your your environment. Perhaps in the future some kind Mac and/or Linux user will help me provide detailed instructions for those systems.

The Arduino Software site is here.

For Windows users:

  • Download (47.8 Mb).
  • Open Windows Explorer. Locate the file you just downloaded, then copy it to the root directory of your C:\> drive. (You need to set yourself administrator privleges for this, and for the rest of the installation.)
  • Extract the archive. It should create, and install itself, into a folder called C:\arduino-0008.
  • Navigate to this directory. Find Run.bat. Right-click that batch file, select "Send to..." from the popup menu, then click "Send to Desktop (Create Shortcut)".
  • On your desktop, find the icon you just created. Rename it from Run.bat to Arduino.
  • Double-click your Arduino icon to open the development environment. Take your time, look around, maybe open the Help menu and click Reference to visit the Arduino site. When you've finished exploring, close the Arduino environment.
  • Look in your My Documents tree. Notice that you now have a folder there called Arduino.
  • Now download the AI-1 Remote software.
  • Find the file you just downloaded -- Move it to the \My Documents\Arduino directory.
  • Extract that file. You should see a folder under the Arduino tree marked "AI_1_Remote_V1r00_Release".
  • Restart the Arduino environment.
  • From the File menu, choose Sketchbook, then click on the AI_1_Remote_V1r00_Release selection. The software should open in your editor window.
  • Click the Compile button. (That's the circular icon, containing the right-facing arrowhead, just below the File menu choice.) The program should begin compiling. After a few moments, you should see a message in the status window, below the editor window, reporting something like "Binary sketch size: 14xxx bytes (of a 14336 byte maximum")
  • You're almost ready to load the software into your Arduino chip. Before you do, though, follow the instructions in the "Tailoring the Software" section, below.

Tailoring the Software

I've included several variables that you can tune in order to tailor the software to suit your preferences. You'll find these tuning variables right under the "Preamble" label following the program's Contents block.

#include <EEPROM.h> 

//  If you use a battery backup for your clock, delete or comment out 
//  the following line -- "#define Supercap" -- to disable the DS1302's 
//  trickle charger

#define Supercap

//  System tuning constants:  change these, if you wish, for your preferences.

#define BLHangtime        5      //  Seconds (approx) backlight stays on 
                                 //  after keypress while on battery
#define AutoRepeatThresh  25     //  Number of 10 mSec debounce periods 
                                 //  before autorepeat for Up and Down buttons
#define LowBattThresh     233    //  ADC value for 6.5 V unreg 
                                 //  power bus measurement
#define ExtPwrThresh      359    //  ADC value for 10 V unreg 
                                 //  power bus measurement
                                 //  (values based on tap from 
                                 //  47k + 10k voltage divider on power bus) 
#define SnoozeTime        10     //  Snooze time minutes                                          
#define BeeperTimeout     15     //  Minutes until the beeper shuts itself off 
#define SetupTimeout      2      //  Minutes before setup mode times out to idle  
#define SplashScrnTime    2      //  Splash Screen display time, seconds

The most important line is the one marked "#define Supercap." If you have chosen to use a coin cell battery to back up your clock chip, disable the DS1302's trickle charger by commenting out that line, as I've shown below:

// #define Supercap

Next, look at the variables in the section marked "System Tuning Constants." Things you might want to vary are the Up and Down button autorepeat setting, the beeper timeout (which I've set for 15 minutes, as my personal revolt against cheap travel alarms that time out after one minute), and splash screen display time.

Is everything set to your liking? Save your changes, then re-compile. Now, let's upload the compiled code to the processor.

Uploading the Program

Now the excitement begins.

Power up your remote. The Shoot LED will flash a few times.

When you're ready to upload the compiled code, press the Reset button. The Shoot LED will flash a few times. As soon as the Shoot LED goes out, click the Upload button (the second icon from the right, just below the Help menu choice.)

On the Arduino environment's status line, you should see the "Uploading..." status message. After a few moments, if all has gone well, you'll see a message in the status window indicating that the upload succeeded.

If the upload failed, you probably waited too long to begin your upload after the Shoot LED stopped flashing. Press the Reset button, then try again.

If you repeatedly fail to upload, power the unit down and check your upload arrangement. Check for reversed transmit and receive first, and make sure all connections are seated.

Once you've found and fixed your problem, try again.

After a successful download, wait for about 10 seconds (the Arduino's boot time). You should see the "AI-1 Remote" splash screen displayed for a couple of seconds, followed by the clock's time setting.

Congratulations! You've successfully built yourself a remote! Have fun using it.

If you haven't done so before now, download my AI-1 User's Guide for instructions on using your remote.

If you have problems, feel free to email me by clicking the link, below.


...go out to:

"Positive Paul," ( ), for a design review, suggestions about the size of the unit and the time exposure feature, and encouragement for me to get this project back on track.

Bryan ("linuxworks" from the Panasonic forum), for the original inspiration for this project, and the transmitter/receiver and LAA-110 suggestions.

Tom Williams, for his many suggestions.

Many thanks for all the help, folks!

Copyright © 2007 Tom Lackamp
All rights reserved