How to use the Sparkfun FTDI Breakout with an Arduino Mini
There’s no wrong way to do this, but there’s certainly a better way. Sparkfun’s guide is not clear on how to connect the FTDI Basic Breakout to an Arduino Mini so that you can take advantage of the auto-reset feature, so I’m compiling some comments and guides to make it easier.
First let’s talk about the Arduino Mini’s reset pin. On version 04 there’s two of them, one on each side of the board, which makes it more convenient to hook up what we’ll need. The reset pin works like this: It expects a high signal (+5V) to keep the Arduino running. If the reset pin goes low (0V/GND) then the Arduino will reset. Easy right?
Now, if there’s nothing connected to the reset pin, the Arduino will read this as a “floating” voltage. This means that electrical noise is causing the voltage read at the reset pin to bounce anywhere from 0-5V. Since we know how the reset pin behaves, it shouldn’t be surprising that this “bouncing” voltage will cause the Arduino to reset sporadically and constantly. No good! So how do we hook this up?
You’ll use a 10K pull-up resistor to connect the reset pin to 5V. Why don’t we just use some wire? Well when you need to reset the Arduino, you need to connect that reset circuit to ground so that the reset pin reads 0V. But if there’s just a wire going from 5V to the reset pin, then you end up connecting 5V to ground, which is a short circuit that could potentially do some damage to the electronics (do you smell smoke?). By using a 10K resistor to limit the current, you can safely switch the reset pin between 5V and 0V without a short circuit.
You’ll also connect the FTDI’s DTR pin to the Arduino’s reset pin (I’m using the second one for this part to make it easier) with a 0.1uF (code 104) or 10pF (code 101) capacitor in series between the two. This allows the FTDI to pull the reset pin to ground automatically when you upload a sketch, which is what all the fuss was about in the first place.
You may notice that I haven’t connected a momentary pushbutton switch to reset the Arduino manually, but if you want that functionality then you can insert the switch between the pull-up resistor, reset pin and ground something like this.