Arduino - Ethernet
Deze handleiding laat u zien hoe u de Arduino en een Ethernet-module gebruikt om verbinding te maken met het internet of uw LAN-netwerk. We behandelen de volgende onderwerpen:
Het aansluiten van de Arduino op een W5500 Ethernet Module
Het programmeren van de Arduino om HTTP-verzoeken over Ethernet te verzenden
Het programmeren van de Arduino om een webserver te maken via Ethernet
Of u kunt de volgende kits kopen:
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.
De W5500 Ethernet module heeft twee verbindingsmogelijkheden:
RJ45 Ethernet Interface: Gebruik een Ethernetkabel om verbinding te maken met een router of switch.
SPI Interface: Hiermee sluit u de module aan op een Arduino board. De module heeft 10 pins. Deze pins moeten worden aangesloten op de Arduino volgens onderstaande tabel:
| Ethernet Module Pins | Arduino Pins |
| NC pin | NIET aangesloten |
| INT pin | NIET aangesloten |
| RST pin | Reset pin |
| GND pin | GND pin |
| 5V pin | 5V pin |
| 3.3V pin | NIET aangesloten |
| MISO pin | 12 (MISO) |
| MOSI pin | 11 (MOSI) |
| SCS pin | 10 (SS) |
| SCLK pin | 13 (SCK) |
image source: diyables.io

This image is created using Fritzing. Click to enlarge image
Hieronder ziet u de daadwerkelijke verbinding tussen Arduino en W5500 Ethernet module:
Deze code fungeert als een webclient. Het verzendt HTTP-verzoeken naar de webserver die te vinden is op http://example.com/.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;
int HTTP_PORT = 80;
String HTTP_METHOD = "GET";
char HOST_NAME[] = "example.com";
String PATH_NAME = "/";
void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Arduino - Ethernet Tutorial");
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to obtaining an IP address");
if (Ethernet.hardwareStatus() == EthernetNoHardware)
Serial.println("Ethernet shield was not found");
if (Ethernet.linkStatus() == LinkOFF)
Serial.println("Ethernet cable is not connected.");
while (true)
;
}
if (client.connect(HOST_NAME, HTTP_PORT)) {
Serial.println("Connected to server");
client.println(HTTP_METHOD + " " + PATH_NAME + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println();
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.print(c);
}
}
client.stop();
Serial.println();
Serial.println("disconnected");
} else {
Serial.println("connection failed");
}
}
void loop() {
}
Volg deze stappen één voor één:
Verbind de Ethernet module met uw Arduino zoals weergegeven in het schema.
Gebruik een Ethernetkabel om de Ethernet module met uw router of switch te verbinden.
Verbind de Arduino met uw computer via een USB-kabel.
Open de Arduino IDE op uw computer.
Selecteer het juiste Arduino board en de juiste COM-poort.
Klik op het Libraries icoon aan de linkerzijde van de Arduino IDE.
Typ in de zoekbalk “Ethernet” en zoek de Ethernet library van Various.
Klik op de Installeren knop om de Ethernet library toe te voegen.
Open de Seriële Monitor in de Arduino IDE.
Kopieer de meegeleverde code en plak deze in de Arduino IDE.
Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te sturen.
Bekijk het resultaat in de Seriële Monitor, waar de output als volgt verschijnt.
Arduino - Ethernet Tutorial
Connected to server
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 208425
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Fri, 12 Jul 2024 07:08:42 GMT
Etag: "3147526947"
Expires: Fri, 19 Jul 2024 07:08:42 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECAcc (lac/55B8)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256
Connection: close
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
disconnected
※ Notiz:
Als een ander apparaat op hetzelfde netwerk hetzelfde MAC-adres gebruikt, kunnen er problemen ontstaan.
De onderstaande code maakt een webserver op de Arduino. Deze webserver stuurt een eenvoudige webpagina naar webbrowsers.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server(80);
void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Arduino - Ethernet Tutorial");
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to obtaining an IP address");
if (Ethernet.hardwareStatus() == EthernetNoHardware)
Serial.println("Ethernet shield was not found");
if (Ethernet.linkStatus() == LinkOFF)
Serial.println("Ethernet cable is not connected.");
while (true)
;
}
server.begin();
Serial.print("Arduino - Web Server IP Address: ");
Serial.println(Ethernet.localIP());
}
void loop() {
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
bool currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<body>");
client.println("<h1>Arduino - Web Server with Ethernet</h1>");
client.println("</body>");
client.println("</html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
} else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println("client disconnected");
}
}
Kopieer de bovenstaande code en plak deze in de Arduino IDE.
Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden.
Bekijk het resultaat in de Seriële Monitor, dit wordt als volgt weergegeven:
Arduino - Ethernet Tutorial
Arduino - Web Server IP Address: 192.168.0.2