ESP32 - W5500 - TCP

Başlatan berkay_91, 30 Aralık 2025, 00:46:45

berkay_91

Merhaba, TCP ile ESP32 ve W5500 kullanarak işlemcinin server olduğu, PlatformIO veya Arduino ide ortamında ethernet haberleşmesi yapan oldu mu? bulduğum kütüphaneler ve AI ya yazdırdığım programlar her seferinde hata verdi hatayı düzelttiğimde ise Hercules arayüzün den PC yi Client olarak ESP32 ye bağlayamadım, deneme yaptığım program aşağıda. yardımcı olurmusunuz


#include <SPI.h>
#include <Ethernet.h>

#define W5500_CS    4
#define W5500_MOSI  18
#define W5500_MISO  17
#define W5500_SCK   8

#define Ethernet_LED 6

#define CMD_LED_ON   0x10
#define CMD_LED_OFF  0x90

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);

EthernetServer server(5000);
EthernetClient client;

void setup()
{
  pinMode(Ethernet_LED, OUTPUT);
  digitalWrite(Ethernet_LED, LOW);

  Serial.begin(115200);
  delay(1000);

  Serial.println("ESP32 W5500 TCP SERVER");

  SPI.begin(W5500_SCK, W5500_MISO, W5500_MOSI);
  Ethernet.init(W5500_CS);
  Ethernet.begin(mac, ip);

  Serial.print("IP: ");
  Serial.println(Ethernet.localIP());

  server.begin();
  Serial.println("TCP Server baslatildi (Port 5000)");
}

void loop()
{
  if (!client || !client.connected())
  {
    client = server.available();   
    if (client)
      Serial.println("Hercules baglandi");
  }

  if (client && client.available())
  {
    uint8_t cmd = client.read();
    Serial.print("Gelen veri: 0x");
    Serial.println(cmd, HEX);

    if (cmd == CMD_LED_ON)
    {
      digitalWrite(Ethernet_LED, HIGH);
      client.write("LED ON\n");
    }
    else if (cmd == CMD_LED_OFF)
    {
      digitalWrite(Ethernet_LED, LOW);
      client.write("LED OFF\n");
    }
  }
}

triyak

Şu kod uart tcp köprüsü kurar. test ettiğim koddur.

#include <SPI.h>
#include <Ethernet.h>

// W5500 CS pini (ESP32'ye bağladığın CS pinine göre ayarla)
#define ETH_CS 5

// UART pinleri
#define UART_RX 16
#define UART_TX 17

// TCP server bilgileri
IPAddress ip(10, 10, 100, 254);
uint16_t tcpPort = 8899;

// Ethernet tanımları
EthernetServer server(tcpPort);
EthernetClient client;

// UART2 için donanım seri portu
HardwareSerial SerialUart(2);

void setup() {
  Serial.begin(9600);
  SerialUart.begin(115200, SERIAL_8N1, UART_RX, UART_TX);

  // Ethernet başlat
  Ethernet.init(ETH_CS);
  Ethernet.begin((uint8_t *)"\xDE\xAD\xBE\xEF\xFE\xED", ip); // MAC sabit, IP belirli
  delay(1000);

  Serial.print("IP: ");
  Serial.println(Ethernet.localIP());

  server.begin();
  Serial.println("TCP Server hazır");
}

void loop() {
  // Yeni client bağlanırsa al
  if (!client || !client.connected()) {
    client = server.available();
  }

  // TCP -> UART
  if (client && client.available()) {
    while (client.available()) {
      int data = client.read();
      Serial.write(data);
    }
  }

  // UART -> TCP
  if (client && client.connected() && SerialUart.available()) {
    while (SerialUart.available()) {
      int data = SerialUart.read();
      client.write(data);
    }
  }
}

berkay_91

Hocam programı nerede derlemiştiniz? arduino ide veya platformIO da derleyince aşağıdaki hatayı alıyorum

sketch_jan03a:12:16: error: cannot declare variable 'server' to be of abstract type 'EthernetServer'
EthernetServer server(tcpPort);

elektronikhobi

#3
Burada bir çözüm önerilmiş.

Belki başka bir kütüphane kullanmak düşünülebilir.

Arduino'nun kendi kütüphanesi de var.

berkay_91

bunları denedim yine aynısı oluyor

triyak

arduino ide kullanıyorum.
sizin sorun, w5500 kütüphaneniz eksik yada eski olması.

berkay_91

https://github.com/arduino-libraries/Ethernet buradaki kütüphaneyi kullanıyorum kullandığınız kütüphaneyi gönderebilir misiniz? yakinteknoloji91@gmail.com

Endorfin35+

@berkay_91 Aynı sorunu yaşayıp çözüm bulamadım. Nihayetinde arduino framework u bırakıp idf e geçtim. İdf e geçmeni tavsiye ederim.
"İşi bilen yapar, az bilen akıl verir, bilmeyen eleştirir, yapamayan çamur atar."

berkay_91

sorun çözüldü github sayfamda PlatformIO da çalışan örnek programı, revize ettiğim ethernet kütüphanesini ve diğer ayrıntıları paylaştım...

https://github.com/Berkay-Turgay/ESP32-S3-W5500-TCP-Server-to-Hercules-Client/tree/main

Benzer Konular (5)