MakerLab
ArduinoArduino Mini

Arduino Mini: The Compact Powerhouse for Embedded Projects

A small-form-factor Arduino board based on the ATmega168, ideal for space-constrained projects requiring core microcontroller functionality.

Arduino Mini

The Arduino Mini, released around 2008, is a compact member of the Arduino family designed for projects where space is a critical constraint. Unlike its larger siblings like the Uno, the Mini forgoes onboard USB-to-serial conversion and power regulation, offering a smaller footprint and lower cost for integration into custom enclosures or embedded applications. It provides a straightforward, yet powerful, microcontroller platform for makers, students, and engineers who need the familiar Arduino environment in a more diminutive package.

At its heart, the Arduino Mini is powered by the Atmel ATmega168 microcontroller. This 8-bit AVR RISC architecture chip features 32KB of Flash memory for program storage, 1KB of SRAM for variables, and 512 bytes of EEPROM for non-volatile data storage. The ATmega168 offers a robust set of peripherals, including multiple timers, analog-to-digital converters (ADCs), and serial communication interfaces (UART, SPI, I2C), making it versatile for a wide range of embedded tasks.

The Arduino Mini occupies a niche between the even smaller microcontroller chips and the larger Arduino boards like the Uno or Mega. It's suited for users who have outgrown the absolute basics but don't need the extensive I/O or memory of larger boards, or for those who are designing a product and need to move beyond development boards to a more integrated solution. Its bare-bones nature means it requires a bit more understanding of external circuitry for power and programming, making it an excellent learning tool for those transitioning to more advanced embedded design.

Historically, the Arduino Mini emerged as a response to the growing demand for smaller Arduino-compatible boards. It allowed for the creation of more discreet and integrated projects that could be embedded directly into devices or enclosures without the bulk of a standard Arduino board. This focus on size and simplicity made it a popular choice for hobbyists and developers looking to create custom electronics with a minimal physical footprint.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCAtmel ATmega168
Architecture8-bit AVR RISC
Clock speed16 MHz
Flash / Storage32 KB (2 KB used by bootloader)
RAM / SRAM1 KB
EEPROM512 Bytes
Operating voltage3.3V or 5V (depending on board variant and power source)
Digital I/O pins14 (of which 6 can be used as PWM outputs)
Analog / ADC8 (10-bit resolution)
PWM6 pins (on ATmega168: PD3, PD5, PD6, PB3, PB4, PB0)
ConnectivityUART, SPI, I2C
USBNone onboard (requires external USB-to-serial converter)
Power inputExternal 5V or 7-12V via VIN pin (regulated onboard if using 7-12V)
DimensionsApprox. 30mm x 18mm

Pinout & pin functions

PinFunction
GNDGround
GNDGround
AREFAnalog Reference Voltage
A0Analog Input / Digital I/O
A1Analog Input / Digital I/O
A2Analog Input / Digital I/O
A3Analog Input / Digital I/O
A4Analog Input / Digital I/O (SDA for I2C)
A5Analog Input / Digital I/O (SCL for I2C)
D0 (RX)Digital I/O (Serial Receive)
D1 (TX)Digital I/O (Serial Transmit)
D2Digital I/O
D3Digital I/O (PWM)
D4Digital I/O
D5Digital I/O (PWM)
D6Digital I/O (PWM)
D7Digital I/O
D8Digital I/O
D9Digital I/O (PWM)
D10 (SS)Digital I/O (SPI Slave Select)
D11 (MOSI)Digital I/O (SPI Master Out Slave In)
D12 (MISO)Digital I/O (SPI Master In Slave Out)
D13 (SCK)Digital I/O (SPI Clock)
RESETReset pin
RAW / VINUnregulated power input (7-12V)
5VRegulated 5V output (if using VIN) or Input if using external 5V supply
3V33.3V output (if using onboard regulator) or Input if using external 3.3V supply

Wiring & circuit basics

Powering the Arduino Mini requires careful consideration due to its lack of onboard USB power regulation. You can supply power via the RAW/VIN pin with a voltage between 7V and 12V, which the onboard regulator will step down to 5V. Alternatively, you can supply a regulated 5V directly to the 5V pin, or a regulated 3.3V to the 3V3 pin if your project operates at that voltage. Always ensure your power supply can provide sufficient current for the board and any connected components. Avoid powering the board directly from a USB port unless you are using a dedicated USB-to-serial adapter that provides stable 5V power.

The Arduino Mini, like most standard Arduinos, operates at a logic level of 5V. When interfacing with external components, especially sensors or modules that operate at 3.3V, it is crucial to use level shifters to prevent damage to either device. For example, connecting a 5V Arduino output to a 3.3V input pin without a level shifter can permanently damage the 3.3V device. Conversely, a 3.3V sensor output connected to a 5V Arduino input might not be reliably read.

A basic example is lighting an LED. Connect the anode (longer leg) of an LED to a digital pin, such as D9. Connect the cathode (shorter leg) of the LED through a current-limiting resistor (typically 220-330 ohms for standard LEDs) to a GND pin. When the Arduino sketch sets D9 to HIGH, current flows through the resistor and LED, illuminating it. The resistor protects both the LED and the Arduino pin from excessive current. For I2C communication, connect the SDA pin (A4) and SCL pin (A5) to the corresponding SDA and SCL pins on your I2C sensor, ensuring both devices share a common GND and are powered appropriately.

Programming & getting started

The Arduino Mini is programmed using the Arduino IDE, just like other Arduino boards. However, since it lacks an onboard USB-to-serial converter, you will need an external USB-to-serial adapter (e.g., FTDI adapter, CH340 module) to upload code. Connect the adapter's TX pin to the Arduino Mini's RX pin (D0), the adapter's RX pin to the Arduino Mini's TX pin (D1), and the adapter's GND to the Arduino Mini's GND. You'll also need to connect the adapter's 5V output to the Arduino Mini's 5V pin (or power the Mini separately and connect adapter GND to Mini GND). Select the correct board (Arduino Leonardo or ATmega168-based board) and COM port in the Arduino IDE, then upload your sketch.

To upload your first program, open the Arduino IDE, select the correct board and port, and paste a simple sketch like the Blink example (modified to use a pin available on the Mini, e.g., D13). Ensure you have the correct wiring for your USB-to-serial adapter. Press the Upload button. You may need to press the RESET button on the Arduino Mini just before or as the IDE indicates it's compiling and uploading to initiate the bootloader. Once uploaded, the onboard LED (if present on your specific Mini variant) or an external LED connected to the chosen pin should start blinking.

Project ideas

Compact Environmental MonitorBuild a small weather station using sensors like the DHT22 (temperature/humidity) and BMP180 (pressure). Connect these via I2C or digital pins to the Arduino Mini. The Mini's small size allows it to be housed in a custom enclosure and placed discreetly. This project teaches sensor interfacing, data logging, and basic I2C/SPI communication.
Wearable LED DisplayCreate a custom wearable device with a small LED matrix controlled by the Arduino Mini. The Mini's low power consumption and small footprint are ideal for integration into clothing or accessories. You'll learn about controlling multiple LEDs, managing limited memory, and potentially using SPI for communication with the matrix driver.
Robotic Gripper ControllerDevelop a compact controller for a small robotic gripper. Use PWM outputs from the Arduino Mini to control servo motors for precise gripper movement. This project reinforces understanding of PWM, motor control, and integrating multiple actuators into a single control unit.
Wireless Sensor NodePair the Arduino Mini with a low-power wireless module (like an NRF24L01 or LoRa module) to create a remote sensor node. The Mini's small size and low power requirements make it suitable for battery-powered, long-term deployments. This project introduces wireless communication protocols and power management techniques.
Custom Game ControllerDesign a unique game controller for PC or other devices. Connect buttons, joysticks, and potentiometers to the digital and analog pins of the Arduino Mini. Then, use a USB-to-serial adapter and a custom firmware (or libraries like V-USB) to emulate a USB HID device. This project teaches input handling, analog-to-digital conversion, and potentially USB emulation.
Automated Plant Watering SystemBuild a simple automated plant watering system using a soil moisture sensor and a small water pump controlled by a relay. The Arduino Mini can read the moisture sensor and activate the pump when needed. This project covers analog sensor reading, digital output control, and basic automation logic.

Buying tips & gotchas

When purchasing an Arduino Mini, be aware that many variants exist, often differing in the microcontroller (ATmega168 vs. ATmega328) or voltage tolerance (3.3V vs. 5V logic). Always check the specific specifications of the board you are buying. Clones are common and generally work well, but ensure they use standard pinouts. You will absolutely need an external USB-to-serial converter for programming, so factor that into your purchase. Accessories like small breadboards, jumper wires, and appropriate power supplies are essential for getting started.