ESP32 - Ethernet

Dieses Tutorial zeigt dir, wie du das W5500-Ethernet-Modul verwendest, um den ESP32 mit dem Internet oder deinem LAN-Netzwerk zu verbinden. Im Detail werden wir lernen:

ESP32-Ethernet

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×W5500 Ethernet Module
1×Ethernet Cable
1×Verbindungskabel
1×Breadboard
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das W5500-Ethernet-Modul

Das W5500-Ethernet-Modul hat zwei Schnittstellen:

  • RJ45-Schnittstelle: zur Verbindung mit Router/Switch über ein Ethernet-Kabel
  • SPI-Schnittstelle: zur Verbindung mit dem ESP32-Board, einschließlich 10 Pins:
    • NC-Pin: Diesen Pin nicht anschließen.
    • INT-Pin: Diesen Pin nicht anschließen.
    • RST-Pin: Reset-Pin, verbinden Sie diesen Pin mit dem EN-Pin des ESP32.
    • GND-Pin: Diesen Pin mit dem GND-Pin des ESP32 verbinden.
    • 5V-Pin: Diesen Pin nicht anschließen.
    • 3.3V-Pin: Diesen Pin mit dem 3.3V-Pin des ESP32 verbinden.
    • MISO-Pin: Diesen Pin mit dem SPI MISO-Pin des ESP32 verbinden.
    • MOSI-Pin: Diesen Pin mit dem SPI MOSI-Pin des ESP32 verbinden.
    • SCS-Pin: Diesen Pin mit dem SPI CS-Pin des ESP32 verbinden.
    • SCLK-Pin: Diesen Pin mit dem SPI SCK-Pin des ESP32 verbinden.
    Pinbelegung des Ethernet-Moduls
    image source: diyables.io

Verdrahtungs diagramm zwischen ESP32 und dem W5500-Ethernet-Modul

Verdrahtungsdiagramm des ESP32-Ethernet-Moduls

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

image source: diyables.io

ESP32-Code für Ethernet-Modul - HTTP-Anfrage über Ethernet

Der folgende Code fungiert als Web-Client und sendet HTTP-Anfragen an den Webserver unter http://example.com/.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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() { }

Schnelle Schritte

  • Falls dies das erste Mal ist, dass Sie ESP32 verwenden, siehe Wie man die Entwicklungsumgebung für ESP32 in der Arduino-IDE einrichtet.
  • Schließen Sie die Verdrahtung zwischen dem Ethernet-Modul und dem ESP32 gemäß dem oben gezeigten Verdrahtungsdiagramm an.
  • Schließen Sie den ESP32 über ein USB-Kabel an den PC an.
  • Verbinden Sie das Ethernet-Modul über ein Ethernetkabel mit Ihrem Router oder Switch.
  • Öffnen Sie die Arduino-IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port.
  • Klicken Sie auf das Libraries-Symbol in der linken Symbolleiste der Arduino-IDE.
  • Suchen Sie „Ethernet“, und finden Sie anschließend die Ethernet-Bibliothek von Various.
  • Klicken Sie auf die Schaltfläche Install, um die Ethernet-Bibliothek zu installieren.
ESP32-Ethernet-Bibliothek
  • Öffnen Sie den seriellen Monitor in der Arduino-IDE.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino-IDE ein.
  • Klicken Sie auf die Schaltfläche Hochladen in der Arduino-IDE, um den Code auf den ESP32 hochzuladen.
  • Überprüfen Sie das Ergebnis im Serial Monitor; es sieht wie folgt aus:
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:

Wenn es im gleichen lokalen Netzwerk ein weiteres Gerät mit derselben MAC-Adresse gibt, könnte es möglicherweise nicht funktionieren.

ESP32-Code für Ethernet-Modul – Webserver

Der folgende Code verwandelt den ESP32 in einen Webserver, der Webbrowser mit einer einfachen Webseite bedient.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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"); } }

Schnelle Schritte

  • Kopiere den obigen Code und füge ihn in die Arduino IDE ein.
  • Klicke auf die Upload-Schaltfläche in der Arduino IDE, um den Code auf den ESP32 hochzuladen.
  • Sieh dir das Ergebnis im Serial Monitor an; es sieht unten so aus:
COM6
Send
ESP32 - Ethernet Tutorial ESP32 - Web Server IP Address: 192.168.0.2
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Kopieren Sie die oben genannte IP-Adresse und fügen Sie sie in die Adressleiste eines Webbrowsers ein; Sie sehen eine einfache Webseite, die vom ESP32 wie folgt bereitgestellt wird:
ESP32 Ethernet-Webserver

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!