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.
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 / SoC | Atmel ATmega168 |
| Architecture | 8-bit AVR RISC |
| Clock speed | 16 MHz |
| Flash / Storage | 32 KB (2 KB used by bootloader) |
| RAM / SRAM | 1 KB |
| EEPROM | 512 Bytes |
| Operating voltage | 3.3V or 5V (depending on board variant and power source) |
| Digital I/O pins | 14 (of which 6 can be used as PWM outputs) |
| Analog / ADC | 8 (10-bit resolution) |
| PWM | 6 pins (on ATmega168: PD3, PD5, PD6, PB3, PB4, PB0) |
| Connectivity | UART, SPI, I2C |
| USB | None onboard (requires external USB-to-serial converter) |
| Power input | External 5V or 7-12V via VIN pin (regulated onboard if using 7-12V) |
| Dimensions | Approx. 30mm x 18mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| GND | Ground |
| GND | Ground |
| AREF | Analog Reference Voltage |
| A0 | Analog Input / Digital I/O |
| A1 | Analog Input / Digital I/O |
| A2 | Analog Input / Digital I/O |
| A3 | Analog Input / Digital I/O |
| A4 | Analog Input / Digital I/O (SDA for I2C) |
| A5 | Analog Input / Digital I/O (SCL for I2C) |
| D0 (RX) | Digital I/O (Serial Receive) |
| D1 (TX) | Digital I/O (Serial Transmit) |
| D2 | Digital I/O |
| D3 | Digital I/O (PWM) |
| D4 | Digital I/O |
| D5 | Digital I/O (PWM) |
| D6 | Digital I/O (PWM) |
| D7 | Digital I/O |
| D8 | Digital I/O |
| D9 | Digital 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) |
| RESET | Reset pin |
| RAW / VIN | Unregulated power input (7-12V) |
| 5V | Regulated 5V output (if using VIN) or Input if using external 5V supply |
| 3V3 | 3.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.