# How do I get my Arduino to reset another board?

Let's say I have another micro controller board. It has a 2 pin header on it. If you momentarily connect those two pins together -- either shorting them out with a jumper cap, or hooking them up to a button and then pressing said button, and so on -- the board will reset.

Now let's say I want to set up my Arduino so that it can trigger this reset when a certain condition is met -- received a command over a wireless link, a counter passed a certain value, whatever.

How would I hook this up? What additional components would I need, if any? Do I just hook both pins of the reset header to Arduino pins and digitalWrite(PIN, 1) them?

Sorry for this admittedly newbie-sounding question, but I am still fairly new to electronics.

MCU reset pins are normally active-low with pull-ups, which means you ground them to trigger the reset and leave them open to run normally. There's a special kind of output called open drain that's perfect for driving this sort of pin. Unfortunately, it seems like Arduinos don't support open drain outputs directly. This page suggests putting the pin in input mode to produce the open state and output mode to produce the grounded state. Alternately, if the reset is totally controlled by the Arduino (i.e. it never toggles itself), you can drive the pin directly with a normal output.

All this assumes that the MCU board is using the same 5V or 3.3V supply as the Arduino. If this is correct, it's safe to do what I've described. But if the MCU board uses a higher voltage than the Arduino, you'll need to use a transistor (NPN or NMOS) to pull down the reset line.

If the reset pin is active high, you'll have to drive it with a normal output, and the voltages probably have to be the same. You can figure out the polarity of the reset by measuring the voltage on the shorted pins with a multimeter. You can get the board voltage by measuring both pins separately.

You'll also need to connect the grounds of the two boards together to provide a return path for the current.

Something like this would work nicely. It's a digitally-controlled, analog switch. Best of all it's less than \$1!

Also, there are many "reset supervisor" chips out there that can do the same thing, but are a bit more complex to implement.

I would think the easiest solution (without needing to worry about linking grounds, etc) would be to simply use a normally-open relay. Something like this would do nicely:

http://www.digikey.com/product-detail/en/9007-05-00/306-1062-ND/301696

All you need to do is connect the relay coil pins (2 and 3) between the Arduino output and ground, and connect the other two relay pins (1 and 4) across the header contacts used to reset the other micro. It is the equivalent of a pushbutton switch connected to the header, except that it's controlled electronically rather than mechanically.