Wirelessly Programming the Arduino UNO

I've always dreamed of being able to program and debug my robots free of cables and was quite excited when Ladyada and Tom Igoe (author of "Making things talk") released tutorials on how to do this using the Xbee series 1 modules teamed up with my favorite uC board/IDE, of course, the Arduino! Well my personal fav hardware is the SB Freeduino to be exact :slight_smile:

So after a bunch of reading, configuring of Series 1 Xbees with chip antennas, and a bit of hardware modding to the Xbee shield I was able to successfully program the Freeduino wirelessly. I was quite happy! Then came the range testing, I fully expected to get some wicked range with them since I had heard great things about xbees, but sadly in an indoor environment I was only able to achieve approx. 30ft. Keep in mind that this is at the speed of 57600 baud which the Freeduino's (Duemilanove based) bootloader communicates at. In retrospect I was really happy to find out that wirelessly programming Arduinos could be done but at the same time I was kinda sad that the range wasn't near what I expected.

Fast forward about a year later and some people have figured out how to program even the UNO wirelessly, which has the Optiboot bootloader that talks at a baud rate twice as fast as the Duemilanove bootloader->115200. Some of the products that have achieved this are DFrobot's Wireless Programming Module for Arduino which claim's 16.4ft. of range. The Pololu wixels claim 50ft.. I'm sure the Xbees could go farther but I have yet to run across anyone who has successfully done this with series 1,2, or 2.5 xbees. So the range still leaves much to be desired when trying to wirelessly program the current version of the Arduino.

Well, that is until this past week :grin:. With the hardware pictured above, I was able to successfully program an Arduino UNO with a 2kB file from indoors to a parkbench outside that was located 250ft. away. This was with no hardware mods, a few quick minutes of python script uploading, and without leaving the comfort of my workstation! I was able to do this with Synapse Wireless's RF100 RF engines with PCB antennas. I'm guessing I probably would have achieved even greater results with the SMA antenna version but I wanted to test with the base units. These RF engines are over-the-air configurable 802.15.4 RF Network nodes that can also be setup to do transparent serial communication at 115200. Now Synapse claims an indoor transmission range of 1000ft. and Line of sight outdoor range of 3miles but even though I didn't quite see those kind of results I was getting approx. 5 times the range of the next competing RF modules. Now, J.C. Woltz has been on these forums in the past talking about the huge benefits of the Synapse RF nodes, and I'm here to confirm that, yes, they do pack a mean punch :stuck_out_tongue_closed_eyes:!

Read all the background on how I was able to do it in the Synapse Forums. The referenced News article with video examples is located here

I'm sure the Xbees could go farther but I have yet to run across anyone who has successfully done this with series 1,2, or 2.5 xbees. So the range still leaves much to be desired when trying to wirelessly program the current version of the Arduino.

You chose the wrong antenna style XBee, and want to blame the problems on the XBee. I don't think so.

Hmmm I see how that could be taken the wrong way, by the current version of the Arduino I meant the UNO. I haven't found any articles of people programming the UNO wirelessly with Xbees. No matter which series people are saying it can't be done. I'm not even sarcastic when I say I would really like to hear about the real world results! PaulS have you heard otherwise?

My experience using series 2 with the little wire antenna for this purpose has been 30 feet or one wall, whichever came first. I tried using an XBee in the middle as a relay, but couldn't get that to work. This was with the XBees set to 57K, I never tried any higher. On the other hand, I can send "hello world" from my recliner to the barn 150 feet away through three walls using the low power XBees....go figure.

I haven't pursued the idea further because it just hasn't risen high enough on my list. Maybe someday.

Thanks for the info draythomp :)! Although, I just wanted to confirm that you were using an UNO because the Optiboot bootloader communicates at 115200 baud, if you were at 57600kbps I'm assuming that you were probably programming the Duemilanove, Freeduino, Ardweeny, Diecimila, or etc. If this is the case, it seems you were getting about the same results as me with my Series 1 Xbees.

I think I failed to mention that the same Snappyscript (python based) code that was used to configure the Synapse wirless RF100 network modules for programming the UNO can also be used (in Arduino1) to wirelessly program the SB Freeduino and the Arduino Duemilanove when you change UART1 settings from 115200 down to 57600 baud.

Yep, I experimented with a Duemilanove. I have a couple of Unos, but I didn't try them for this because I put the little guys into service doing stuff as soon as they arrived.

I thought it may be helpful for readers to also know about this project in which remote programming has been accomplished using (2) Arduino's. One that "buffers" the RF sketch in order to program the other.

And one other: GitHub - davidsainty/xbeeboot: XBeeBoot: XBee Series 2 API Bootloader for Arduino and Atmel AVR

I haven't actually tried this implementation yet - also on the discussion of XBee 'actual' range. I've got S3B XBees getting solid 2-mile range and extremely spotty 3.75 mile range ( wouldn't rely on anything over 2 :slight_smile: ).