Arduino Leonardo ETH: Networking Power for Your Projects
The Arduino Leonardo ETH combines the versatility of the Leonardo with built-in Ethernet connectivity, ideal for connected embedded projects.
The Arduino Leonardo ETH is a powerful microcontroller board that bridges the gap between simple Arduino projects and more complex networked applications. It's based on the ATmega32U4 microcontroller, the same chip found on the popular Arduino Leonardo, which offers native USB capabilities. This means the Leonardo ETH can act as a USB Human Interface Device (HID), such as a keyboard or mouse, directly without needing a separate chip. What sets the ETH apart is the integrated Wiznet W5500 Ethernet controller, providing a robust and easy-to-use wired network interface.
At its core, the Arduino Leonardo ETH features the Atmel ATmega32U4, a 8-bit AVR microcontroller. This chip is notable for its integrated USB 2.0 Full Speed functionality, which simplifies USB communication and allows the board to present itself as a virtual serial port or a HID device. The ATmega32U4 runs at a clock speed of 16 MHz, providing sufficient processing power for a wide range of embedded tasks. The board also includes the Wiznet W5500 chip, a hardware TCP/IP embedded Ethernet controller that supports 10/100 Base-T networks.
Positioned within the Arduino family, the Leonardo ETH builds upon the strengths of the original Leonardo by adding native Ethernet connectivity. This makes it a compelling choice for makers and engineers looking to create projects that can communicate over a local network or the internet, such as IoT devices, remote monitoring systems, or network-controlled robots. It's particularly well-suited for applications where a stable, wired connection is preferred over Wi-Fi, or where the simplicity of the Arduino IDE and its libraries is a key requirement.
Released around 2016, the Arduino Leonardo ETH was designed to meet the growing demand for connected devices within the maker community. Its combination of a capable microcontroller with on-board networking makes it an accessible platform for learning about embedded systems, networking protocols, and building more sophisticated projects. It appeals to hobbyists, students, and professional engineers who need a reliable, off-the-shelf solution for wired network communication without the complexity of external shields or advanced network configurations.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Atmel ATmega32U4 and Wiznet W5500 Ethernet Controller |
| Architecture | 8-bit AVR |
| Clock speed | 16 MHz |
| Flash / Storage | 32 KB (ATmega32U4) |
| RAM / SRAM | 2.5 KB (ATmega32U4) |
| Operating voltage | 5V |
| Digital I/O pins | 7 (of which 4 can be used as PWM outputs) |
| Analog / ADC | 12 analog inputs (on pins A0-A5, D0-D5) |
| PWM | 4 pins (3, 5, 6, 9, 10, 11, 13) - Note: some pins are shared with other functions, actual PWM count depends on usage. |
| Connectivity | 10/100 Mbps Ethernet (RJ45 connector) |
| USB | Micro-USB connector (for programming and power) |
| Power input | Via Micro-USB or 5V pin |
| Dimensions | 73.5 mm x 53.3 mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| GND | Ground |
| 5V | 5V Power Output |
| VCC | 5V Power Input (if not using USB) |
| RST | Reset Pin |
| D0 (RX) | Digital I/O, UART Receive |
| D1 (TX) | Digital I/O, UART Transmit |
| D2 | Digital I/O |
| D3 (PWM) | Digital I/O, PWM Output |
| D4 | Digital I/O |
| D5 (PWM) | Digital I/O, PWM Output |
| D6 (PWM) | Digital I/O, PWM Output |
| D7 | Digital I/O |
| D8 | Digital I/O |
| D9 (PWM) | Digital I/O, PWM Output |
| D10 (PWM, SS) | Digital I/O, PWM Output, SPI Slave Select |
| D11 (PWM, MOSI) | Digital I/O, PWM Output, SPI Master Out Slave In |
| D12 (MISO) | Digital I/O, SPI Master In Slave Out |
| D13 (SCK) | Digital I/O, PWM Output, SPI Clock |
| 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 (SDA) | Analog Input, Digital I/O, I2C Serial Data |
| A5 (SCL) | Analog Input, Digital I/O, I2C Serial Clock |
| AREF | Analog Reference Voltage |
| Ethernet Port | RJ45 Connector (for 10/100 Mbps Ethernet) |
| Micro-USB Port | For programming and power |
Wiring & circuit basics
Powering the Arduino Leonardo ETH is straightforward. You can supply power via the Micro-USB port, which is convenient for development and testing. Alternatively, you can use the 5V pin if you have a regulated 5V power supply. It's crucial to ensure your power source can provide sufficient current, typically at least 500mA, especially when using the Ethernet port which can draw more power. Avoid powering the board directly from a computer's USB port if you are running power-hungry peripherals, as it may not provide enough current. The board has onboard voltage regulation, so you can also supply a higher voltage (e.g., 7-12V) to the VIN pin if available on some variants, though the Leonardo ETH typically relies on USB or 5V input.
When connecting external components, always be mindful of the logic levels. The Arduino Leonardo ETH operates at 5V. This means sensors, LEDs, and other digital components should also be 5V-tolerant or designed to work with 5V logic. If you need to connect a 3.3V device, you will likely need a logic level converter to prevent damage to the 3.3V component or ensure the 3.3V device can safely accept 5V input. For example, to light up an LED, connect its anode to a digital pin (e.g., D3) through a current-limiting resistor (around 220-330 ohms) and its cathode to a GND pin. To read a sensor like an I2C device, connect its SDA pin to A4 (SDA) and its SCL pin to A5 (SCL), ensuring both the sensor and the Arduino share a common GND.
For a concrete example, let's wire an Ethernet-enabled web server. You'll need the Arduino Leonardo ETH, an Ethernet cable connected to your router, and a power supply. Connect the Ethernet cable to the RJ45 port on the board. Power the board via the Micro-USB port. Once programmed, the board will obtain an IP address from your router and can be accessed from any device on the same network using its IP address. This setup requires no additional wiring for basic network communication, demonstrating the board's integrated connectivity advantage.
Programming & getting started
The primary toolchain for the Arduino Leonardo ETH is the Arduino IDE. Download and install the latest version from the official Arduino website. Once installed, you'll need to add support for the Leonardo ETH board. Go to File > Preferences and add the following URL to the 'Additional Boards Manager URLs': `https://downloads.arduino.cc/packages/package_arduino_beta_index.json` (or the relevant URL for official board support if available). Then, go to Tools > Board > Boards Manager, search for 'Arduino AVR Boards' and install it. Select 'Arduino Leonardo' from the Tools > Board menu (as the ETH shares the same core microcontroller). Connect the board via Micro-USB, select the correct COM port from Tools > Port, and upload your first sketch, such as the 'Blink' example, to verify the setup.
For more advanced networking projects, libraries like the Ethernet library (included with the Arduino IDE) are essential for interacting with the Wiznet W5500 chip. This library provides functions for setting up the network connection, sending and receiving data via TCP or UDP, and handling network events. You can also explore libraries for web servers, HTTP clients, and more to build sophisticated internet-connected applications. PlatformIO is another excellent option for managing projects and dependencies, offering a more robust development environment for complex Arduino projects.