Example Code for Arduino-Ethernet Web Server
Last revision 2025/12/19
This project demonstrates how to create a small Web Server using the W5500 Ethernet expansion board. The server displays the values of the 6 analog input pins of the Arduino board, automatically refreshing every 5 seconds. Users will learn to set up Ethernet communication, use the W5500 chip, and build a basic HTTP server.
Hardware Preparation
- DFR0850 Ethernet and PoE Shield for Arduino x 1
- DFR0221 DFRduino Leonardo with Xbee Socket x 1
- FIT0265 Micro USB Cable x 1
- Network cable X1
Software Preparation
- Download Arduino IDE: Click to download Arduino IDE
- Download the WIZ_Ethernet_Library library: WIZ_Ethernet_Library
Wiring Diagram
-
First install the POE Ethernet expansion board on the Leonardo board, then connect the E-RST pin on the POE Ethernet expansion board to the D11 pin through the jumper cap, then connect your Leonardo to a computer with the micro USB cable.

-
POE Function Wiring Diagram: Plug the POE Ethernet expansion board and the computer cable into any LAN port of the POE switch (common switches and routing equipment can also be used. When using common switches and routing equipment, the module needs to be powered).

-
Non-POE Function Wiring Diagram: Connect the POE Ethernet expansion board to the computer through a network cable (when directly connected to the PC network port, the module needs to be powered).

Other Preparation Work
-
Download the official Arduino library of WIZnet, unzip the compressed package after downloading, according to the IDE version you are using, put the Ethernet folder in one of the two folders of Arduino IDE 1.0.x and Arduino IDE 1.5.x into the library file of the Arduino IED and overwrite it (overwrite the original Ethernet library).



-
Open the Arduino IDE compiler, find the WebServer sample in File -> Examples -> Ethernet and open it.
-
Add the reset pin initialization code at the beginning of the WebServer sample code.
Sample Code
/*
Web Server
A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
#define SS 10U //W5500 CS
#define RST 11U //W5500 RST
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
void setup() {
pinMode(SS, OUTPUT);
pinMode(RST, OUTPUT);
digitalWrite(SS, LOW);
digitalWrite(RST,HIGH); //Reset this module
delay(200);
digitalWrite(RST,LOW);
delay(200);
digitalWrite(RST,HIGH);
delay(200);
// Open serial communications and wait for port to open:
Serial.begin(9600);
//while (!Serial) {
// ; // wait for serial port to connect. Needed for Leonardo only
//}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
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
boolean 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("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
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");
}
}
Result
Open the browser -> enter the IP address -> press Enter to open the web page. The input values of the 6 analog ports are automatically refreshed and displayed at a frequency of 5 seconds, indicating the Web Server is working normally.
Solutions to Abnormal Situations
For those who have the problem of "Webpage cannot be loaded" in the computer browser, don't worry, please follow the steps below to configure your network adapter:
1. Open the Control Panel-->Network and Internet-->Network and Sharing Center-->Change adapter settings
2. Find the network you connect to the module-->right-click-->Properties-->Find "Internet Protocol Version 4 (TCP/IPv4)" in the network tab and double-click to enter the property settings
3. Enter the parameters shown in the figure below and click OK. After this, open the browser and enter the IP address, then press Enter to open the webpage.

Was this article helpful?
