Hi. This Instructable will guide you through the process of wirelessly programming your Arduino using two XBees. I just finished designing a wireless EEG system with the XBee modules, so I've become quite fluent in their programming and have just now been able to accomplish this. It still amazes me how difficult it has been to try to wirelessly program the Arduino. On top of that no one has been able to do this with the series 2 XBees (that I know of... and I've looked hard). However I do not see why this method cannot be extended past the series 1 or 2 and used for the 900MHz series as well. You just need to make sure that the XBee is capable of acting as a transparent serial link.
Being able to wirlessly program your Arduino can come in immensly handy. This means you can set up your Arduino in a remote location that is hard to access and still be able to program it. For example, if you want to measure climate data in a harsh enviroment. This would require you to seal your device, and make it combursome to program. However, with this rig not only can you still program the Arduino inside from over 90m away, but also recieve data from your sensor wirelessly too.
Its my first Instructable so any feedback would be much appreciated!
In order for you to accomplish this you will need to:
1) Have two XBees. They can be any series I believe, but they have to be a pair of the same series
2) Have an appropriate method of connecting one XBee to your computer, and another to a circuit.
3) Build a small circuit that incorporates a Arduino. Can be a standard board such as the UNO or solely the microcontroller with accompanying crystal and capacitors.
4) Have an another Arduino bootloaded with the Duemilanove bootloader. This will be the Arduino that is programmed wirelessly.
For example, I used:
1) Two series 2 modules.
2) A USB explorer for connecting to my laptop, and a explorer regulated for connecting to my circuit.
3) A ATMEGA328p-pu microcontroller that was soldered onto a shield.
4) A Arduino UNO board, but I re-burned the chip to have the Duemilanove bootloader instead.