0
0
AutocadHow-ToBeginner · 4 min read

How to Use Ethernet Library in Arduino for Network Communication

Use the Ethernet library in Arduino to connect your board to a network via an Ethernet shield. Initialize the library with your MAC address and IP, then use Ethernet.begin() to start the connection and EthernetClient to communicate over the network.
📐

Syntax

The Ethernet library provides functions to set up network communication. Key parts include:

  • Ethernet.begin(mac, ip): Starts the Ethernet connection with your device's MAC and IP address.
  • EthernetClient client;: Creates a client object to connect to servers.
  • client.connect(server, port): Connects to a server at a given IP or domain and port.
  • client.print() and client.read(): Send and receive data over the network.
arduino
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);

void setup() {
  Ethernet.begin(mac, ip);
}

EthernetClient client;

void loop() {
  if (client.connect("example.com", 80)) {
    client.print("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n");
  }
}
💻

Example

This example connects your Arduino to a network using the Ethernet shield, then requests the homepage of example.com and prints the response to the Serial Monitor.

arduino
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);

EthernetClient client;

void setup() {
  Serial.begin(9600);
  while (!Serial) { ; }

  if (Ethernet.begin(mac) == 0) {
    Ethernet.begin(mac, ip);
  }
  delay(1000);
  Serial.println("Connecting...");

  if (client.connect("example.com", 80)) {
    client.println("GET / HTTP/1.1");
    client.println("Host: example.com");
    client.println("Connection: close");
    client.println();
  } else {
    Serial.println("Connection failed");
  }
}

void loop() {
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("Disconnecting.");
    client.stop();
    while (true) { }
  }
}
Output
Connecting... HTTP/1.1 200 OK Date: ... Content-Type: text/html; charset=UTF-8 ... <html>...</html> Disconnecting.
⚠️

Common Pitfalls

Common mistakes when using the Ethernet library include:

  • Not initializing the Ethernet shield with the correct MAC address.
  • Forgetting to call Ethernet.begin() before using the client.
  • Using an IP address already in use on the network.
  • Not checking if the client connected successfully before sending data.
  • Not including the SPI.h library which Ethernet depends on.
arduino
/* Wrong: Missing Ethernet.begin() */
#include <SPI.h>
#include <Ethernet.h>

EthernetClient client;

void setup() {
  // Ethernet.begin() missing here
  client.connect("example.com", 80); // This will fail
}

/* Right: Proper initialization */
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;

void setup() {
  Ethernet.begin(mac);
  if (client.connect("example.com", 80)) {
    // proceed
  }
}
📊

Quick Reference

Here is a quick summary of key Ethernet library functions:

FunctionDescription
Ethernet.begin(mac)Starts Ethernet with DHCP using MAC address
Ethernet.begin(mac, ip)Starts Ethernet with static IP address
EthernetClient client;Creates a client object for network communication
client.connect(server, port)Connects to a server at given address and port
client.print()/client.println()Sends data to the server
client.available()Checks if data is available to read
client.read()Reads incoming data
client.stop()Closes the connection

Key Takeaways

Always initialize the Ethernet shield with a unique MAC address using Ethernet.begin().
Use EthernetClient to connect and communicate with servers over the network.
Check if client.connect() succeeds before sending data to avoid errors.
Include both SPI.h and Ethernet.h libraries for proper Ethernet functionality.
Avoid IP address conflicts by using DHCP or carefully assigning static IPs.