This commit is contained in:
James 2024-04-27 15:08:49 +01:00
parent 0ea9c56e1a
commit e42891ae9e
2 changed files with 97 additions and 1 deletions

View File

@ -14,6 +14,7 @@ typedef struct
void setup() {
Serial.begin(115200);
eth_begin();
BLEDevice::init(""); // Initialize BLE device
}
@ -21,7 +22,6 @@ char currentName[128];
bool gotBasicInfo;
bool gotCellInfo;
void loop() {
Serial.printf("\r\n\r\n===============================\r\n\r\n");
@ -33,6 +33,11 @@ void loop() {
Serial.println("Devices found: " + String(foundDevices.getCount()));
while(!eth_ready){
Serial.println("Wait for eth...");
delay(250);
}
for (int i = 0; i < foundDevices.getCount(); i++) {
delay(1000);
Serial.printf("\r\n\r\n===============================\r\n\r\n");

91
ethernet.ino Normal file
View File

@ -0,0 +1,91 @@
#include <Arduino.h>
#include <ETH.h>
/*
* ETH_CLOCK_GPIO0_IN - default: external clock from crystal oscillator
* ETH_CLOCK_GPIO0_OUT - 50MHz clock from internal APLL output on GPIO0 - possibly an inverter is needed for LAN8720
* ETH_CLOCK_GPIO16_OUT - 50MHz clock from internal APLL output on GPIO16 - possibly an inverter is needed for LAN8720
* ETH_CLOCK_GPIO17_OUT - 50MHz clock from internal APLL inverted output on GPIO17 - tested with LAN8720
*/
#define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN // ETH_CLOCK_GPIO17_OUT
// Pin# of the enable signal for the external crystal oscillator (-1 to disable for internal APLL source)
#define ETH_POWER_PIN 16
// Type of the Ethernet PHY (LAN8720 or TLK110)
#define ETH_TYPE ETH_PHY_LAN8720
// I²C-address of Ethernet PHY (0 or 1 for LAN8720, 31 for TLK110)
#define ETH_ADDR 1
// Pin# of the I²C clock signal for the Ethernet PHY
#define ETH_MDC_PIN 23
// Pin# of the I²C IO signal for the Ethernet PHY
#define ETH_MDIO_PIN 18
static bool eth_ready = false;
void WiFiEvent(WiFiEvent_t event) {
Serial.print("E:");
Serial.println(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_ready = true;
break;
case ARDUINO_EVENT_ETH_DISCONNECTED:
Serial.println("ETH Disconnected");
eth_ready = false;
break;
case ARDUINO_EVENT_ETH_STOP:
Serial.println("ETH Stopped");
eth_ready = false;
break;
default:
break;
}
}
void eth_send(const char *data) {
Serial.print("\nconnecting...");
WiFiClient client;
if (!client.connect("10.6.0.1", 2003)) {
Serial.println("connection failed");
return;
}
client.print(data);
while (client.connected() && !client.available());
//long i;
while (client.available()) {
// i=i+1;
Serial.write(client.read());
// if(i==100){i=0; delay(1);}
}
Serial.println("closing connection\n");
client.stop();
}
void eth_begin() {
WiFi.onEvent(WiFiEvent);
ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK_MODE);
}