Ethernet Shield Web Client Repeating
Make repeated HTTP requests.
This example shows you how to make repeated HTTP requests using an Ethernet shield. This example uses DNS, by assigning the Ethernet client with a MAC address, IP address, and DNS address. It connects to http://www.arduino.cc/latest.txt. The content of the page is viewable in the Serial Monitor.
Hardware Required
Arduino Board
Circuit
The Ethernet shield allows you to connect a WIZNet Ethernet controller to the Arduino boards via the SPI bus. It uses the ICSP header pins and pin 10 as chip select for the SPI connection to the Ethernet controller chip. Later models of the Ethernet shield also have an SD Card on board. Digital pin 4 is used to control the chip select pin on the SD card.
The shield should be connected to a network with an Ethernet cable. You will need to change the network settings in the program to correspond to your network.
Image developed using Fritzing. For more circuit examples, see the Fritzing project page
In the above image, the Arduino board would be stacked below the Ethernet shield.
Schematic
Code
1/*2
3 Repeating Web client4
5 This sketch connects to a a web server and makes a request6
7 using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or8
9 the Adafruit Ethernet shield, either one will work, as long as it's got10
11 a Wiznet Ethernet module on board.12
13 This example uses DNS, by assigning the Ethernet client with a MAC address,14
15 IP address, and DNS address.16
17 Circuit:18
19 * Ethernet shield attached to pins 10, 11, 12, 1320
21 created 19 Apr 201222
23 by Tom Igoe24
25 modified 21 Jan 201426
27 by Federico Vanzati28
29 http://www.arduino.cc/en/Tutorial/WebClientRepeating30
31 This code is in the public domain.32
33 */34
35#include <SPI.h>36#include <Ethernet.h>37
38// assign a MAC address for the ethernet controller.39// fill in your address here:40byte mac[] = {41
42 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED43};44// Set the static IP address to use if the DHCP fails to assign45
46IPAddress ip(192, 168, 0, 177);47
48IPAddress myDns(192, 168, 0, 1);49
50// initialize the library instance:51
52EthernetClient client;53
54char server[] = "www.arduino.cc"; // also change the Host line in httpRequest()55//IPAddress server(64,131,82,241);56
57unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds58
59const unsigned long postingInterval = 10*1000; // delay between updates, in milliseconds60
61void setup() {62
63 // You can use Ethernet.init(pin) to configure the CS pin64
65 //Ethernet.init(10); // Most Arduino shields66
67 //Ethernet.init(5); // MKR ETH shield68
69 //Ethernet.init(0); // Teensy 2.070
71 //Ethernet.init(20); // Teensy++ 2.072
73 //Ethernet.init(15); // ESP8266 with Adafruit Featherwing Ethernet74
75 //Ethernet.init(33); // ESP32 with Adafruit Featherwing Ethernet76
77 // start serial port:78
79 Serial.begin(9600);80
81 while (!Serial) {82
83 ; // wait for serial port to connect. Needed for native USB port only84
85 }86
87 // start the Ethernet connection:88
89 Serial.println("Initialize Ethernet with DHCP:");90
91 if (Ethernet.begin(mac) == 0) {92
93 Serial.println("Failed to configure Ethernet using DHCP");94
95 // Check for Ethernet hardware present96
97 if (Ethernet.hardwareStatus() == EthernetNoHardware) {98
99 Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :(");100
101 while (true) {102
103 delay(1); // do nothing, no point running without Ethernet hardware104
105 }106
107 }108
109 if (Ethernet.linkStatus() == LinkOFF) {110
111 Serial.println("Ethernet cable is not connected.");112
113 }114
115 // try to configure using IP address instead of DHCP:116
117 Ethernet.begin(mac, ip, myDns);118
119 Serial.print("My IP address: ");120
121 Serial.println(Ethernet.localIP());122
123 } else {124
125 Serial.print(" DHCP assigned IP ");126
127 Serial.println(Ethernet.localIP());128
129 }130
131 // give the Ethernet shield a second to initialize:132
133 delay(1000);134}135
136void loop() {137
138 // if there's incoming data from the net connection.139
140 // send it out the serial port. This is for debugging141
142 // purposes only:143
144 if (client.available()) {145
146 char c = client.read();147
148 Serial.write(c);149
150 }151
152 // if ten seconds have passed since your last connection,153
154 // then connect again and send data:155
156 if (millis() - lastConnectionTime > postingInterval) {157
158 httpRequest();159
160 }161
162}163
164// this method makes a HTTP connection to the server:165void httpRequest() {166
167 // close any connection before send a new request.168
169 // This will free the socket on the WiFi shield170
171 client.stop();172
173 // if there's a successful connection:174
175 if (client.connect(server, 80)) {176
177 Serial.println("connecting...");178
179 // send the HTTP GET request:180
181 client.println("GET /latest.txt HTTP/1.1");182
183 client.println("Host: www.arduino.cc");184
185 client.println("User-Agent: arduino-ethernet");186
187 client.println("Connection: close");188
189 client.println();190
191 // note the time that the connection was made:192
193 lastConnectionTime = millis();194
195 } else {196
197 // if you couldn't make a connection:198
199 Serial.println("connection failed");200
201 }202}
Last revision 2018/09/07 by SM
Suggest changes
The content on docs.arduino.cc is facilitated through a public GitHub repository. If you see anything wrong, you can edit this page here.
License
The Arduino documentation is licensed under the Creative Commons Attribution-Share Alike 4.0 license.