Resetting XBee with an Arduino

arduinoresetxbee

I would like to be able to reset an XBee with an Arduino by connecting the reset pin on the XBee to a General I/O pin on the Arduino. I'm wondering if any additional components (transistors, resistors etc.) are necessary between those pins.

I found this tutorial on ladyada, but it shows how to reset the Arduino with the XBee which is the opposite of what I'm looking for.
Schematic from the tutorial:
enter image description here

Best Answer

The reset pin is bidirectional, and default configured as open-drain with a pull-up resistor (datasheet page 13). That means that you can assert Reset by making that pin low.

Don't make the Arduino's output high to de-assert Reset! Two reasons:

  1. Xbee are 3.3 V devices, and 5 V on the input may damage them
  2. If you would make the output high (whether 3.3 V or 5 V) and the Xbee would make it low you would have a short-circuit.

So to de-assert Reset switch the Arduino I/O pin to input. Make sure the ATmega's internal pull-up is disabled! The Xbee's pull-up resistor will take care of the proper high level.

To interface the 3.3 V Xbee safely with the 5 V Arduino you can use LadyAda's adapter which has a level shifter.

enter image description here