In this tutorial we show you how to "jumpstart" an arduino that you can't connect to and program by the usual means. This might be because it's inside a case, because you have soldered wires to the pins or because everything is slathered in hot glue !
WARNING: You will need to be careful not to short-circuit or otherwise physically damage your equipment. Some of the stages of this instructable involve delicate misuse of electronics. You have been warned - we can't be held responsible if you break anything !
Step 1: We've All Been There
We've recently been involved in a project to build a bunch of data logging Arduinos for use outdoors (in all weather conditions). So we wired up some Arduino (the rather cool Ardulog from HobbyTronics) to some sensors, uploaded some code and popped them into some waterproof tubes, along with plenty of hot glue to stop the wires from shorting.
The only problem is that we now want to change the code that is running on it, but can't (because of all the solder and hot glue coving the programming pins).
Looks like an hour stripping the glue and attaching headers, only to have to put it all back again afterwards ?
Step 2: ATMEGA Chip
As luck would have it, the ATMEGA chip that is at the heart of the project is still easily accessible (see photo).
If only there was a way we could hook up to it, without causing any damage !
Step 3: Probe
The first step is to build a suitable probe. We create the one shown using 4 needles and a row of male headers (plus a bit of hotglue to keep the whole thing together). The trick is to get the spacing right between the needles so that they match the spacing on the ATMEGA chip.
Step 4: Host Arduino
In order to program our target ATMEGA, we are going to need a host Arduino (to make use of it's USB connector, serial pins, regulated power supply etc). We took an UNO and (carefully) pulled out the CPU (to be sure it was our target ATMEGA we were programming and not the UNO).
Next we connected wires to GND, 3v3, Reset, RX and TX (as shown in the photo).
Step 5: Power
The next step is to hook up power to your target Arduino.
We used a couple of crocodile clips to connect the 3v3 and GND to the (empty) battery pack that we were using in our Ardunio project. This ensured that the power supplied was going through the target Arduino's voltage regulator. Obviously if your target is a 5v Arduino, then you'll need a 5v supply from the host UNO.
Step 6: Connecting the Probe
Next we connected the RX, TX and RESET wires from our host arduino to the probe as shown:
Host - Target
RX => RX
TX => TX
RESET => RESET
To ensure the correct ordering of wires connected to the probe, we referred to the pinout diagram for the ATMEGA chip we were trying to jumpstart.
Note: We are only using 3 out of 4 needles on the probe - the 4th is just to help align the probe to the chip in the next stage.
Step 7: Fiddly
The next stage is the most fiddly of all. You have to press the probe against the correct pins on the ATMEG, being careful not to slip and short the legs. This could potentially damage the chip (however they seem to be pretty robust and we haven't had any problems - despite a fair bit of slippage !)
Step 8: Upload
Once you have a good connection, you can then use the Arduino IDE software to upload code onto your target Arduino. You might find it useful to get someone else to press the "Upload" button !
Just remember that you are trying to program the target Arduino, not the host (when select the relevant board in the Arduino settings).
Everything should work as normal in terms of compiling and uploading code. Serial comms and serial monitor should even work as well.