-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Using the prerelease of arduino-esp32 I was able to get networking to work with the code below. The following information I needed to have.
- Install in Arduino IDE 2, the arduino-esp32 development version. ETH_PHY_DM9051 in older releases is defined, but not provided (noop).
- Using the table of eth01-evo (this repo) and some guessing I came up with the
#definebelow. Critical important: first define, then#include <ETH.h>. - Short IO09 and the adjacent ground, so for flashing the right 4 pins will be connected.
- Apply 5V and ground, I did not manage to get flashing to work on 3.3V.
#define ETH_PHY_TYPE ETH_PHY_DM9051
#define ETH_PHY_ADDR 1
#define ETH_PHY_CS 9
#define ETH_PHY_IRQ 8
#define ETH_PHY_RST 6
#define ETH_PHY_SPI_HOST SPI2_HOST
#define ETH_PHY_SPI_SCK 7
#define ETH_PHY_SPI_MISO 3
#define ETH_PHY_SPI_MOSI 10
#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 testClient(const char * host, uint16_t port)
{
Serial.print("\nconnecting to ");
Serial.println(host);
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("connection failed");
return;
}
client.printf("GET / HTTP/1.1\r\nHost: %s\r\n\r\n", host);
while (client.connected() && !client.available());
while (client.available()) {
Serial.write(client.read());
}
Serial.println("closing connection\n");
client.stop();
}
void setup()
{
Serial.begin(115200);
Serial.println("Hello world\n");
WiFi.onEvent(WiFiEvent);
ETH.begin();
}
void loop()
{
if (eth_connected) {
testClient("google.com", 80);
}
delay(10000);
Serial.print("ETH MAC: ");
Serial.print(ETH.macAddress());
Serial.print(", IPv4: ");
Serial.print(ETH.localIP());
Serial.println("Next try\n");
}
This will result in:
Hello world
ETH Started
ETH Connected
ETH MAC: 56:32:04:XX:XX:XX, IPv4: 192.168.5.84, FULL_DUPLEX, 100Mbps
ETH MAC: 56:32:04:XX:XX:XX, IPv4: 192.168.5.84Next try
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels