MakerLab
ArduinoArduino Extreme

Arduino Extreme: The Powerhouse of Early Arduino

An early, powerful Arduino board with an ATmega128 processor, offering more memory and I/O for ambitious projects.

Arduino Extreme

The Arduino Extreme was a significant board in the early evolution of the Arduino platform, released around 2005. It was designed to provide more processing power and memory than the original Arduino boards, which were based on smaller microcontrollers like the ATmega8. This made it suitable for more complex applications that required handling larger datasets or running more sophisticated algorithms.

At the heart of the Arduino Extreme is the Atmel ATmega128 microcontroller. This 8-bit AVR RISC processor boasts a substantial 128 KB of Flash memory for program storage and 4 KB of SRAM for data. This was considerably more than its predecessors, allowing for larger, more feature-rich programs and the ability to manage more variables and complex data structures. The ATmega128 also features a wider range of peripherals, including more timers, communication interfaces, and analog-to-digital converter channels.

Positioned as a higher-end option within the early Arduino family, the Extreme board offered a bridge towards more professional embedded development while retaining the ease of use that defined Arduino. It appealed to advanced hobbyists, students in engineering programs, and even professionals looking for a rapid prototyping platform that could handle more demanding tasks. Its expanded I/O capabilities and memory made it a go-to for projects involving data logging, custom sensor interfaces, or early forms of networked communication.

The Arduino Extreme's legacy is one of pushing the boundaries of what was possible with the Arduino ecosystem at the time. While newer boards have since surpassed its raw specifications, the Extreme demonstrated the potential for accessible, yet powerful, microcontroller development. It fostered innovation by enabling projects that were previously constrained by limited memory or processing power, paving the way for the diverse range of Arduino boards available today.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCAtmel ATmega128
Architecture8-bit AVR RISC
Clock speed16 MHz
Flash / Storage128 KB
RAM / SRAM4 KB
Operating voltage5V
Digital I/O pins53
Analog / ADC8 channels (10-bit)
PWM6 channels
ConnectivityUART (2), SPI, I2C
USBNone (requires external programmer or serial adapter)
Power input7-12V DC via barrel jack or Vin pin
DimensionsApprox. 101mm x 53mm (standard Arduino shield form factor)

Pinout & pin functions

PinFunction
GNDGround
GNDGround
5VPower output (regulated)
3.3VPower output (regulated)
AREFAnalog Reference voltage
RESETSystem Reset
D0 (RX0)Digital Input/Output, UART RX (Serial communication receive)
D1 (TX0)Digital Input/Output, UART TX (Serial communication transmit)
D2Digital Input/Output
D3Digital Input/Output, PWM
D4Digital Input/Output
D5Digital Input/Output, PWM
D6Digital Input/Output, PWM
D7Digital Input/Output
D8Digital Input/Output
D9Digital Input/Output, PWM
D10 (SS)Digital Input/Output, SPI Slave Select
D11 (MOSI)Digital Input/Output, SPI Master Out Slave In
D12 (MISO)Digital Input/Output, SPI Master In Slave Out
D13 (SCK)Digital Input/Output, SPI Serial Clock
A0Analog Input, Digital Input/Output
A1Analog Input, Digital Input/Output
A2Analog Input, Digital Input/Output
A3Analog Input, Digital Input/Output
A4 (SDA)Analog Input, Digital Input/Output, I2C Serial Data
A5 (SCL)Analog Input, Digital Input/Output, I2C Serial Clock
A6Analog Input, Digital Input/Output
A7Analog Input, Digital Input/Output
D14 (RX1)Digital Input/Output, UART RX (Serial communication receive)
D15 (TX1)Digital Input/Output, UART TX (Serial communication transmit)
D16Digital Input/Output
D17Digital Input/Output
D18Digital Input/Output
D19Digital Input/Output
D20Digital Input/Output
D21Digital Input/Output
D22Digital Input/Output
D23Digital Input/Output
D24Digital Input/Output
D25Digital Input/Output
D26Digital Input/Output
D27Digital Input/Output
D28Digital Input/Output
D29Digital Input/Output
D30Digital Input/Output
D31Digital Input/Output
D32Digital Input/Output
D33Digital Input/Output
D34Digital Input/Output
D35Digital Input/Output
D36Digital Input/Output
D37Digital Input/Output
D38Digital Input/Output
D39Digital Input/Output
D40Digital Input/Output
D41Digital Input/Output
D42Digital Input/Output
D43Digital Input/Output
D44Digital Input/Output
D45Digital Input/Output
D46Digital Input/Output
D47Digital Input/Output
D48Digital Input/Output
D49Digital Input/Output
D50Digital Input/Output
D51Digital Input/Output
D52Digital Input/Output
D53Digital Input/Output

Wiring & circuit basics

The Arduino Extreme operates at a 5V logic level. When connecting external components, ensure they are compatible with 5V or use a level shifter if interfacing with 3.3V devices. Power can be supplied via the DC barrel jack (7-12V recommended) or the Vin pin. The onboard voltage regulator will step this down to 5V for the board and connected components. Avoid applying more than 12V to prevent overheating the regulator. Ensure your power supply can provide sufficient current, typically at least 500mA for most projects, more if driving many peripherals or motors.

Connecting an LED is a fundamental starting point. Connect the longer leg (anode) of the LED to a digital I/O pin (e.g., D13) and the shorter leg (cathode) through a current-limiting resistor (typically 220-330 ohms for a standard 5V LED) to a GND pin. This prevents the LED from drawing too much current and burning out. The resistor value can be calculated using Ohm's Law (R = (Vcc - Vf) / If, where Vcc is 5V, Vf is the LED's forward voltage, and If is the desired forward current).

For I2C communication, use pins A4 for SDA (Serial Data) and A5 for SCL (Serial Clock). These pins are multiplexed with analog inputs but function as digital I/O for I2C. When connecting an I2C sensor, remember that both SDA and SCL lines require pull-up resistors (typically 4.7k ohms) to the 5V supply. The Arduino Extreme's ATmega128 has hardware support for I2C, making communication with multiple devices on the same bus efficient.

Programming & getting started

The primary toolchain for the Arduino Extreme is the Arduino IDE, which supports C/C++ programming. You will need an external programmer, such as an AVR-ISP programmer, or a USB-to-serial adapter (like an FTDI breakout board) connected to the board's serial pins (RX/TX) to upload code, as the Extreme lacks onboard USB-to-serial conversion. Download and install the latest Arduino IDE, select the 'Arduino Mega 128' board (or a similar ATmega128-based board if not listed explicitly) from the board manager, choose the correct COM port for your programmer/adapter, and upload your sketch.

To upload your first program (a 'Blink' sketch), connect your programmer or USB-to-serial adapter. Wire the adapter's TX to the Arduino's RX pin (e.g., D0) and the adapter's RX to the Arduino's TX pin (e.g., D1). Connect the adapter's GND to the Arduino's GND. Then, connect the programmer's ICSP header to the Arduino's ICSP header. Open the Arduino IDE, paste the Blink sketch, select the correct board and port, and click the Upload button. You should see the built-in LED (often connected to D13) blink.

Project ideas

Advanced Data LoggerUtilize the ATmega128's large Flash memory and multiple UARTs to log data from various sensors over extended periods. Connect sensors via I2C or SPI and store data to an SD card module interfaced through SPI. This project teaches data management, file systems, and advanced peripheral usage.
Custom CNC ControllerLeverage the numerous digital I/O pins and PWM capabilities to control stepper motors and spindle speed for a DIY CNC machine. This project involves precise timing, motor control libraries, and understanding G-code interpretation.
Robotic Arm ControlDrive multiple servo motors using the PWM outputs and read feedback from potentiometers or encoders using the ADC pins to create a programmable robotic arm. This project focuses on kinematics, servo control, and closed-loop feedback systems.
Home Automation HubIntegrate various sensors (temperature, humidity, light) and actuators (relays for lights, fans) using I2C, SPI, and digital I/O. Add a basic Ethernet shield (if compatible) or use multiple UARTs for wireless modules to create a central control point.
Complex Audio SynthesizerWith its ample memory, the ATmega128 can handle more complex audio generation. Experiment with direct digital synthesis or sample playback using external DACs and control interfaces, exploring digital signal processing concepts.
Educational PLC (Programmable Logic Controller)Build a simplified PLC for industrial automation training. Use robust I/O handling, multiple serial ports for communication, and the large memory to implement ladder logic or state machine programs for controlling simulated industrial processes.

Buying tips & gotchas

When purchasing an Arduino Extreme, be aware that it's an older board, and finding new ones might be difficult. Look for used boards or kits from reputable sellers. Beware of clones that might not have the exact same pinout or specifications. Accessories like external AVR programmers (e.g., USBasp, AVRISP mkII) or USB-to-serial adapters (FTDI, CH340) are essential for uploading code. Ensure your power supply is adequate, as the ATmega128 can draw more current than smaller Arduinos. Always double-check pinouts and voltage levels before connecting components to avoid damage.