Arduino Pro Mini

The Arduino Pro Mini is a compact microcontroller board for advanced users, based on ATmega168 or ATmega328P. Designed for space-constrained projects, it lacks a USB port, requiring an external FTDI programmer for coding. Operating at 3.3V or 5V, it offers 14 digital I/O pins, 6 analog inputs, and 32KB flash memory. Lightweight and versatile, it’s ideal for embedded systems and permanent installations.

Arduino Pro Mini
Fig.: Arduino Pro Mini

Features/Specifications

Microcontroller ATmega328P
Board Power Supply 3.35 -12 V (3.3V model) or 5 - 12 V (5V model)
Circuit Operating Voltage 3.3V or 5V (depending on model)
Digital I/O Pins 14
PWM Pins 6
UART 1
SPI 1
I2C 1
Analog Input Pins 6
External Interrupts 2
DC Current per I/O Pin 40 mA
Flash Memory 32KB of which 2 KB used by bootloader
SRAM 2 KB
EEPROM 1 KB
Clock Speed 8 MHz (3.3V versions) or 16 MHz (5V versions)

Older boards were equipped with ATmega 168 with this specs:

📄 ATMega328P datasheet (8585 kB)
📄 Arduino Pro Mini schematic (61 kB)

Connections

Pinout-Chart of the Arduino Pro Mini
Fig.: Pinout-Chart of the Arduino Pro Mini
Pin Type Function Description
RAW Power Input Voltage Regulated input voltage (6-12V) for onboard regulator.
VCC Power 5V or 3.3V Regulated 5V (or 3.3V for 3.3V version) output or input if bypassing regulator.
GND Power Ground Ground pins (multiple available).
D0 Digital I/O RX (Serial) Digital pin 0, also used for serial receive (RX).
D1 Digital I/O TX (Serial) Digital pin 1, also used for serial transmit (TX).
D2 Digital I/O INT0 Digital pin 2, external interrupt 0.
D3 Digital I/O INT1, PWM Digital pin 3, external interrupt 1, PWM capable.
D4 Digital I/O - Digital pin 4, general-purpose I/O.
D5 Digital I/O PWM Digital pin 5, PWM capable.
D6 Digital I/O PWM Digital pin 6, PWM capable.
D7 Digital I/O - Digital pin 7, general-purpose I/O.
D8 Digital I/O - Digital pin 8, general-purpose I/O.
D9 Digital I/O PWM Digital pin 9, PWM capable.
D10 Digital I/O PWM, SS (SPI) Digital pin 10, PWM capable, SPI slave select.
D11 Digital I/O PWM, MOSI (SPI) Digital pin 11, PWM capable, SPI MOSI.
D12 Digital I/O MISO (SPI) Digital pin 12, SPI MISO.
D13 Digital I/O SCK (SPI), LED Digital pin 13, SPI clock, connected to onboard LED.
A0 Analog In ADC0 Analog input 0, can be used as digital I/O.
A1 Analog In ADC1 Analog input 1, can be used as digital I/O.
A2 Analog In ADC2 Analog input 2, can be used as digital I/O.
A3 Analog In ADC3 Analog input 3, can be used as digital I/O.
A4 Analog In ADC4, SDA (I2C) Analog input 4, I2C data line, can be used as digital I/O.
A5 Analog In ADC5, SCL (I2C) Analog input 5, I2C clock line, can be used as digital I/O.
A6 Analog In ADC6 Analog input 6 (analog only, not digital I/O).
A7 Analog In ADC7 Analog input 7 (analog only, not digital I/O).
RST Control Reset Reset pin, active low to reset the microcontroller.

Used Components

Programming

There are various ways to program the Pro Mini. Programming via USB directly from a PC is not possible, as it does not have its own USB interface. You can connect the Pro Mini to a PC using an FTDI adapter (similar to the Lilypad), use the Arduino Uno as an ISP (Caution: 3.3V!), or use the Arduino Uno board directly as a programmer, as described below.

Preparation

First, the ATMega328 chip must be carefully removed from the Arduino Uno board. This can be done easily by gently prying it out with a screwdriver (see the image below).

Removing the ATMega328 chip from the Arduino Uno
Fig.: Removing the ATMega328 chip from the Arduino Uno

Connections

Now the Pro Mini is connected to the Arduino board as follows:

Arduino Pro Mini Arduino Uno
VCC 3.3V or 5V (depending on the Pro Mini model)
GND GND
DTR RESET
TX TX (Pin 1)
RX RX (Pin 0)

In the Arduino IDE, go to "Tools → Board:" and select "Arduino Pro Mini", then choose the appropriate chip, voltage, and port. The Pro Mini can now be programmed as usual.

Test-Program

As a small test, a slightly modified version of the Blink sketch is used here.

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(200);
    digitalWrite(LED_BUILTIN, LOW);
   delay(1500);
}

Power saving

In the following experiment, we want to measure how much power the Arduino Pro Mini consumes in so-called sleep mode. This is especially important for battery-powered projects, where the goal is to achieve the longest possible battery/runtime.
The circuit setup is quite simple: a standard LED with a current-limiting resistor is connected to one of the pins (here: pin 13). The following sketch turns the LED on for 4 seconds, then off for 4 seconds, and then puts the board into sleep mode for 4 seconds. A 18650 Li-Ion battery with a battery board (3V output) is used as the power source. (This uses the LowPower library, which must be installed before compiling the sketch.)

Setup on the breadboard
Fig.: Setup on the breadboard
#include "LowPower.h"

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(4000);
    digitalWrite(LED_BUILTIN, LOW);
    delay(4000);
    LowPower.idle(SLEEP_4S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF);
}

The measured current in the three different phases is as follows:

LED on 8.3 mA
LED off 6.3 mA
Sleep mode 1.9 mA

For even greater power savings, the red power LED and the voltage regulator can also be removed. However, this requires a modification to the board itself, which is described, for example, on Andreas Rohner's website.

Last edited by Christian Grieger on 2025-05-14
X
  1. [top]
  2. Features/Specifications
  3. Connections
  4. Used Components
  5. Programming
  6. Test-Program
  7. Power saving