If you have an Arduino project where the dev board is stuck inside a machine, or attached to the rafters or is inaccessable in some other way, a wireless programming/debugging link will save you tons of time. This tutorial is an extension on Rob's version. In this tutorial, no extra firmware or hardware (other than a capacitor) is necessary. Just use the default bootloader. I use a 'classic' Arduino but of course this can be easily adapted to any version or clone.
You will need 2 XBee adapter kits, 2 matching-protocol XBee modules, an FTDI cable (or other FTDI breakout board, if you can wire it up correctly) as well as a 0.1uF ceramic capacitor, 10Kohm resistor and NPN transistor. The resistor and capacitor can vary quite a bit if you don't have exact values.
This tutorial currently only works for Arduinos with Duemilanove bootloaders. If you have an UNO, you can either reprogram the chip with a Duemilanove bootloader via the IDE or purchase a chip and swap it in.
One XBee will act as the 'reset transmitter', it will be attached to the computer via an FTDI cable and wireless send programming commands to the receiver. Let's set this one up first.
Connect up the transmitter adapter with XBee modem to your computer using the FTDI cable.
And start X-CTU, just like on the configure page.
Once you've connected/tested that you can communicate with the modem, go to the configure tab and read in the current setup.
Then set the following:
The PAN ID should be some 4 digit hex number that will only be used by these two modems - to prevent confusion.
Now the transmitter is set up to send the current status of pin D3 to any listening modems.
Now solder in a tiny jumper between the RTS pin and D3. This will tie the status of D3 to the status of the RTS pin which is can be configured to be used as the 'arduino reset pin'
Make sure Set RTS On Close is selected. Click OK.
Now we will set up the other XBee so that it will listen to changes on pin D3. Connect it to the FTDI cable and read in the current configuration just like the first one.
The PAN ID should match the transmitter's
Now write the changes to the receiver XBee.
The transmitter XBee connects directly to the FTDI cable/computer and the receiver is wired to the target Arduino. Here I use a half-sized breadboard and rubber band since not much space is necessary. Solder a wire from pin D3 on the receiver XBee adapter, so that you can plug it into the breadboard. This is the mirrored reset line from the transmitter Xbee.
The collector then goes the Arduino's reset line. Make sure the grounds are all connected, and that the XBee is wired from the Arduino's 5V line.