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:

Arduino Ethernet

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×W5500 Ethernet Module
1×Ethernetkabel
1×Jumper Draden
1×Breadboard (experimenteerprint)
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
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.

Over de W5500 Ethernet module

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)
Ethernet module pinout
image source: diyables.io

Bekabelingsschema tussen Arduino en W5500 Ethernet module

Arduino Ethernet module Bekabelingsschema

This image is created using Fritzing. Click to enlarge image

Hieronder ziet u de daadwerkelijke verbinding tussen Arduino en W5500 Ethernet module:

Arduino Ethernet module verbinding

Arduino code voor Ethernet Module - HTTP-verzoek verzenden via Ethernet

Deze code fungeert als een webclient. Het verzendt HTTP-verzoeken naar de webserver die te vinden is op http://example.com/.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ethernet-module */ #include <SPI.h> #include <Ethernet.h> // replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; EthernetClient client; int HTTP_PORT = 80; String HTTP_METHOD = "GET"; // or POST char HOST_NAME[] = "example.com"; String PATH_NAME = "/"; void setup() { Serial.begin(9600); delay(1000); Serial.println("Arduino - Ethernet Tutorial"); // initialize the Ethernet shield using DHCP: if (Ethernet.begin(mac) == 0) { Serial.println("Failed to obtaining an IP address"); // check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("Ethernet shield was not found"); // check for Ethernet cable if (Ethernet.linkStatus() == LinkOFF) Serial.println("Ethernet cable is not connected."); while (true) ; } // connect to web server on port 80: if (client.connect(HOST_NAME, HTTP_PORT)) { // if connected: Serial.println("Connected to server"); // make a HTTP request: // send HTTP header client.println(HTTP_METHOD + " " + PATH_NAME + " HTTP/1.1"); client.println("Host: " + String(HOST_NAME)); client.println("Connection: close"); client.println(); // end HTTP header while (client.connected()) { if (client.available()) { // read an incoming byte from the server and print it to serial monitor: char c = client.read(); Serial.print(c); } } // the server's disconnected, stop the client: client.stop(); Serial.println(); Serial.println("disconnected"); } else { // if not connected: Serial.println("connection failed"); } } void loop() { }

Snelle Stappen

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.
Arduino Ethernet library
  • 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.
COM6
Send
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
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

Als een ander apparaat op hetzelfde netwerk hetzelfde MAC-adres gebruikt, kunnen er problemen ontstaan.

Arduino code voor Ethernet Module - Webserver

De onderstaande code maakt een webserver op de Arduino. Deze webserver stuurt een eenvoudige webpagina naar webbrowsers.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ethernet-module */ #include <SPI.h> #include <Ethernet.h> // replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; EthernetServer server(80); void setup() { Serial.begin(9600); delay(1000); Serial.println("Arduino - Ethernet Tutorial"); // initialize the Ethernet shield using DHCP: if (Ethernet.begin(mac) == 0) { Serial.println("Failed to obtaining an IP address"); // check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("Ethernet shield was not found"); // check for Ethernet cable 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() { // listen for incoming clients EthernetClient client = server.available(); if (client) { Serial.println("new client"); // an HTTP request ends with a blank line bool 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("Connection: close"); // the connection will be closed after completion of the response 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') { // 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 disconnected"); } }

Snelle Stappen

  • 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:
COM6
Send
Arduino - Ethernet Tutorial Arduino - Web Server IP Address: 192.168.0.2
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Kopieer het hierboven vermelde IP-adres en plak dit in de adresbalk van uw webbrowser. U ziet dan een eenvoudige webpagina afkomstig van de Arduino.
Arduino Ethernet Web Server

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!