ESP32 WT32-ETH01 Gateway Modul, Ethernet Wi-Fi Bluetooth
zoom_out_map
chevron_left chevron_right

Produktbilder dienen ausschließlich zu Informationszwecken und können je nach Charge und Lieferant geringfügige Unterschiede aufweisen. Produktspezifikationen und Preise können ohne vorherige Ankündigung geändert werden. Wir tun unser Bestes, um der Produktseite möglichst genaue und richtige Spezifikationen hinzuzufügen, es ist jedoch möglich, dass diese nicht ganz korrekt sind. Sollten Sie einen solchen Fall feststellen, melden Sie ihn uns bitte.

Das Produkt ist für Fachleute bestimmt und erfordert qualifiziertes und autorisiertes Personal. Dem Produkt liegt keine Montage-/Gebrauchsanleitung bei . Die Inbetriebnahme des Produktes durch nicht qualifizierte Personen führt zum Verlust der Garantie gemäß den AGB auf der Seite.

Die angegebenen technischen Spezifikationen (Strom, Leistung usw.) stellen maximale zulässige Werte unter idealen Betriebsbedingungen dar. Für einen sicheren Betrieb und eine optimale Lebensdauer wird empfohlen, das Produkt im Dauerbetrieb mit höchstens 50 % der angegebenen Maximalwerte zu verwenden.

Gateway-Modul WT32-ETH01 ESP32, Ethernet 10/100 Mbit/s, WLAN, Bluetooth, Versorgung 5 V oder 3,3 V

ESP32-Modul mit Ethernet-Anschluss RJ45 mit 10/100 Mbit/s, WLAN und Bluetooth, geeignet als Gateway für Automatisierungen, Überwachung und IoT-Projekte. Unterstützt TCP und UDP im Server- oder Client-Modus, AT-Befehle, OTA-Aktualisierung über das Netzwerk und Softwareverschlüsselung, die Versorgung erfolgt mit 5 V oder 3,3 V.

73,42 RON Bruttopreis

60,68 RON zzgl. MwSt.

No reviews yet

Mit dem Kauf dieses Produkts erhalten Sie 3,67 RON an Treuepunkten.

Garantie: 24 Monate für Privatpersonen
INTERNATIONAL DELIVERY
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
FAST DISPATCH 24H
We ship from our stock within 24H
TREUEPUNKTE
Sie erhalten bei jeder Bestellung Punkte im Wert von 5 %.

Das Modul WT32-ETH01 ist eine kompakte Platine mit ESP32, die auf derselben Platine einen Ethernet-Anschluss RJ45 mit 10/100 Mbit/s, WLAN und Bluetooth vereint. Es eignet sich als Gateway zwischen einem lokalen Netzwerk und Geräten mit seriellem Anschluss, für Automatisierungen, industrielle Überwachung, Bedienfelder und IoT-Projekte, die eine stabile kabelgebundene Verbindung benötigen. Das Modul unterstützt die transparente Datenübertragung zwischen zwei der vier verfügbaren Schnittstellen: serieller Anschluss, WLAN, Ethernet und Bluetooth.

Der Prozessor ist ein ESP32 mit Dual-Core Xtensa 32-Bit LX6, mit SPI-Flash-Speicher von 32 Mbit und 520 KB SRAM. Die Ethernet-Schnittstelle wird mit dem Schaltkreis LAN8720A realisiert, und die Netzwerkbetriebsarten sind TCP-Server, TCP-Client, UDP-Server und UDP-Client, über IPv4. Die Geschwindigkeit des seriellen Anschlusses lässt sich zwischen 80 und 5000000 bps einstellen. Das Modul unterstützt AT-Befehle, OTA-Firmware-Aktualisierung über WLAN oder Ethernet sowie die Softwareverschlüsselungsalgorithmen AES, RSA, ECC und SHA.

Zu den wichtigsten Merkmalen gehören der RJ45-Anschluss mit Ethernet-Schaltkreis LAN8720A, die auf der Platine integrierte WLAN- und Bluetooth-Antenne, zwei Stiftleisten mit je 13 Pins im Rastermaß 2,54 mm mit GPIO, ADC-Eingängen, UART, den Pins EN und LINK, den Programmierpins TX0, RX0 und IO0, der Betriebs-LED POWER sowie zwei LEDs RXD und TXD für den Datenverkehr am sekundären seriellen Anschluss. Die Versorgung erfolgt mit 5 V über den Pin 5V oder mit 3,3 V über den Pin 3V3, wobei nur eine einzige Quelle verwendet wird.

Da es sich um eine Platine mit ESP32 handelt, wird das Modul in der Arduino IDE (Board ESP32 Dev Module), in ESP-IDF oder in PlatformIO programmiert, über einen USB-TTL-Adapter mit 3,3-V-Logik, der an die Pins TX0 und RX0 angeschlossen wird.

 

Spezifikationen:

Versorgungsspannung: 5 V (Pin 5V) oder 3,3 V (Pin 3V3), nur eines davon

Strom: 80 mA im mittleren Betrieb, Netzteil mit mindestens 500 mA

Mikrocontroller: ESP32 Dual-Core Xtensa 32-Bit LX6, bis 240 MHz

Flash-Speicher: 32 Mbit SPI

SRAM: 520 KB

Ethernet: RJ45 10/100 Mbit/s, Schaltkreis LAN8720A

WLAN: 802.11 b/g/n, 2,4 GHz

Bluetooth: Bluetooth 4.2 (BR/EDR und BLE)

Datenschnittstellen: Seriell, WLAN, Ethernet, Bluetooth

Netzwerkbetriebsarten: TCP-Server, TCP-Client, UDP-Server, UDP-Client

Netzwerkprotokoll: IPv4, TCP/UDP

Serielle Baudrate: 80 - 5000000 bps

GPIO-Logikpegel: 3,3 V

Softwareverschlüsselung: AES, RSA, ECC, SHA

Firmware-Aktualisierung: OTA über WLAN oder Ethernet

Betriebstemperatur: -40 °C bis +85 °C

Pins: Gelötet oder ungelötet, je nach Charge, 2 x 13, Rastermaß 2,54 mm

Abmessungen: 25 x 63 x 17 mm

 

Layout:

Element Funktion
Anschluss RJ45 Ethernet-Anschluss 10/100 Mbit/s für die Verbindung mit Router oder Switch über ein Netzwerkkabel.
Modul WT32-S1 mit ESP32 Hauptprozessor mit WLAN, Bluetooth und auf der Platine integrierter Antenne.
Schaltkreis LAN8720A Physikalischer Ethernet-Controller, der über die RMII-Schnittstelle mit dem ESP32 verbunden ist.
Ethernet-Oszillator Liefert den 50-MHz-Takt des Schaltkreises LAN8720A und wird vom ESP32 über den Pin IO16 eingeschaltet.
Spannungsregler Erzeugt die 3,3-V-Spannung der Platine, wenn das Modul über den Pin 5V versorgt wird.
LED POWER (LED1) Leuchtet, wenn die Versorgung der Platine normal ist.
LED RXD (LED3) Leuchtet, wenn auf der Leitung RXD2 (IO5) des sekundären seriellen Anschlusses Datenverkehr vorhanden ist.
LED TXD (LED4) Leuchtet, wenn auf der Leitung TXD2 (IO17) des sekundären seriellen Anschlusses Datenverkehr vorhanden ist.
Pin LINK Ausgang für eine externe Anzeige des Netzwerkverbindungsstatus.
Pin EN Aktivierung des Moduls mit High-Pegel. Auf GND gezogen, setzt es das Modul zurück. Die Platine hat keine Reset-Taste.
Pin IO0 Wählt den Startmodus. Beim Start mit GND verbunden, aktiviert es den Programmiermodus über seriellen Anschluss. Unverbunden gelassen, startet das Programm aus dem Flash-Speicher. Die Platine hat keine Steckbrücke oder keinen Schalter, die Verbindung erfolgt mit einem Draht.
Pins TX0 und RX0 Hauptserieller Anschluss des ESP32 (IO1 und IO3), verwendet für die Programmierung und für den seriellen Monitor.
Stiftleisten Zwei Reihen mit je 13 Pins mit Versorgung, Masse, GPIO, ADC-Eingängen, UART sowie den Pins EN und LINK.

 

Pinout:

Die Pins sind von der Seite mit dem Anschluss RJ45 zur Seite mit der Antenne aufgelistet. Die Stiftleiste 1 enthält die Pins LINK, 5V und 3V3, und die Stiftleiste 2 enthält die Pins IO0, RX0 und TX0.

Anschluss Pin Funktion
Stiftleiste 1 LINK Ausgang für die Anzeige des Netzwerkverbindungsstatus
Stiftleiste 1 5V Versorgung 5 V
Stiftleiste 1 GND Masse
Stiftleiste 1 3V3 Versorgung 3,3 V
Stiftleiste 1 GND Masse
Stiftleiste 1 TXD IO17, TXD2, serielle Sekundärübertragung
Stiftleiste 1 RXD IO5, RXD2, serieller Sekundärempfang
Stiftleiste 1 485_EN IO33, Aktivierungspin für einen RS485-Transceiver
Stiftleiste 1 CFG IO32, beschriftet mit CFG
Stiftleiste 1 EN Modulaktivierung, High-Pegel. Auf GND setzt es das Modul zurück
Stiftleiste 1 3V3 Versorgung 3,3 V
Stiftleiste 1 GND Masse
Stiftleiste 1 EN Modulaktivierung, High-Pegel. Auf GND setzt es das Modul zurück
Stiftleiste 2 GND Masse
Stiftleiste 2 IO2 GPIO2, Startpin. Muss beim Programmieren frei oder auf Low gelassen werden
Stiftleiste 2 IO4 GPIO4, ADC2 CH0
Stiftleiste 2 IO35 GPIO35, nur Eingang, ADC1 CH7
Stiftleiste 2 IO12 GPIO12, muss beim Start frei oder auf Low gelassen werden
Stiftleiste 2 IO14 GPIO14, ADC2 CH6
Stiftleiste 2 IO15 GPIO15, ADC2 CH3
Stiftleiste 2 IO36 GPIO36, nur Eingang, ADC1 CH0
Stiftleiste 2 IO39 GPIO39, nur Eingang, ADC1 CH3
Stiftleiste 2 GND Masse
Stiftleiste 2 IO0 Startmodus. Beim Start auf GND aktiviert es die Programmierung. Wird auch für den 50-MHz-Ethernet-Takt verwendet
Stiftleiste 2 RX0 IO3, RXD0, serieller Hauptempfang
Stiftleiste 2 TX0 IO1, TXD0, serielle Hauptübertragung

 

Pin IO0 beim Start Startmodus ESP32
Nicht verbunden Ausführung des Programms aus dem Flash-Speicher (normaler Betrieb)
Mit GND verbunden Serieller Bootloader (Programmübertragung über TX0 und RX0)

 

Pin ESP32 Intern verwendet für
IO16 Einschalten des 50-MHz-Oszillators des Schaltkreises LAN8720A
IO23 MDC, Ethernet-Managementtakt
IO18 MDIO, Ethernet-Managementdaten
IO0 Eingang für den 50-MHz-Referenztakt (REF_CLK)
IO19, IO21, IO22 TXD0, TX_EN, TXD1 (RMII)
IO25, IO26, IO27 RXD0, RXD1, CRS_DV (RMII)

Die Pins der letzten Tabelle sind von der Ethernet-Schnittstelle belegt und nicht auf die Stiftleisten geführt.

 

Verwendung:

Versorgen Sie das Modul entweder mit 5 V über den Pin 5V oder mit 3,3 V über den Pin 3V3, niemals über beide Pins gleichzeitig, mit gemeinsamer Masse mit dem übrigen Schaltkreis.

Verwenden Sie eine stabile Quelle, die mindestens 500 mA liefern kann, und legen Sie an den Pin 5V keine Spannung über 5 V an. Nach der Versorgung leuchtet die LED POWER auf.

Beachten Sie den Logikpegel von 3,3 V. Legen Sie keine Signale von 5 V an die Signalpins und verwenden Sie einen Logikpegelwandler, wenn Sie mit Geräten mit 5 V kommunizieren.

Zum Programmieren schließen Sie einen USB-TTL-Adapter mit 3,3-V-Logik wie folgt an: TXD des Adapters an RX0, RXD des Adapters an TX0 und GND an GND. Versorgen Sie das Modul über den 5-V-Pin des Adapters, der mit dem Pin 5V des Moduls verbunden ist.

Versorgen Sie das Modul nicht über den 3,3-V-Ausgang eines kleinen Adapters, da dieser nicht den für den Betrieb mit WLAN notwendigen Strom liefert.

Verbinden Sie den Pin IO0 mit einem Pin GND der Stiftleiste 2, schalten Sie dann die Versorgung ein oder setzen Sie das Modul zurück, indem Sie den Pin EN kurz auf GND ziehen. Das Modul geht in den Programmiermodus.

Wählen Sie in der Arduino IDE das Board ESP32 Dev Module, stellen Sie die Upload-Geschwindigkeit auf 115200 ein und laden Sie das Programm hoch.

Entfernen Sie nach dem Hochladen die Verbindung zwischen IO0 und GND, schalten Sie dann die Versorgung aus und wieder ein oder setzen Sie das Modul über EN zurück. Das Programm startet aus dem Flash-Speicher.

Lassen Sie beim Programmieren und beim Start die Pins IO2 und IO12 unverbunden oder auf Low-Pegel, da ihr Pegel beim Start den Start des ESP32 beeinflusst.

Für die Ethernet-Verbindung schließen Sie ein Netzwerkkabel zwischen dem Anschluss RJ45 und einem Router oder Switch mit DHCP an, öffnen dann den seriellen Monitor mit 115200 Baud und prüfen, ob das Modul eine IP-Adresse erhält.

Für die WLAN-Verbindung legen Sie Name und Passwort des Netzwerks über AT-Befehle oder im Code der Anwendung fest.

Verwenden Sie die Pins IO2, IO4, IO12, IO14 und IO15 nicht als analoge Eingänge, solange WLAN aktiv ist, da sie zum Wandler ADC2 gehören. Für analoge Messungen verwenden Sie IO35, IO36 und IO39, die nur Eingänge sind.

Für OTA-Aktualisierungen stellen Sie sicher, dass das Modul Zugriff auf das lokale Netzwerk hat, und verwenden Sie die in der Firmware integrierte Aktualisierungsfunktion oder das Dienstprogramm espota.py.

Für einen stabilen Betrieb verwenden Sie ein Netzteil mit schnellem Start und kurze Versorgungskabel, und halten Sie in industriellen Umgebungen das Modul im Temperaturbereich von -40 °C bis +85 °C, geschützt vor Feuchtigkeit und Vibrationen.

88265
Versorgungsspannung
5 V sau 3.3 V
Abmessungen
25 x 63 x 17 mm
Betriebstemperatur
-40 °C la +85 °C
Anzahl der Pins
2 x 13
Schnittstelle
Seriell, Wi-Fi, Ethernet, Bluetooth
Logikspannung
3.3 V
Strom
80 mA in functionare medie, sursa de minimum 500 mA
Flash-Speicher
32 Mbit SPI
Pin-Raster
2.54 mm
Mikrocontroller
ESP32 dual-core Xtensa 32-bit LX6, pana la 240 MHz
WLAN
2.4 GHz, 802.11 b/g/n
Bluetooth
Bluetooth 4.2 (BR/EDR si BLE)
SRAM-Speicher
520 KB
Protokoll
IPv4, TCP/UDP

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].

/*
  WT32-ETH01 Ethernet + TCP client test

  Board (Arduino IDE, Tools > Board): ESP32 Dev Module
  Board package (Boards Manager): esp32 by Espressif Systems, versions 2.0.x or 3.x
  Boards Manager URL (File > Preferences):
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
  Libraries: none to install. WiFi.h, ETH.h and WiFiClient.h come with the ESP32 package.

  Wiring (CP2102 USB to TTL adapter, 3.3 V logic):
    Adapter +5V -> module 5V pin
    Adapter GND -> module GND pin
    Adapter TXD -> module RX0
    Adapter RXD -> module TX0
    Module IO0  -> GND only while uploading, then remove it and restart the module
    RJ45 port   -> router or switch with DHCP
*/

#include <WiFi.h>
#include <ETH.h>
#include <WiFiClient.h>

// Ethernet PHY (LAN8720A) settings specific to the WT32-ETH01
#define WT_PHY_ADDR  1
#define WT_PHY_POWER 16
#define WT_PHY_MDC   23
#define WT_PHY_MDIO  18

// TCP server to connect to (change to the address of your server)
const char* serverHost = "192.168.1.100";
const uint16_t serverPort = 8080;

static bool ethConnected = false;

// Network event handler
void onEvent(WiFiEvent_t event) {
  switch (event) {
    case ARDUINO_EVENT_ETH_START:
      Serial.println("ETH started");
      ETH.setHostname("wt32-eth01");
      break;
    case ARDUINO_EVENT_ETH_CONNECTED:
      Serial.println("ETH cable connected");
      break;
    case ARDUINO_EVENT_ETH_GOT_IP:
      Serial.print("IP address: ");
      Serial.println(ETH.localIP());
      ethConnected = true;
      break;
    case ARDUINO_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH disconnected");
      ethConnected = false;
      break;
    default:
      break;
  }
}

void setup() {
  Serial.begin(115200);
  delay(500);
  WiFi.onEvent(onEvent);

  // The order of the arguments changed in version 3 of the ESP32 package
#if ESP_ARDUINO_VERSION_MAJOR >= 3
  ETH.begin(ETH_PHY_LAN8720, WT_PHY_ADDR, WT_PHY_MDC, WT_PHY_MDIO, WT_PHY_POWER, ETH_CLOCK_GPIO0_IN);
#else
  ETH.begin(WT_PHY_ADDR, WT_PHY_POWER, WT_PHY_MDC, WT_PHY_MDIO, ETH_PHY_LAN8720, ETH_CLOCK_GPIO0_IN);
#endif
}

void loop() {
  if (!ethConnected) {
    delay(500);
    return;
  }

  WiFiClient client;
  if (!client.connect(serverHost, serverPort)) {
    Serial.println("TCP connection failed");
    delay(2000);
    return;
  }

  Serial.println("TCP connected, sending test payload");
  client.println("Hello from WT32-ETH01");

  // Wait up to 3 seconds for an answer
  unsigned long start = millis();
  while (client.available() == 0) {
    if (millis() - start > 3000) {
      Serial.println("Server timeout");
      client.stop();
      return;
    }
    delay(10);
  }

  // Print the answer of the server
  while (client.available()) {
    Serial.write(client.read());
  }
  client.stop();
  delay(5000);
}

WT32-ETH01 ist eine Platine mit ESP32 und Ethernet-Anschluss, die in Projekten eingesetzt wird, die eine stabilere kabelgebundene Verbindung als WLAN benötigen, zum Beispiel Automatisierungsknoten, Gateways für serielle Geräte oder Überwachungstafeln. In diesem Tutorial verwenden wir das Modul allein, programmiert aus der Arduino IDE mit dem Board ESP32 Dev Module, ohne eine weitere Entwicklungsplatine.

Das Modul hat keinen USB-Anschluss, deshalb programmieren wir es über einen USB-TTL-Adapter CP2102 mit 3,3 V Logikpegel. Am Ende haben wir ein Programm, das das Ethernet startet, die vom Router erhaltene IP-Adresse anzeigt und regelmäßig prüft, ob das Netzwerk antwortet.

Modul Gateway Wireless ESP32 mit Ethernet, Wi-Fi und Bluetooth, WT32-ETH01

So funktioniert es:

Der ESP32 enthält den MAC-Controller für Ethernet, und der Schaltkreis LAN8720A auf der Platine ist der physische Teil (PHY), der mit dem Kabel kommuniziert. Beide sind über die Schnittstelle RMII verbunden, die einen Referenztakt von 50 MHz benötigt. Dieser Takt kommt von einem Oszillator auf der Platine, der vom ESP32 über den Pin IO16 eingeschaltet wird, und gelangt über den Pin IO0 in den ESP32. Deshalb wird im Programm der Pin IO16 als Versorgungspin des PHY deklariert und der Takt auf ETH_CLOCK_GPIO0_IN gesetzt.

Die Pins IO23 (MDC) und IO18 (MDIO) bilden den Management-Bus, über den der ESP32 den LAN8720A konfiguriert, und die PHY-Adresse ist 1. Die eigentlichen Daten laufen über die RMII-Pins IO19, IO21, IO22, IO25, IO26 und IO27, die intern genutzt werden und nicht auf den Stiftleisten erscheinen.

Einige nützliche Berechnungen. Die serielle Schnittstelle mit 115200 Baud überträgt für jedes Byte 10 Bit (ein Startbit, 8 Datenbits und ein Stoppbit), also etwa 115200 / 10 = 11520 Byte pro Sekunde. Das Ethernet mit 100 Mbit/s hat eine theoretische Geschwindigkeit von 100 / 8 = 12,5 MB pro Sekunde, also mehr als 1000-mal so schnell. Der mittlere Verbrauch beträgt 80 mA, die Versorgung muss aber für die Stromspitzen von WLAN und Ethernet mindestens 500 mA liefern können. Ein USB-Port liefert 500 mA, das reicht also aus.

Anschluss:

Wir versorgen das Modul über den Pin +5V des Adapters CP2102, der die 5 V aus dem USB direkt weitergibt. Den Pin 3V3 des Adapters verwenden wir nicht, da sein Regler nur einen kleinen Strom liefert, der für einen ESP32 mit WLAN nicht ausreicht. Die Signale sind 3,3 V, deshalb ist kein Pegelwandler nötig, aber legen Sie niemals 5 V an die Signalpins an. Die serielle Leitung wird gekreuzt verbunden: TXD des Adapters an RX0 und RXD des Adapters an TX0. Der Pin IO0 wird nur so lange mit GND verbunden, wie wir das Programm laden.

Pin des Produkts Wird verbunden mit Funktion
5V (Stiftleiste 1) Pin +5V des Adapters CP2102 Versorgung mit 5 V aus dem USB
GND (Stiftleiste 1, neben dem Pin 5V) Pin GND des Adapters CP2102 Gemeinsame Masse
RX0 (Stiftleiste 2) Pin TXD des Adapters CP2102 Serieller Empfang, IO3
TX0 (Stiftleiste 2) Pin RXD des Adapters CP2102 Serielles Senden, IO1
IO0 (Stiftleiste 2) Pin GND neben IO0, auf Stiftleiste 2 Programmiermodus, nur beim Laden
Anschluss RJ45 Router oder Switch mit DHCP, über Kabel Cat5e Netzwerkverbindung
3V3 Nicht angeschlossen Wird hierüber nicht versorgt, wenn der Pin 5V verwendet wird

Anschluss WT32-ETH01 an den USB-TTL-Adapter CP2102 zur Programmierung, mit Ethernet-Kabel zum Router

Tasten, Einstellregler und Anzeigen:

Die Platine hat keine Tasten, Potentiometer, Jumper oder Schalter. Der Programmiermodus wird über eine Drahtbrücke zwischen IO0 und GND eingeschaltet, das Zurücksetzen erfolgt über den Pin EN. Den Zustand der Platine zeigen drei LEDs an.

Element Funktion Bedienung
Verbindung IO0 - GND Wählt den Startmodus des ESP32 Beim Start verbunden, wartet der ESP32 auf das Programm über die serielle Schnittstelle. Entfernt, startet er das Programm aus dem Flash.
Pin EN Aktiviert oder setzt das Modul zurück Kurz mit GND berührt, setzt sich das Modul zurück. Offen gelassen, bleibt das Modul eingeschaltet.
LED POWER (LED1) Zeigt die Versorgung an Leuchtet bei normaler Versorgung. Bleibt sie aus, prüfen Sie die Versorgung und die Polarität.
LED RXD (LED3) Zeigt Datenverkehr auf RXD2 (IO5) an Leuchtet, wenn auf der Leitung RXD2 Daten übertragen werden. Im Programm des Tutorials bleibt sie aus, weil diese Leitung nicht genutzt wird.
LED TXD (LED4) Zeigt Datenverkehr auf TXD2 (IO17) an Leuchtet, wenn auf der Leitung TXD2 Daten übertragen werden. Im Programm des Tutorials bleibt sie aus.
Pin LINK Ausgang für die Anzeige der Netzwerkverbindung Kann mit einem Vorwiderstand an eine externe LED angeschlossen werden, wenn Sie den Status der Verbindung sehen möchten.

Programmiermodus. Verbinden Sie die Brücke zwischen IO0 und GND, bevor Sie die Platine einschalten oder zurücksetzen. Nachdem die Arduino IDE das Laden beendet hat, entfernen Sie die Brücke und starten die Versorgung neu. Zeigt der serielle Monitor die Meldung waiting for download an, steckt die Brücke noch oder die Platine wurde nicht neu gestartet.

Zurücksetzen. Um das Programm neu zu starten, ohne die Versorgung zu trennen, berühren Sie den Pin EN kurz mit einem Draht an GND. Das Programm startet von vorn, und Sie sehen die Startmeldungen im seriellen Monitor erneut.

Die LED POWER. Beim Anschluss des Adapters am USB-Port muss sie sofort aufleuchten. Das ist das erste Zeichen dafür, dass Versorgung und Masse stimmen.

Board und Bibliotheken:

In der Arduino IDE wählen Sie unter Tools > Board das Board ESP32 Dev Module aus dem Paket esp32 von Espressif Systems, das über den Boards Manager installiert wird. Das Paket liegt der Arduino IDE nicht bei, deshalb tragen Sie zuerst unter File > Preferences bei Additional boards manager URLs die Adresse https://espressif.github.io/arduino-esp32/package_esp32_index.json ein. Das Programm wurde für die Versionen 2.0.x und 3.x des Pakets geschrieben. Stellen Sie Upload Speed auf 115200 ein.

Das Programm verwendet nur die Bibliotheken, die im ESP32-Paket enthalten sind (WiFi.h, ETH.h und WiFiClient.h), deshalb muss keine Bibliothek über den Library Manager installiert werden.

Der Code:

Das Programm startet die Ethernet-Schnittstelle mit den Parametern der Platine WT32-ETH01, zeigt die Netzwerkereignisse und die IP-Adresse an und versucht alle 5 Sekunden eine TCP-Verbindung zum Gateway des Netzwerks, also zum Router, auf Port 80 aufzubauen.

/*
  WT32-ETH01 Ethernet test: prints the IP address and checks the router
  Board (Arduino IDE, Tools > Board): ESP32 Dev Module
  Board package (Boards Manager): esp32 by Espressif Systems, versions 2.0.x or 3.x
  Boards Manager URL (File > Preferences):
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
  Libraries: none to install. WiFi.h, ETH.h and WiFiClient.h come with the ESP32 package.
  Wiring (CP2102 USB to TTL adapter, 3.3 V logic):
    Adapter +5V -> module 5V pin (row 1)
    Adapter GND -> module GND pin next to 5V (row 1)
    Adapter TXD -> module RX0
    Adapter RXD -> module TX0
    Module IO0  -> module GND next to IO0 (row 2), only while uploading
    RJ45 port   -> router or switch with DHCP
*/
#include <WiFi.h>
#include <ETH.h>
// Ethernet PHY (LAN8720A) settings specific to the WT32-ETH01
#define WT_PHY_ADDR  1   // PHY address
#define WT_PHY_POWER 16  // GPIO16 enables the 50 MHz oscillator
#define WT_PHY_MDC   23  // Management clock pin
#define WT_PHY_MDIO  18  // Management data pin
static bool ethConnected = false;       // True after an IP address is received
static unsigned long lastCheck = 0;     // Time of the last network check
const unsigned long CHECK_INTERVAL = 5000;  // Check every 5 seconds
// Called by the system for every network event
void onEvent(WiFiEvent_t event) {
  switch (event) {
    case ARDUINO_EVENT_ETH_START:
      Serial.println("ETH started");
      ETH.setHostname("wt32-eth01");  // Name shown on the router
      break;
    case ARDUINO_EVENT_ETH_CONNECTED:
      Serial.println("ETH cable connected");
      break;
    case ARDUINO_EVENT_ETH_GOT_IP:
      Serial.print("ETH MAC: ");
      Serial.println(ETH.macAddress());
      Serial.print("IP address: ");
      Serial.println(ETH.localIP());
      Serial.print("Subnet mask: ");
      Serial.println(ETH.subnetMask());
      Serial.print("Gateway: ");
      Serial.println(ETH.gatewayIP());
      ethConnected = true;
      break;
    case ARDUINO_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH cable disconnected");
      ethConnected = false;
      break;
    case ARDUINO_EVENT_ETH_STOP:
      Serial.println("ETH stopped");
      ethConnected = false;
      break;
    default:
      break;
  }
}
void setup() {
  Serial.begin(115200);  // Serial monitor on TX0 / RX0
  delay(500);
  Serial.println("WT32-ETH01 Ethernet test");
  WiFi.onEvent(onEvent);  // Register the event handler
  // The order of the arguments changed in version 3 of the ESP32 package
#if ESP_ARDUINO_VERSION_MAJOR >= 3
  ETH.begin(ETH_PHY_LAN8720, WT_PHY_ADDR, WT_PHY_MDC, WT_PHY_MDIO, WT_PHY_POWER, ETH_CLOCK_GPIO0_IN);
#else
  ETH.begin(WT_PHY_ADDR, WT_PHY_POWER, WT_PHY_MDC, WT_PHY_MDIO, ETH_PHY_LAN8720, ETH_CLOCK_GPIO0_IN);
#endif
}
void loop() {
  if (millis() - lastCheck < CHECK_INTERVAL) {
    return;  // Not time yet
  }
  lastCheck = millis();
  if (!ethConnected) {
    Serial.println("Waiting for an IP address...");
    return;
  }
  // Show the link speed and duplex mode
  Serial.print("Link: ");
  Serial.print((unsigned int)ETH.linkSpeed());
  Serial.print(" Mbps, ");
  Serial.println(ETH.fullDuplex() ? "full duplex" : "half duplex");
  // Try a TCP connection to the router on port 80 with a 3 second timeout
  WiFiClient client;
  if (client.connect(ETH.gatewayIP(), 80, 3000)) {
    Serial.println("Router reachable on port 80");
    client.stop();  // Close the connection
  } else {
    Serial.println("Router did not accept the connection on port 80");
  }
}

So funktioniert der Code:

Zu Beginn definieren wir die Parameter des PHY: WT_PHY_ADDR ist die Adresse 1 des Schaltkreises LAN8720A, WT_PHY_POWER ist der Pin 16, der den Oszillator einschaltet, und WT_PHY_MDC und WT_PHY_MDIO sind die Pins 23 und 18 des Management-Busses. Die Variable ethConnected speichert, ob wir eine IP-Adresse erhalten haben, und lastCheck speichert den Zeitpunkt der letzten Prüfung.

Die Funktion onEvent wird vom System bei jedem Netzwerkereignis aufgerufen. Bei ARDUINO_EVENT_ETH_START setzen wir den Hostnamen mit ETH.setHostname. Bei ARDUINO_EVENT_ETH_CONNECTED wissen wir, dass das Kabel angeschlossen ist. Bei ARDUINO_EVENT_ETH_GOT_IP zeigen wir die IP-Adresse, die Subnetzmaske und das Gateway an und setzen ethConnected auf true. Bei ARDUINO_EVENT_ETH_DISCONNECTED setzen wir ethConnected auf false.

Im setup starten wir den seriellen Monitor mit 115200 Baud, registrieren die Funktion onEvent mit WiFi.onEvent und rufen ETH.begin auf. Die Reihenfolge der Argumente von ETH.begin hat sich in Version 3 des ESP32-Pakets geändert, deshalb wird der Aufruf mit der Direktive ESP_ARDUINO_VERSION_MAJOR ausgewählt.

Im loop prüfen wir alle 5 Sekunden mit millis, ob das Ethernet verbunden ist. Wenn ja, zeigen wir die Verbindungsgeschwindigkeit mit ETH.linkSpeed und den Duplexmodus an. Danach erzeugen wir ein Objekt WiFiClient und rufen client.connect zu ETH.gatewayIP() auf Port 80 auf, mit einem Zeitlimit von 3000 ms. Akzeptiert der Router die Verbindung, funktioniert das Netzwerk vollständig, und wir schließen die Verbindung mit client.stop.

Ergebnis:

Öffnen Sie den seriellen Monitor mit 115200 Baud, nachdem Sie die Verbindung IO0 - GND entfernt und die Platine neu gestartet haben. Nach einigen Sekunden erscheinen die folgenden Meldungen mit der IP-Adresse, die Ihr Router vergeben hat.

WT32-ETH01 Ethernet test
ETH started
ETH cable connected
ETH MAC: 24:6F:28:A1:5C:7E
IP address: 192.168.1.57
Subnet mask: 255.255.255.0
Gateway: 192.168.1.1
Link: 100 Mbps, full duplex
Router reachable on port 80
Link: 100 Mbps, full duplex
Router reachable on port 80

Häufige Probleme:

Das Laden bricht mit dem Fehler Failed to connect to ESP32 ab. Die Ursache ist meist, dass IO0 beim Start nicht mit GND verbunden ist oder dass die Leitungen TX und RX nicht gekreuzt sind. Verbinden Sie IO0 mit GND, prüfen Sie, dass TXD des Adapters an RX0 und RXD an TX0 liegt, schalten Sie dann die Platine erneut ein und wiederholen Sie das Laden.

Nach dem Laden zeigt der serielle Monitor waiting for download an. Die Brücke zwischen IO0 und GND steckt noch. Entfernen Sie sie und starten Sie die Versorgung neu.

Im seriellen Monitor erscheinen unlesbare Zeichen. Die Geschwindigkeit des seriellen Monitors ist nicht 115200 Baud. Wählen Sie diesen Wert in der rechten unteren Ecke des Monitors aus.

Es erscheint ETH started, aber keine IP-Adresse. Das Kabel ist nicht angeschlossen, der Router hat kein aktives DHCP oder der Anschluss ist defekt. Prüfen Sie das Kabel, probieren Sie einen anderen Anschluss am Router aus und achten Sie darauf, ob die Meldung für das angeschlossene Kabel erscheint.

Das Modul startet sich selbst neu oder blockiert beim Start. Die Versorgung ist zu schwach oder die Spannung steigt zu langsam an. Verwenden Sie den Pin +5V des Adapters oder ein 5-V-Netzteil mit mindestens 500 mA, vermeiden Sie die Versorgung über den Pin 3V3 des Adapters und verwenden Sie kurze Versorgungsleitungen.

Das Programm lässt sich nicht kompilieren und meldet einen Fehler bei ETH.begin. Das installierte ESP32-Paket hat eine andere Version als erwartet. Verwenden Sie eine Version 2.0.x oder 3.x und lassen Sie das Board ESP32 Dev Module ausgewählt.

Einschränkungen und Tipps:

Das Modul hat einen einzigen Ethernet-Anschluss mit 10/100 Mbit/s ohne Versorgung über das Netzwerkkabel (PoE), es braucht deshalb immer eine eigene Stromversorgung. Die Pins IO34 bis IO39 sind nur Eingänge, und auf den Stiftleisten sind nur IO35, IO36 und IO39 herausgeführt. Die Eingänge ADC2 (IO2, IO4, IO12, IO14, IO15) können nicht gelesen werden, solange das WLAN eingeschaltet ist. Die Pins IO0, IO2 und IO12 sind Startpins und dürfen beim Start nicht erzwungen werden.

Der Logikpegel beträgt 3,3 V, deshalb setzen Sie für Geräte mit 5 V einen Pegelwandler ein. Das Modul kann zwischen -40 °C und +85 °C betrieben werden, es ist aber ratsam, es vor Feuchtigkeit und Vibrationen zu schützen.

Anschließend können Sie ein Gateway seriell-Ethernet mit den Pins TXD und RXD bauen, einen Webserver zur Steuerung einiger Relais, einen MQTT-Knoten für Automatisierungen oder ein Gerät mit Firmware-Aktualisierung OTA über das Netzwerk.