Zuletzt geändert am 2. April 2024 um 23:24

WT32-ETH01 ESP32 Modul mit LAN

Pinout

WT32-ETH01 pinout LL.png

Besonderheiten

LAN Port

Das WT32-ETH01 ist ein Modul mit einem ESP32 und einem kabelgebundenen LAN Anschluss. Wifi und LAN funktionieren dabei teilweise unabhängig, teilweise abhängig voneinander:

  • Es kann nur LAN genutzt werden und der Funk-Teil kann dann für ESP-Now oder BLE verwendet werden.
  • Es kann natürlich auch nur WiFi genutzt werden, LAN liegt dann einfach brach.
  • Es kann LAN und WiFi genutzt werden:
    • Normalerweise teilt sich das Modul den IP-Stack - typische Funktionen greifen dann mit dem gerade verfügbaren Interface auf das Netzwerk zu und das Modul bekommt im gleichen Netz jeweils eine unterschiedliche Adresse für WiFi und LAN. Es ist mir zumindest per Arduino nicht klar, wie z.B. ein HTTP-Server nur an ein bestimmtes Interface gebunden wird - der Stack scheint immer beide Interface zu bedienen.
    • Nur mit speziellen Beispielen (und dann nicht mehr mit der Arduino-Umgebung) lassen sich auch Dinge tun, wo die Interface getrennt werden - damit lassen sich NAT-Router, Access-Points usw realisieren.

Bei der Prorammierung ergibt sich die Besonderheit, dass auch die Ethernet-Events (also per LAN) als WifiEvent auftauchen - also darin kann man sehen, ob z.B. der Kabel-Link aufgebaut worden ist und eine IP-Adresse bezogen wurde.

LEDs

Es gibt folgende LEDs:

  • LED Grün (LED3 im Schaltplan), an GPIO5 - diese LED kann vom ESP32 geschaltet werden (LOW-Aktiv)
  • LED Grün (LED4 im Schaltplan), an GPIO17 - diese LED kann vom ESP32 geschaltet werden (LOW-Aktiv)
  • LED Rot, Power-LED, immer an wenn das Modul versorgt wird

Nicht nutzbare GPIOs

  • IO0: Nur zum Programmieren nutzen, teilt sich Takt-Signal mit dem LAN Chip. Pull-up zum normalen Start ist aber vorhanden.
  • IO2: Kann genutzt werden, aber besser offen lassen um das Modul programmieren zu können.
  • IO6 - IO11: nur intern für das Flash
  • IO12: Besser nicht nutzen, Modul startet nicht wenn auf HIGH gezogen
  • IO13, IO18, IO19, IO21, IO22, IO23, IO25, IO26, IO27: belegt für LAN-Chip
  • IO16: belegt für LAN-Chip Takt Generator

Nutzbare GPIOs

  • IO1: TxD0, Standard UART zum Programmieren und Debuggen
  • IO3: RxD0, Standard UART zum Programmieren und Debuggen
  • IO4: frei nutzbar
  • IO5: frei nutzbar, grüne LED ist dran, mit RXD beschriftet (7. Pin von Links-Oben), gibt PWM aus beim booten
  • IO14: frei nutzbar, gibt aber PWM aus beim booten
  • IO15: nutzbar, gibt aber PWM aus beim booten
  • IO17: nutzbar, grüne LED ist dran, mit TXD beschriftet (8. Pin von Links-Oben)
  • IO35: nutzbar nur als Eingang
  • IO32: frei nutzbar, beschriftet mit CFG (5. Pin von Links-Oben)
  • IO33: frei nutzbar, beschriftet mit 485_EN (6. Pin von Links-Oben)
  • IO36: nutzbar nur als Eingang
  • IO39: nutzbar nur als Eingang

Wie programmiert man es?

Am einfachsten geht es mit einem ESP Prog Adapter, den man günstig an vielen Stellen kaufen kann, der eigentlich zur Programmierung für ESP-01 Module mit ESP8266 ist, der aber auch hier prima funktioniert.

Leider hat das WT32-ETH01 Modul einige Pinne mehrfach mit gleichem Namen, aber unterschiedlicher Funktion (RXD, TXD, EN-Pinne) und es ist nicht ganz klar, welche Pinne dann was genau machen. Daher habe ich die Pin-Positionen mit aufgeführt. Das Modul muss wie folgt verbunden werden:

WT32 ETH01 with ESP Prog.jpg

Verbindung WT32-ETH01 mit ESP Prog
WT32-ETH01 Pin ESP Prog Pin Kabel-Farbe
GND (2. Pin von Links-Oben) GND Schwarz
3V3 (3. Pin von Links-Oben) 3V3 Rot
EN (1. oder 4. Pin von Links-Oben) RST Violett
TXD (1. Pin von Rechts-Oben) TXD Orange
RXD (2. Pin von Rechts-Oben) RXD Grau
IO0 (3. Pin von Rechts-Oben) IO0 Grün

In platformio.ini habe ich folgendes stehen um das Modul zu programmieren:

[env:wt32-eth01]
platform = espressif32
board = wt32-eth01
framework = arduino
monitor_speed = 115200
upload_speed = 460800

Stromversorgung mit 5V

Wenn es einmal programmiert ist (und man OTA aktiviert hat, was bei diesem Modul dann sowohl per Wifi als auch per LAN funktioniert), kann man es wie folgt per 5V-USB mit Strom versorgen:

Verbindung WT32-ETH01 mit +5V
WT32-ETH01 Pin Stromversorgung
GND (11. Pin von Links-Oben) GND
5V (12. Pin von Links-Oben) +5V

Programmierung

Das WT32-ETH01 nutzt den LAN8720 Chip, daher bei Ardunino am besten mit dem Beispiel "Ethernet - ETH_LAN8720" beginnen. Der öffnet die LAN Verbindung - spezieller Einstellungen für den LAN-Chip benötigt es praktischerweise nicht, es lief bei mir out-of-the-box.

Wird zusätzlich WiFi benötigt, kann dieses einfach wie bei anderen ESP32-Beispielen mit hinzugefügt werden. Es gibt dann typischerweise unter Arduino-IDF die zwei Objekte ETH und WiFi. Für beide lassen sich die Interface mit den .begin Methoden starten, beim WiFi muss SSID und WiFi-Passwort übergeben, bei ETH braucht nichts übergeben zu werden.