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.

Introduction

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.

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.

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.

Deployment

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!

Hardware

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

Capacitors:

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,
http://www.wulfden.org/k107/PICEL.shtml. 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.)

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.

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 http://www.wulfden.org/k107/PICEL.shtml
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.

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.

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.

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.

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.

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.

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.

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:

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.

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:

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.

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.

Open Windows Explorer. Locate the arduino-0008-win.zip 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.

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.

Find the file you just downloaded -- AI_1_Remote_V1r00_Release.zip. 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.

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.

Thanks!

...go out to:

"Positive Paul," ( http://www.paulmphotography.com/ ), 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.