Using the Wiz5500 breakout with Arduino involves wiring up the breakout to your Arduino-compatible microcontroller, installing the Arduino Ethernet library, and running the provided example code.
Wiring
Wire as shown for a 5V board like an Uno. If you are using a 3V board, like an Adafruit Feather, wire the board's 3V pin to the breakout VIN.
Here is an Adafruit Metro wired up to the breakout using a solderless breadboard:
-
Board 5V to breakout VIN (red wire)
-
Board GND to breakout GND (black wire)
-
Board D13 to breakout SCK (yellow wire)
- Board D12 to breakout MISO (green wire)
- Board D11 to breakout MOSI (blue wire)
- Board D10 to breakout CS (orange wire)
Library Installation
The Arduino Ethernet library is a built-in library in the Arduino IDE. You can check that it is installed and up to date using the Library Manager in the Arduino IDE.
Click the Manage Libraries ... menu item, search for Ethernet, and select the Ethernet library. If it is installed and up to date, you'll see the turquoise INSTALLED text next to the version number and there won't be an Install or Update button.
There are no additional dependencies for the Ethernet library.
// SPDX-FileCopyrightText: 2025 Liz Clark for Adafruit Industries // // SPDX-License-Identifier: MIT /* Web client This sketch connects to a website (http://wifitest.adafruit.com) using an Adafruit Wiz5500 Ethernet Breakout Circuit: * Ethernet breakout attached to pins 10, 11, 12, 13 created 18 Dec 2009 by David A. Mellis modified 9 Apr 2012 by Tom Igoe, based on work by Adrian McEwen modified 10 June 2025 by Liz Clark */ #include <SPI.h> #include <Ethernet.h> // Enter a MAC address for your controller below. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; char server[] = "wifitest.adafruit.com"; // Set the static IP address to use if the DHCP fails to assign IPAddress ip(192, 168, 0, 177); IPAddress myDns(192, 168, 0, 1); // Initialize the Ethernet client library // with the IP address and port of the server // that you want to connect to (port 80 is default for HTTP): EthernetClient client; // Variables to measure the speed unsigned long beginMicros, endMicros; unsigned long byteCount = 0; bool printWebData = true; // set to false for better speed measurement void setup() { // You can use Ethernet.init(pin) to configure the CS pin // Here you're using pin 10 for CS // SCK: 13, MISO: 12, MOSI: 11 Ethernet.init(10); // Most Arduino shields // Open serial communications and wait for port to open: Serial.begin(115200); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } // start the Ethernet connection: Serial.println("Initialize Ethernet with DHCP:"); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); // Check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) { Serial.println("Ethernet breakout was not found. Check your wiring."); while (true) { delay(1); // do nothing, no point running without Ethernet hardware } } if (Ethernet.linkStatus() == LinkOFF) { Serial.println("Ethernet cable is not connected."); } // try to configure using IP address instead of DHCP: Ethernet.begin(mac, ip, myDns); } else { Serial.print(" DHCP assigned IP "); Serial.println(Ethernet.localIP()); } // give the Ethernet a second to initialize: delay(1000); Serial.print("connecting to "); Serial.print(server); Serial.println("..."); // if you get a connection, report back via serial: if (client.connect(server, 80)) { Serial.print("connected to "); Serial.println(client.remoteIP()); // Make a HTTP request: client.println("GET /testwifi/index.html HTTP/1.1"); client.println("Host: wifitest.adafruit.com"); client.println("Connection: close"); client.println(); } else { // if you didn't get a connection to the server: Serial.println("connection failed"); } beginMicros = micros(); } void loop() { // if there are incoming bytes available // from the server, read them and print them: int len = client.available(); if (len > 0) { byte buffer[80]; if (len > 80) len = 80; client.read(buffer, len); if (printWebData) { Serial.write(buffer, len); // show in the serial monitor (slows some boards) } byteCount = byteCount + len; } // if the server's disconnected, stop the client: if (!client.connected()) { endMicros = micros(); Serial.println(); Serial.println("disconnecting."); client.stop(); Serial.print("Received "); Serial.print(byteCount); Serial.print(" bytes in "); float seconds = (float)(endMicros - beginMicros) / 1000000.0; Serial.print(seconds, 4); float rate = (float)byteCount / seconds / 1000.0; Serial.print(", rate = "); Serial.print(rate); Serial.print(" kbytes/second"); Serial.println(); // do nothing forevermore: while (true) { delay(1); } } }
Upload the sketch to your board and open up the Serial Monitor (Tools -> Serial Monitor) at 115200 baud. First, the WIZ5500 breakout is instantiated over SPI. Then, a network connection is established over ethernet. The Adafruit WiFi test site is used to test the connection. On successful connection, you'll see a print out of the site text in the Serial Monitor.
Community Fork
There is a fork of the Ethernet library available on GitHub from a community member that is designed to have better performance. Check it out as an alternative to the official release and read more about its features in this Adafruit Forum post.
Page last edited June 11, 2025
Text editor powered by tinymce.