MakerLab
ArduinoArduino Diecimila

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.

Arduino Diecimila

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 / SoCAtmel ATmega168
Architecture8-bit AVR RISC
Clock speed16 MHz
Flash / Storage16 KB (ATmega168)
RAM / SRAM1 KB (ATmega168)
Operating voltage5V
Digital I/O pins14 (of which 6 can provide PWM output)
Analog / ADC6 analog input pins (10-bit ADC)
PWM6 pins (3, 5, 6, 9, 10, 11)
Connectivityโ€”
USBFTDI FT232RL for USB-to-serial communication
Power input7-12V recommended via DC barrel jack or 5V via USB/pin
DimensionsApprox. 68.6mm x 53.3mm (2.7in x 2.1in)

Pinout & pin functions

PinFunction
5VPower output (regulated 5V)
3.3VPower output (regulated 3.3V, derived from onboard regulator)
GNDGround
GNDGround
AREFAnalog Reference voltage
ResetResets the microcontroller
D0 (RX)Digital I/O, UART receive
D1 (TX)Digital I/O, UART 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
D10Digital I/O, PWM, SPI SS
D11Digital I/O, PWM, SPI MOSI
D12Digital I/O, SPI MISO
D13Digital I/O, LED on board, SPI SCK
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, I2C SDA
A5Analog Input, Digital I/O, I2C SCL
VinPower 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.

Project ideas

Simple LED ControlControl an LED with a button press. This project uses a digital input pin for the button and a digital output pin for the LED, teaching basic digital I/O and debouncing techniques.
Temperature MonitoringRead temperature from a waterproof DS18B20 sensor using its 1-Wire protocol. This utilizes a digital pin and introduces the concept of custom communication protocols and external sensor integration.
Basic RoboticsDrive two small DC motors using L298N motor driver modules. This involves using PWM pins to control motor speed and digital pins for direction, a stepping stone into mechatronics.
I2C LCD DisplayInterface with a 16x2 I2C LCD display to show sensor readings or status messages. This project uses the I2C pins (SDA/SCL) and teaches serial communication protocols for display output.
Simple Alarm SystemBuild a basic alarm by connecting a PIR motion sensor and a buzzer. The PIR sensor triggers an interrupt or polls a digital pin, activating the buzzer via another digital output pin, demonstrating event-driven logic.
Automated Plant WateringUse a soil moisture sensor to detect dryness and activate a small water pump via a relay module. This project combines analog sensor input with digital output control for a practical automation task.

Buying tips & gotchas

When purchasing an Arduino Diecimila, be aware that it is an older model. Official 'Made in Italy' boards are collectible but can be expensive. Many 'clones' exist, often manufactured in China, which are functionally identical and much cheaper. These clones typically use the same ATmega168 and FTDI USB-to-serial chip. A common pitfall is using 3.3V components directly with the 5V Diecimila without level shifting, which can lead to damage. Ensure you have a reliable 5V power supply or a suitable 7-12V adapter for the barrel jack. Accessories like breadboards, jumper wires, LEDs, resistors, and basic sensors are essential for getting started.