Arduino - Ethernet Module

This tutorial shows you how to use the Arduino and Ethenet module to connect to the Internet or your LAN network. Here's what we'll cover:

Arduino Ethernet

Hardware Required

1×Arduino Uno
1×USB 2.0 cable type A/B
1×W5500 Ethernet Module
1×Ethernet Cable
1×Jumper Wires
1×Breadboard
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Recommended) Breadboard Shield For Arduino Uno
1×(Recommended) Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Please note: These are Amazon affiliate links. If you buy the components through these links, We will get a commission at no extra cost to you. We appreciate it.

About W5500 Ethernet module

The W5500 Ethernet module has two ways to connect:

  • RJ45 Ethernet Interface: Use an Ethernet cable to connect to a router or switch.
  • SPI Interface: Use this to connect to an Arduino board. It has 10 pins. These pin need to be connected to Arduino as below table:
Ethenet Module Pins Arduino Pins
NC pin NOT connected
INT pin NOT connected
RST pin Reset pin
GND pin GND pin
5V pin 5V pin
3.3V pin NOT connected
MISO pin 12 (MISO)
MOSI pin 11 (MOSI)
SCS pin 10 (SS)
SCLK pin 13 (SCK)
Ethernet module pinout
image source: diyables.io

Wiring Diagram between Arduino and W5500 Ethernet module

Arduino Ethernet module Wiring Diagram

This image is created using Fritzing. Click to enlarge image

The below is real connection between Arduino and W5500 Ethernet module

Arduino Ethernet module connection

Arduino code for Ethernet Module - Making HTTP request via Ethernet

This code acts as a web client. It sends HTTP requests to the web server located at http://example.com/.

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-ethernet-module */ #include <SPI.h> #include <Ethernet.h> // replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; EthernetClient client; int HTTP_PORT = 80; String HTTP_METHOD = "GET"; // or POST char HOST_NAME[] = "example.com"; String PATH_NAME = "/"; void setup() { Serial.begin(9600); delay(1000); Serial.println("Arduino - Ethernet Tutorial"); // initialize the Ethernet shield using DHCP: if (Ethernet.begin(mac) == 0) { Serial.println("Failed to obtaining an IP address"); // check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("Ethernet shield was not found"); // check for Ethernet cable if (Ethernet.linkStatus() == LinkOFF) Serial.println("Ethernet cable is not connected."); while (true) ; } // connect to web server on port 80: if (client.connect(HOST_NAME, HTTP_PORT)) { // if connected: Serial.println("Connected to server"); // make a HTTP request: // send HTTP header client.println(HTTP_METHOD + " " + PATH_NAME + " HTTP/1.1"); client.println("Host: " + String(HOST_NAME)); client.println("Connection: close"); client.println(); // end HTTP header while (client.connected()) { if (client.available()) { // read an incoming byte from the server and print it to serial monitor: char c = client.read(); Serial.print(c); } } // the server's disconnected, stop the client: client.stop(); Serial.println(); Serial.println("disconnected"); } else { // if not connected: Serial.println("connection failed"); } } void loop() { }

Quick Steps

Please follow these steps one by one:

  • Connect the Ethernet module to your Arduino as shown in the diagram provided.
  • Use an Ethernet cable to connect the Ethernet module to your router or switch.
  • Use a USB cable to connect the Arduino board to your computer.
  • Open the Arduino IDE on your computer.
  • Choose the correct Arduino board and COM port.
  • Click on the Libraries icon on the left side of the Arduino IDE.
  • In the search box, type “Ethernet” and find the Ethernet library by Various.
  • Click the Install button to add the Ethernet library.
Arduino Ethernet library
  • Open the Serial Monitor in the Arduino IDE.
  • Copy the provided code and paste it into the Arduino IDE.
  • Click the Upload button in the Arduino IDE to transfer the code to the Arduino.
  • Check out the Serial Monitor where the results will appear as below.
COM6
Send
Arduino - Ethernet Tutorial Connected to server HTTP/1.1 200 OK Accept-Ranges: bytes Age: 208425 Cache-Control: max-age=604800 Content-Type: text/html; charset=UTF-8 Date: Fri, 12 Jul 2024 07:08:42 GMT Etag: "3147526947" Expires: Fri, 19 Jul 2024 07:08:42 GMT Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT Server: ECAcc (lac/55B8) Vary: Accept-Encoding X-Cache: HIT Content-Length: 1256 Connection: close <!doctype html> <html> <head> <title>Example Domain</title> <meta charset="utf-8" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> </head> <body> <div> <h1>Example Domain</h1> <p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p> <p><a href="https://www.iana.org/domains/example">More information...</a></p> </div> </body> </html> disconnected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

If another device on the same network shares your MAC address, there may be issues.

Arduino code for Ethernet Module - Web Server

The code below create a web server on the Arduino. This web server sends a simple webpage to the web browsers.

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-ethernet-module */ #include <SPI.h> #include <Ethernet.h> // replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; EthernetServer server(80); void setup() { Serial.begin(9600); delay(1000); Serial.println("Arduino - Ethernet Tutorial"); // initialize the Ethernet shield using DHCP: if (Ethernet.begin(mac) == 0) { Serial.println("Failed to obtaining an IP address"); // check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("Ethernet shield was not found"); // check for Ethernet cable if (Ethernet.linkStatus() == LinkOFF) Serial.println("Ethernet cable is not connected."); while (true) ; } server.begin(); Serial.print("Arduino - Web Server IP Address: "); Serial.println(Ethernet.localIP()); } void loop() { // listen for incoming clients EthernetClient client = server.available(); if (client) { Serial.println("new client"); // an HTTP request ends with a blank line bool currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // if you've gotten to the end of the line (received a newline // character) and the line is blank, the HTTP request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { // send a standard HTTP response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // the connection will be closed after completion of the response client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<body>"); client.println("<h1>Arduino - Web Server with Ethernet</h1>"); client.println("</body>"); client.println("</html>"); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); Serial.println("client disconnected"); } }

Quick Steps

  • Copy the above code and paste it into Arduino IDE.
  • Click the Upload button in Arduino IDE to upload the code to Arduino.
  • Check the result on Serial Monitor, it will display as follows:
COM6
Send
Arduino - Ethernet Tutorial Arduino - Web Server IP Address: 192.168.0.2
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Copy the IP address mentioned above and paste it into the address bar of your web browser. You will see a simple webpage from the Arduino.
Arduino Ethernet Web Server

The Best Arduino Starter Kit

※ OUR MESSAGES