Example Code for Arduino-Simple Web Server with DHCP

Last revision 2025/12/10

The article provides sample code for creating a simple Arduino web server with DHCP capabilities, allowing users to automatically obtain an IP address from a router and display the values of analog and digital input pins along with relay status.

Hardware Preparation

  • Xboard Relay x1
  • Micro USB cable x1
  • RJ45 network cable x1
  • Router x1

Software Preparation

  • Arduino IDE V1.6.8

Wiring Diagram

1.The X-Board Relay module access the Internet line into any router LAN port,
2.Micro USB cable plugged into the X-Board relay module, and the other end to the computer USB port.

Sample Code

/*
DFRobot X-board V2 Sample Code

 A simple web server with DHPC capbabilty.
1)Get IP address from router automatically
2)Show the value of the analog input pins

 created 28 Sep 2012
 by Ricky
 */

#include <SPI.h>
#include <Ethernet.h>
EthernetServer server(80);
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xCD, 0xAE, 0x0F, 0xFE, 0xED };

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):


void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
//  while (!Serial) {
//  ; // wait for serial port to connect. Needed for Leonardo only
//  }

  delay(1000);

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // print your local IP address:
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
  }
  Serial.println();

  // start the Ethernet connection and the server:

  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("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
                    // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          client.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.dfrobot.com/ihome/stylesheet/stylesheet.css\" />");

            client.println("<center> <a href=\"https://www.dfrobot.com\"><img src=\"http://alturl.com/qf6vz\"></a> </center> ");
           client.println("<br />");

           client.println("<div>");
          // 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 />");

          }

             // output the value of each digital input pin
          for (int digitalChannel = 2; digitalChannel < 10; digitalChannel++) {
            int sensorReading = digitalRead(digitalChannel);
            if(digitalChannel!=7&&digitalChannel!=8)
            {
            client.print("Digital input ");
            client.print(digitalChannel);
            client.print(" is ");
            client.print(sensorReading);
             client.println("<br />");
            }

            else
            {
             client.print("Relay ");
            client.print(digitalChannel);
            client.print(" is ");
            client.print(sensorReading);
             client.println("<br />");

            }


          }



          client.println("</div>");
          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 disonnected");
  }
}

Result

1 After burning is complete, open the serial monitor. Window displays your IP address.

DFR0222 Simple Web Server with DHCP Result

2 Open a browser -> Enter the IP address -> Enter to open the page.
DFR0222 Simple Web Server with DHCP Result

3 Serial Monitor has a corresponding feedback data.
DFR0222 Simple Web Server with DHCP Result

Was this article helpful?

TOP