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.
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)
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. |
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.
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).
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.
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);
}
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.)
#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.