Problem mit ESP32_PoE LAN (keine IP- Adresse)

Hallo zusammen,
Ich habe eine ESP32-POE-ISO-EA-IND, welchen ich mit LAN betreiben will.

Leider bezieht sich der ESP keine IPv4- Adresse (im LAN ist IPv6 deaktiviert)

Als Test Sketch habe ich von Github folgenden Sketch geladen:

/*
    This sketch shows the Ethernet event usage

*/

#include <ETH.h>


static bool eth_connected = false;

void WiFiEvent(WiFiEvent_t event)
{
  switch (event) {
    case ARDUINO_EVENT_ETH_START:
      Serial.println("ETH Started");
      //set eth hostname here
      ETH.setHostname("esp32-ethernet");
      break;
    case ARDUINO_EVENT_ETH_CONNECTED:
      Serial.println("ETH Connected");
      break;
    case ARDUINO_EVENT_ETH_GOT_IP:
      Serial.print("ETH MAC: ");
      Serial.print(ETH.macAddress());
      Serial.print(", IPv4: ");
      Serial.print(ETH.localIP());
      if (ETH.fullDuplex()) {
        Serial.print(", FULL_DUPLEX");
      }
      Serial.print(", ");
      Serial.print(ETH.linkSpeed());
      Serial.println("Mbps");
      eth_connected = true;
      break;
    case ARDUINO_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH Disconnected");
      eth_connected = false;
      break;
    case ARDUINO_EVENT_ETH_STOP:
      Serial.println("ETH Stopped");
      eth_connected = false;
      break;
    default:
      break;
  }
}

void setup()
{
  Serial.begin(115200);
  WiFi.onEvent(WiFiEvent);
  ETH.begin();
}


void loop()
{
  Serial.print("ETH MAC: ");
  Serial.print(ETH.macAddress());
  Serial.print(", IPv4: ");
  Serial.println(ETH.localIP());

  delay(2000);
}
Im Seriellen Monitor kommt folgende Meldung:

12:39:02.230 -> ETH MAC: E (441038) esp_eth: esp_eth_ioctl(348): ethernet driver handle can't be null
12:39:02.230 -> 00:00:00:00:00:00, IPv4: 0.0.0.0
12:39:04.230 -> ETH MAC: E (443038) esp_eth: esp_eth_ioctl(348): ethernet driver handle can't be null
12:39:04.230 -> 00:00:00:00:00:00, IPv4: 0.0.0.0

Kann mir jemand helfen, was ich da falsch mache oder beachten muss?

Gruß
Falke07

Gib uns bitte einen kompletten kompilierbaren Sketch.

Gruß Tommy

Edit: Einen Link zum Board und zur Eth-Lib wären auch sinnvoll.

Wenn das ist einer vom OLIMEX dann habe was für dich, mit Beispielen. Damit sollten auch die Interne Pins stimmen

Funktioniert dieses Beispiel für Sie?

Hallo,

Das ist der komplette Sketch nur : "Im Seriellen Monitor kommt folgende Meldung:" gehört da nicht hin.

Das ist eine Standart Lib: \esp32\2.0.11\libraries\Ethernet\src\ETH.h

Ja, das ist er und ich habe auch dort den Sketch geladen nur den void testClient() entfernt. Zudem habe ich noch keinen PIN angeschlossen. Will den ESP ersteinmal nur ins LAN bringen

https://github.com/OLIMEX/ESP32-POE/blob/master/SOFTWARE/ARDUINO/ESP32_PoE_Ethernet_Arduino/ESP32_PoE_Ethernet_Arduino.ino

Wifi ja, LAN nein. Das war mein erster Versuch.

Nur nochmal zur Sicherheit:
Es geht nur um LAN- Anbindung

Jetzt sehe dass das der gleicher Beispiel ist.
in Readme steht das:

Diese Demo basiert auf der Standard-Demo des espressif-Pakets "ETH_LAN8720", die für das Olimex-Board ESP32-PoE rev.B angepasst wurde.
Es implementiert das Erfassen einer IP-Adresse und die Nutzung von Ethernet-Ereignissen, die auf dem Terminal sichtbar sind.

Normaler weise sollte eine Verbindung zu Router statt finden. Sind im Router die LAN Ports freigegeben? Bei meinen kann das blocken.

OK, ich habe rev L, an einem TP-Switch TL-SG1005P

Muss ich dann noch eine Lib für den LAN8720 einbinden? wenn ja, wo finde ich diese? In Aduino IDE ist diese nicht (zumindest nicht gefunden)

https://sautter.com/blog/ethernet-on-esp32-using-lan8720/
der schreibt so was (Übersetzt mit Deepl.
"Es implementiert die LAN8720-Bootstrap-Konfiguration auf dem Waveshare-Board
Der LAN8720 auf dem Waveshare-Board ist so gebootstrapt, dass er die I²C-Adresse 1 verwendet. Sie müssen also den ESP-IDF so konfigurieren, dass er auf das LAN8720 als PHY1 zugreift config.phy_addr = PHY1;. die Erfassung einer IP-Adresse und die Nutzung von Ethernet-Events, die auf dem Terminal sichtbar sind."

Habe das Ding nicht. Kann nur schreiben was gefunden habe

Hi zusammen,

ich habe die Lösung gefunden.
Hier für alle, welche sich auch damit rumschlagen:
(Ohne Gewähr; bei mir hat es mit der rev. L funktioniert)

Ab der ESP32 Version 3.0.0-alpha3 müssen 2 GPIO PINS anders deklariert werden.

#define ETH_PHY_POWER 12
#define ETH_CLK_MODE ETH_CLOCK_GPIO17_OUT

Anmerkung: die Definierung muss vor #include <ETH.h> gesetzt werden.

Danke an alle, welche sich hierzu beteiligt haben

Gruß
Falke07

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.