ESP32 - Ethernet

Deze tutorial leert u hoe u de W5500 Ethernet-module gebruikt om de ESP32 te verbinden met het internet of uw LAN-netwerk. We behandelen in detail:

ESP32 Ethernet

Hardware benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB kabel Type-C
1×W5500 Ethernet Module
1×Ethernet kabel
1×Jumper draden
1×Breadboard (experimenteerprint)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

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 interfaces:

  • RJ45-interface: voor aansluiting op router/switch via een Ethernetkabel
  • SPI-interface: voor aansluiting op het ESP32 board, met 10 pinnen:
    • NC pin: deze pin niet aansluiten.
    • INT pin: deze pin niet aansluiten.
    • RST pin: reset pin, sluit deze pin aan op de EN pin van de ESP32.
    • GND pin: sluit deze pin aan op de GND pin van de ESP32.
    • 5V pin: deze pin niet aansluiten.
    • 3.3V pin: sluit deze pin aan op de 3.3V pin van de ESP32.
    • MISO pin: sluit deze pin aan op de SPI MISO pin van de ESP32.
    • MOSI pin: sluit deze pin aan op de SPI MOSI pin van de ESP32.
    • SCS pin: sluit deze pin aan op de SPI CS pin van de ESP32.
    • SCLK pin: sluit deze pin aan op de SPI SCK pin van de ESP32.
    Ethernet module pinout
    image source: diyables.io

Aansluitschema tussen ESP32 en W5500 Ethernet-module

ESP32 Ethernet module Aansluitschema

This image is created using Fritzing. Click to enlarge image

image source: diyables.io

ESP32 code voor Ethernet Module - HTTP verzoek via Ethernet

De onderstaande code functioneert als een webclient die HTTP-verzoeken verstuurt naar de webserver op http://example.com/.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-ethernet */ #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, 0xEF }; 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("ESP32 - 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() { }

Snel aan de slag

  • Als u voor het eerst met ESP32 werkt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading tussen de Ethernet-module en ESP32 zoals in het bovenstaande aansluitdiagram.
  • Verbind de ESP32 met de pc via een USB-kabel.
  • Verbind de Ethernet-module met uw router/switch via een Ethernet-kabel.
  • Open Arduino IDE op uw pc.
  • Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM-poort.
  • Klik op het Libraries icoon in de linkerzijbalk van Arduino IDE.
  • Zoek op “Ethernet” en selecteer de Ethernet library van Various.
  • Klik op de Installeren-knop om de Ethernet library te installeren.
ESP32 Ethernet library
  • Open de Seriële Monitor in Arduino IDE.
  • Kopieer de bovenstaande code en plak deze in Arduino IDE.
  • Klik op de Uploaden-knop om de code naar de ESP32 te uploaden.
  • Bekijk het resultaat in de Seriële Monitor, dit ziet er ongeveer zo uit:
COM6
Send
ESP32 - 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 er een ander apparaat op hetzelfde lokale netwerk is met hetzelfde MAC-adres, kan dit niet werken.

ESP32 code voor Ethernet Module - Webserver

De onderstaande code verandert de ESP32 in een webserver die reageert op web browsers met een eenvoudige webpagina.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-ethernet */ #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, 0xEF }; EthernetServer server(80); void setup() { Serial.begin(9600); delay(1000); Serial.println("ESP32 - 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("ESP32 - 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>ESP32 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"); } }

Snel aan de slag

  • Kopieer de bovenstaande code en plak deze in Arduino IDE.
  • Klik op de Uploaden-knop om de code naar de ESP32 te uploaden.
  • Bekijk het resultaat in de Seriële Monitor, dit ziet er ongeveer zo uit:
COM6
Send
ESP32 - Ethernet Tutorial ESP32 - Web Server IP Address: 192.168.0.2
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Kopieer het bovenstaande IP-adres en plak het in de adresbalk van een webbrowser; u krijgt een eenvoudige webpagina te zien die door de ESP32 wordt geserveerd:
ESP32 Ethernet Web Server

Gerelateerde Tutorials

※ 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!