- All products
- Communication & IoT
- Ethernet
- Ethernet Network Module ENC28J60 (Big)
- Ethernet
Features
- Provides wired Ethernet connectivity for microcontrollers.
- Based on the Microchip ENC28J60 Ethernet controller.
- Communicates with the host controller through the SPI interface.
- Compatible with Arduino and other SPI-based microcontroller platforms.
- Suitable for AVR, LPC, STM, and other compatible microcontrollers.
- Operates from a 3.3V supply with 5V-tolerant digital interface lines according to the supplied module specifications.
- Supports basic embedded web server applications.
- Can be used for network ping and communication applications.
- Integrated RJ45 Ethernet connector with magnetics.
- 25 MHz crystal oscillator for the Ethernet controller.
- Compact PCB suitable for embedded networking projects.
Principle of Operation
The ENC28J60 is a standalone Ethernet controller that provides the hardware interface required for communication over a standard Ethernet network. The microcontroller communicates with the ENC28J60 using the SPI bus.

Through SPI, the host microcontroller can configure the Ethernet controller, transmit network packets, and receive incoming packets. Software libraries such as EtherCard provide the higher-level functions required for network communication, including DHCP, DNS lookup, HTTP requests, and web server functionality.
The Ethernet cable is connected through the onboard RJ45 connector, while the ENC28J60 handles the physical Ethernet communication and packet transfer.
Applications
- Arduino-based Ethernet web servers
- Wired home automation systems
- Internet-connected sensors and controllers
- Network monitoring and diagnostics
- Embedded web interfaces
- Remote equipment monitoring
- IoT and industrial control prototypes
- Network-enabled Arduino projects
- Educational networking projects
- Microcontroller-based Ethernet communication
Pinout

| ENC28J60 Pin | Arduino Pin | Function |
|---|---|---|
| +5V | 5V | Power supply input; module implementation should be verified before applying 5V |
| GND | GND | Ground connection |
| INT | NC | Interrupt output |
| CLK | NC | Clock output |
| SO | MISO / D12 | SPI data output from ENC28J60 |
| WOL | NC | Wake-on-LAN related pin |
| SCK | SCK / D13 | SPI clock |
| SI | MOSI / D11 | SPI data input to ENC28J60 |
| RST | NC | Reset input |
| CS | SS / D8 or D10 | SPI chip-select input |
| Q3 | NC | Module-specific 3.3V-related connection; normally left unused |
Wiring
The ENC28J60 communicates with an Arduino through the SPI bus. On a standard Arduino Uno, the SPI pins are D11 (MOSI), D12 (MISO), and D13 (SCK). The CS pin can be assigned to a suitable digital pin, commonly D8 or D10 depending on the library and software configuration.

| ENC28J60 | Arduino Uno |
|---|---|
| +5V | 5V, only if supported by the specific module |
| GND | GND |
| SO | D12 / MISO |
| SCK | D13 / SCK |
| SI | D11 / MOSI |
| CS | D8 or D10, according to software configuration |
| INT | NC for basic applications |
| RST | NC for basic applications |
Important: The ENC28J60 IC itself operates at 3.3V. Different ENC28J60 breakout boards use different onboard regulator and level-shifting arrangements. Verify the exact module version before connecting its power and digital interface to a 5V Arduino.
Arduino Library
The EtherCard library can be used to communicate with the ENC28J60 from Arduino. Install the library through the Arduino IDE before compiling the example below.
In the Arduino IDE, open Sketch → Include Library → Manage Libraries, search for EtherCard, and install the available library.
Arduino Example
#include "EtherCard.h"
static byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 };
byte Ethernet::buffer[700];
static uint32_t timer;
const char website[] PROGMEM = "[www.google.com](http://www.google.com)";
static void my_callback(byte status, word off, word len) {
Serial.println("Response:");
Ethernet::buffer[off + 300] = 0;
Serial.println((const char*) Ethernet::buffer + off);
}
void setup() {
Serial.begin(57600);
if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)
Serial.println("Ethernet controller not found");
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
ether.printIp("IP: ", ether.myip);
ether.printIp("Gateway: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
if (!ether.dnsLookup(website))
Serial.println("DNS lookup failed");
ether.printIp("Server: ", ether.hisip);
}
void loop() {
ether.packetLoop(ether.packetReceive());
if (millis() > timer) {
timer = millis() + 5000;
```
ether.browseUrl("/foo/", "bar", website, my_callback);
```
}
}
Specifications
| Product Name | ENC28J60 Ethernet Network Module |
| Controller IC | Microchip ENC28J60 |
| Network Interface | HR911105A RJ45 connector with integrated magnetics |
| Communication Interface | SPI |
| Supply Voltage | 3.3V at the ENC28J60 IC; module input depends on board implementation |
| Digital Interface | 5V-tolerant digital lines according to supplied module specifications |
| Crystal Frequency | 25 MHz |
| Compatible Controllers | Arduino, AVR, LPC, STM, and other SPI-compatible microcontrollers |
| Network Connection | RJ45 Ethernet |
| Board Dimensions | Approximately 58 × 34 × 17 mm |
Resources
- Microchip ENC28J60 Ethernet Controller Datasheet: https://ww1.microchip.com/downloads/en/devicedoc/39662b.pdf
- EtherCard Arduino Library – GitHub: https://github.com/njh/EtherCard
Features
- Provides wired Ethernet connectivity for microcontrollers.
- Based on the Microchip ENC28J60 Ethernet controller.
- Communicates with the host controller through the SPI interface.
- Compatible with Arduino and other SPI-based microcontroller platforms.
- Suitable for AVR, LPC, STM, and other compatible microcontrollers.
- Operates from a 3.3V supply with 5V-tolerant digital interface lines according to the supplied module specifications.
- Supports basic embedded web server applications.
- Can be used for network ping and communication applications.
- Integrated RJ45 Ethernet connector with magnetics.
- 25 MHz crystal oscillator for the Ethernet controller.
- Compact PCB suitable for embedded networking projects.
Principle of Operation
The ENC28J60 is a standalone Ethernet controller that provides the hardware interface required for communication over a standard Ethernet network. The microcontroller communicates with the ENC28J60 using the SPI bus.

Through SPI, the host microcontroller can configure the Ethernet controller, transmit network packets, and receive incoming packets. Software libraries such as EtherCard provide the higher-level functions required for network communication, including DHCP, DNS lookup, HTTP requests, and web server functionality.
The Ethernet cable is connected through the onboard RJ45 connector, while the ENC28J60 handles the physical Ethernet communication and packet transfer.
Applications
- Arduino-based Ethernet web servers
- Wired home automation systems
- Internet-connected sensors and controllers
- Network monitoring and diagnostics
- Embedded web interfaces
- Remote equipment monitoring
- IoT and industrial control prototypes
- Network-enabled Arduino projects
- Educational networking projects
- Microcontroller-based Ethernet communication
Pinout

| ENC28J60 Pin | Arduino Pin | Function |
|---|---|---|
| +5V | 5V | Power supply input; module implementation should be verified before applying 5V |
| GND | GND | Ground connection |
| INT | NC | Interrupt output |
| CLK | NC | Clock output |
| SO | MISO / D12 | SPI data output from ENC28J60 |
| WOL | NC | Wake-on-LAN related pin |
| SCK | SCK / D13 | SPI clock |
| SI | MOSI / D11 | SPI data input to ENC28J60 |
| RST | NC | Reset input |
| CS | SS / D8 or D10 | SPI chip-select input |
| Q3 | NC | Module-specific 3.3V-related connection; normally left unused |
Wiring
The ENC28J60 communicates with an Arduino through the SPI bus. On a standard Arduino Uno, the SPI pins are D11 (MOSI), D12 (MISO), and D13 (SCK). The CS pin can be assigned to a suitable digital pin, commonly D8 or D10 depending on the library and software configuration.

| ENC28J60 | Arduino Uno |
|---|---|
| +5V | 5V, only if supported by the specific module |
| GND | GND |
| SO | D12 / MISO |
| SCK | D13 / SCK |
| SI | D11 / MOSI |
| CS | D8 or D10, according to software configuration |
| INT | NC for basic applications |
| RST | NC for basic applications |
Important: The ENC28J60 IC itself operates at 3.3V. Different ENC28J60 breakout boards use different onboard regulator and level-shifting arrangements. Verify the exact module version before connecting its power and digital interface to a 5V Arduino.
Arduino Library
The EtherCard library can be used to communicate with the ENC28J60 from Arduino. Install the library through the Arduino IDE before compiling the example below.
In the Arduino IDE, open Sketch → Include Library → Manage Libraries, search for EtherCard, and install the available library.
Arduino Example
#include "EtherCard.h"
static byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 };
byte Ethernet::buffer[700];
static uint32_t timer;
const char website[] PROGMEM = "[www.google.com](http://www.google.com)";
static void my_callback(byte status, word off, word len) {
Serial.println("Response:");
Ethernet::buffer[off + 300] = 0;
Serial.println((const char*) Ethernet::buffer + off);
}
void setup() {
Serial.begin(57600);
if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)
Serial.println("Ethernet controller not found");
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
ether.printIp("IP: ", ether.myip);
ether.printIp("Gateway: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
if (!ether.dnsLookup(website))
Serial.println("DNS lookup failed");
ether.printIp("Server: ", ether.hisip);
}
void loop() {
ether.packetLoop(ether.packetReceive());
if (millis() > timer) {
timer = millis() + 5000;
```
ether.browseUrl("/foo/", "bar", website, my_callback);
```
}
}Specifications
| Product Name | ENC28J60 Ethernet Network Module |
| Controller IC | Microchip ENC28J60 |
| Network Interface | HR911105A RJ45 connector with integrated magnetics |
| Communication Interface | SPI |
| Supply Voltage | 3.3V at the ENC28J60 IC; module input depends on board implementation |
| Digital Interface | 5V-tolerant digital lines according to supplied module specifications |
| Crystal Frequency | 25 MHz |
| Compatible Controllers | Arduino, AVR, LPC, STM, and other SPI-compatible microcontrollers |
| Network Connection | RJ45 Ethernet |
| Board Dimensions | Approximately 58 × 34 × 17 mm |
Resources
- Microchip ENC28J60 Ethernet Controller Datasheet: https://ww1.microchip.com/downloads/en/devicedoc/39662b.pdf
- EtherCard Arduino Library – GitHub: https://github.com/njh/EtherCard

