Skip to content

Reset Connection

Flashing new code to an Arduino always ends with a reset, but you'll also want the ability to reset it from the Raspberry Pi outside of programming. Errors, hangs, or memory issues can lock up the Arduino, and in a worst-case scenario (e.g., a hung Arduino leaving a water pump running), the consequences could be serious.

It may be tempting to rely on the automatic reset triggered when opening and closing a serial connection. However, this method assumes the Arduino is still responsive—an unreliable safety net at best.

The only dependable way to reset the Arduino is by pulling the RESET pin low (connecting it to ground). This is exactly what happens when you press the Arduino's physical reset button, and it ensures a true hardware reset regardless of the state of the device.

Voltage

As noted earlier, the Arduino and Raspberry Pi use different logic voltages. The Arduino's RESET pin is 5V, while the Raspberry Pi's GPIO operates at 3.3V. Connecting them directly can permanently damage the Pi.

Which Method

Using a Transistor

If you're using USB, you need a safe way to pull the 5V RESET pin low from the Pi's 3.3V logic. One of the simplest and most cost-effective solutions is to use a transistor as a switch.

Skip to the section

Using a Logic Level Converter

If you're connecting via the Raspberry Pi GPIO pins and already using a logic level converter, resetting the Arduino is straightforward: dedicate a spare channel on the converter to connect the Arduino RESET pin to a Raspberry Pi GPIO pin and pull it low when needed.

Reset Via Logic Level Converter (When Using GPIO)

One safe way to reset the Arduino without risking overvoltage on the Raspberry Pi is to use a transistor as a switch. By applying a small current from a Pi GPIO pin to the transistor's BASE, you open a connection between the COLLECTOR and EMITTER, effectively pulling the Arduino's RESET pin low. The 5V current from the Arduino flows only through the transistor, keeping the Pi completely protected.

Components

You'll need the following or similar:

Build the Circuit

This is the same circuit used in Wiring the Logic Level Converter.

LLC Reset
Highlight of the Reset Circuit When Using a LLC

Reset Via Transistor (When Using USB)

One method of resetting the Arduino while keeping the RPi safe from overvoltage is to use a transitor between them. Applying current from the RPi to the BASE pin of a transistor will open a gate between the COLLECTOR and EMITTER pins of the transistor. The 5V current of the Arduino will not flow into the RPi through the transistor.

A Transistor in Action

Components

The following or similar components are needed:

Build the Circuit

Wiring a RPi GPIO pin (GPIO 24 in this example) to the Base pin of a transistor, through a resistor, and programmatically setting that pin high, will open the gate (or close the switch) of the transistor. Thus allowing current to flow between the Arduino RESET and Ground pins.

transistor reset
A Simple and Safe Reset Circuit Between an Arduino and RPi