Little bigger than a postage stamp, and not a great deal thicker, the Pro Mini is a great solution for finished projects, since it runs like other Arduinos, but is stripped of unnecessary extras. One of those ‘extras’ is the USB port for uploading sketches, and so you need to know how to connect it to an external USB interface, called a USB to TTL converter. These devices convert USB signals into the logic levels the Arduino understands, and are readily available on eBay – just search on ‘USB TTL’.
(Note you can get most of the benefits of a Pro Mini plus the USB port if you use an Arduino Nano instead. However, if you want to dip your toes into low-power solutions, using a separate USB device just for programming will save you power and cost. Plus it’s cooler).
Pro Minis can be shipped without any connections, so first you have to solder on pin headers. Of course, for a permanent project you can solder wires directly to the circuit board, but at a minimum, you’ll want to solder a six-pin header to the end opposite the reset switch. I prefer to solder onto the board an angled male pin header facing inwards, so as to keep the device’s footprint small. Once soldered, this header is connected to the USB converter.
At its simplest, you connect the four pins of the converter to the corresponding ones on the Pro (5V to VCC, TXO to TXO, RXO to RXI, GND to GND), and work with that. Since this doesn’t provide a reset, you’ll need to get in the habit of holding down the reset button, running your compile, and then releasing the reset button as soon as ‘Uploading’ appears on your Arduino IDE. That will get old really fast, so I recommend you look for a USB converter with an exposed reset line (called DTR), visible on the side of newer converters. Adding a connector between it and the Pro Mini’s GRN line will give you the familiar automatic sketch uploading.
Most connection problems I’ve found using this setup involve nonstandard Pro Minis (ATmega328 instead of a Atmega168, the wrong clock speed, or different voltages), or swapped TX/RX lines. Watching the loading led flash, and looking for the “stk500_getsync(): not in sync” error message during uploads will help you troubleshoot these issues.
The benefit of this extra initial setup? All the power of an Arduino on an incredibly small device, including reduced power consumption, since there’s no USB converter constantly running. Using it, I now can prototype a project using the Arduino Uno or similar, confident I can offer it in a smaller, less power-hungry, and lower-cost version when I’m ready. You can, too.