Program your Arduino via IR using the Arduino IDE

Here’s a way to program an Arduino wirelessly while still using the stock IDE. It uses an alternative bootloader called SuperDuplex along with an IR receiver like the ones used for TV remotes.

As you can see, this does take two parts. There is the target device which has the IR receiver, as well as the transmitting unit which connects to the computer via USB. You can see a demonstration of the programming process after the break. It might be a bit slow, but nothing outrageous.

With hobby electronics we always thing that “what does it do?/what is it for?” is the wrong question. But in this case we there’s a very apparent use for it. If you’ve built a gadget for use in a harsh environment and want to keep the number of openings in the enclosure to a minimum (like for an underwater ROV) this is perfect. Just make sure there’s a window for the IR receiver and you’ll be able to program as much as you want. Of course it still looks like you need a method to manually reset the target chip, but you’ll think of something.

Comments

  1. tz2026 says:

    There is a bluetooth version, and although I think it is a neat hack, ‘wireless’ ovet BT serial modulds has been done, but I plan to try shortly on my setup

  2. Diego Spinola says:

    Brings back fond memories of the RCX ;)

  3. colecoman1982 says:

    Another thing this would be nice for is any situation where you need to connect the Arduino to a PC without a risk of high power surge in either direction. Such situations include using the Arduino to control motor power supplies where you don’t want to risk frying your PC (ex. home built CNC) and using the Arduino to run sensor you’re strapping to you body (temp, EEG, ECG, etc.) where you don’t want to risk a sudden surge (ex. nearby lightning strike)from the PC crossing over to the person wired up to the Arduino.

  4. Wouter says:

    Maybe you can reset the Arduino ‘remotely’ with a reed switch and a magnet you hold to your watertight casing at the right place.

    • Alexander says:

      I would second the reed magnet option. I had to do this once on a project that required 100% waterproofing and dust ingress. I essentially sealed the entire thing up with silicone potting and the reset button was just a depression where you put a magnet for 30 seconds. Simple, worked underwater, and best of all–cheap.

  5. Michael says:

    You can reset by software, but it would be difficult to implement with the hardware USB transceiver.

    Ideally, a Mega8u or some other USB enabled MCU would watch for the reset/start signal from the Arduino IDE and send a reset command.

    The Arduino would be listening for this command and when heard, would jump to the bootloader at 0x3C00…

    From poking around in the source, I see is how the Kilobot loads: http://www.eecs.harvard.edu/ssr/projects/progSA/kilobot.html

    Depending on project requirements, I may add the software reset.

    Thanks!

  6. Leithoa says:

    Sub in (IR) lasers and get some serious distance out of that connection. Like in the IP over laser project featured the other winter.

  7. pino says:

    PLEASE learn how to use a camera omg. Half of that video was out of focus and the other third was zoomed to the moon.

  8. just me... says:

    I have heard or a way to upload using a blinking window on the computer and a light dependent resistor. Would love to see this for the arduino. Its cheep and easy, only problem I see is that it has no feedback and would need a lot of error checking…

  9. Jesse says:

    Why not just have a seperate circuit that can read from the same infrared light and only trigger the reset when a certain frequency is detected? Then you can send that frequency when you need that reset. When I say frequency of course I mean like flash the infrared led 30 times a second or something that would be too slow to register with the main circuit but fast enough to avoid interference.

    Could this also be modified to be magneticaly coupled like those wireless cell phone chargers? All you would need is a few transistors to up the voltage like a level shifter, then a couple small coils each way. Getting more creative you could make a dual tap coil and use some diodes to direct the signal, then you would have just one coil. It would be half wave ac anyway.

  10. Earthscum says:

    For remote reset, if the controller can initiate a reset pulse (one pin dedicated strictly to the ‘Reset’), you could easily use a transistor. If it’s base is pulled to ground, it has an extremely low current leak, registers as almost open circuit. A pulse across a diode and RC network could hold the base high plenty long enough to initiate the reset.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 91,380 other followers