Arduino Diecimila: The Classic 5V AVR Board for Beginners
The Arduino Diecimila, a foundational 5V board, brought AVR microcontrollers to the masses with its user-friendly design and robust features.
The Arduino Diecimila, released around 2007, was a significant step forward in the Arduino platform's evolution. It was one of the first boards to adopt the now-familiar form factor and features that would define many subsequent Arduino models. Designed to be accessible to artists, designers, hobbyists, and students, it simplified the process of interacting with microcontrollers, abstracting away much of the complexity of traditional embedded development.
At its heart, the Diecimila is powered by an Atmel ATmega168 microcontroller. This 8-bit AVR RISC processor boasts a decent amount of flash memory for code storage, SRAM for variables, and a set of peripherals including ADCs, timers for PWM, and hardware serial communication. The Diecimila operates at a standard 5V logic level, making it compatible with a wide range of 5V sensors and modules that were common at the time of its release.
Positioned as an upgrade from the earlier Arduino NG and Extreme boards, the Diecimila introduced improvements such as a more robust USB interface (using the FTDI FT232RL chip for USB-to-serial conversion, replacing the previous ATmega8U2 used for USB on some earlier models) and a more streamlined power regulation system. This made it easier to power and program, cementing its role as a go-to board for educational purposes and introductory embedded projects.
The Diecimila is an excellent choice for beginners looking to learn the fundamentals of electronics and programming with a physical computing platform. Its 5V operating voltage simplifies interfacing with many common components, and its straightforward pinout makes it easy to understand and use. It's well-suited for projects involving basic sensor reading, controlling LEDs and motors, and communicating with other devices via serial.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Atmel ATmega168 |
| Architecture | 8-bit AVR RISC |
| Clock speed | 16 MHz |
| Flash / Storage | 16 KB (ATmega168) |
| RAM / SRAM | 1 KB (ATmega168) |
| Operating voltage | 5V |
| Digital I/O pins | 14 (of which 6 can provide PWM output) |
| Analog / ADC | 6 analog input pins (10-bit ADC) |
| PWM | 6 pins (3, 5, 6, 9, 10, 11) |
| Connectivity | โ |
| USB | FTDI FT232RL for USB-to-serial communication |
| Power input | 7-12V recommended via DC barrel jack or 5V via USB/pin |
| Dimensions | Approx. 68.6mm x 53.3mm (2.7in x 2.1in) |
Pinout & pin functions
| Pin | Function |
|---|---|
| 5V | Power output (regulated 5V) |
| 3.3V | Power output (regulated 3.3V, derived from onboard regulator) |
| GND | Ground |
| GND | Ground |
| AREF | Analog Reference voltage |
| Reset | Resets the microcontroller |
| D0 (RX) | Digital I/O, UART receive |
| D1 (TX) | Digital I/O, UART 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 | Digital I/O, PWM, SPI SS |
| D11 | Digital I/O, PWM, SPI MOSI |
| D12 | Digital I/O, SPI MISO |
| D13 | Digital I/O, LED on board, SPI SCK |
| 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, I2C SDA |
| A5 | Analog Input, Digital I/O, I2C SCL |
| Vin | Power input (7-12V recommended) |
Wiring & circuit basics
Powering the Arduino Diecimila can be done via its USB connection or through the DC barrel jack. When using the barrel jack, a voltage between 7V and 12V is recommended. The board has an onboard voltage regulator that steps this down to 5V for the microcontroller and other components. Avoid supplying more than 12V, as this can overheat the regulator. If powering via USB, ensure the USB port can supply sufficient current, typically 500mA. Connecting external power sources directly to the 5V pin is generally not recommended unless you are certain of the voltage and current regulation, as it bypasses the onboard regulator.
The Diecimila operates at a 5V logic level. This means that digital HIGH signals are typically 5V and LOW signals are 0V. When interfacing with components that operate at different logic levels (e.g., 3.3V sensors), a logic level shifter is necessary to prevent damage to either the Arduino or the sensor. For example, connecting a 3.3V I2C sensor directly to the Diecimila's A4 (SDA) and A5 (SCL) pins could damage the sensor if the Arduino's 5V output is applied to its input.
A simple example circuit is lighting an LED. Connect the anode (longer leg) of an LED to a digital pin, such as D13 (which also has an onboard LED connected). Connect the cathode (shorter leg) of the LED through a current-limiting resistor (typically 220-330 ohms for standard LEDs with 5V) to a GND pin. When D13 is set to HIGH (5V), current flows through the resistor and LED, illuminating it. The resistor is crucial to prevent excessive current from burning out the LED or damaging the Arduino's output pin.
Programming & getting started
The primary toolchain for the Arduino Diecimila is the Arduino IDE. Download the latest version from the official Arduino website. Once installed, connect the Diecimila to your computer via USB. The Arduino IDE will typically detect the board and the COM port automatically. Navigate to Tools > Board and select 'Arduino Diecimila (ATmega168)'. Then, go to Tools > Port and select the COM port assigned to your Arduino. To upload your first program, open the 'Blink' example sketch (File > Examples > 01.Basics > Blink), verify it (checkmark icon), and then click the Upload button (right arrow icon).
For more advanced users or those interested in alternative environments, PlatformIO is a popular choice. It offers a more robust development experience with features like code completion, debugging, and project management, supporting the ATmega168. While MicroPython and CircuitPython are generally targeted at boards with more memory and processing power (like ESP32 or SAMD-based Arduinos), they are not directly supported on the ATmega168-based Diecimila due to its limited resources.