ESP32 ve W5500 Ethernet Modülü Kullanımı (HSPI Biyası)

👤 Yazar: ozcan 📅 Tarih: 02.08.2026 12:00 👁️ Görüntüleme: 6

ESP32 ve W5500 Ethernet Modülü Kullanımı (HSPI Biyası)

Bu içerikte, ESP32 (ESP-WROOM-32) geliştirme kartı ile W5500 Ethernet Modülü'nü HSPI (High-Speed SPI) arayüzü üzerinden bağlayarak kablolu (LAN) ağ bağlantısı kurmayı inceliyoruz. Wi-Fi'ın zayıf olduğu veya yüksek stabilite gerektiren IoT / otomasyon projelerinde yerel Ethernet bağlantısı mükemmel bir çözümdür.

ESP32 ve W5500 Ethernet Modülü Bağlantı Şeması

Gerekli Kütüphaneler:
  • ESP32 dahili Ethernet.h kütüphanesi veya Arduino Kütüphane Yöneticisi'nden yükleyebileceğiniz Ethernet3 / EthernetLarge kütüphaneleri kullanılabilir.
  • Bu bağlantı şemasında ESP32'nin varsayılan VSPI hatları (GPIO 18, 19, 23) yerine donanımsal HSPI (GPIO 12, 13, 14, 15) pinleri kullanılmıştır.

Devre Bağlantı Tablosu (HSPI Hatları)

W5500 Modül Pin ESP32 Bağlantı Pini Açıklama / Görev
10 (3.3V) 3V3 Pin 3.3V Besleme Gerilimi
4 (GND) GND Pin Ortak Toprak Hat
7 (SCS / CS) GPIO 15 HSPI Chip Select (CS) Pin
6 (SCLK) GPIO 14 HSPI Clock (SCK) Pin
8 (MOSI) GPIO 13 HSPI Master Out Slave In
9 (MISO) GPIO 12 HSPI Master In Slave Out
3 (RST) GPIO 4 Hardware Reset Control Pin
2 (INT) GPIO 5 Hardware Interrupt (Kesme) Pin
1 (NC) / 5 (5V) Boşta (NC) Kullanılmıyor

Örnek Kod: ESP32 + W5500 Web Server (Custom SPI Hatları)

ESP32'de özel SPI pinleri kullanırken SPIClass nesnesini HSPI donanım bloğu ile başlatıp Ethernet.init() veya Ethernet.begin() çağrılarından önce SPI pinlerini atamamız gerekir:

// ESP32 + W5500 Ethernet Web Server (HSPI Pin Yapılandırması)

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

// HSPI Pin Tanımlamaları (Şemaya Uygun)
#define ETH_CS    15
#define ETH_SCLK  14
#define ETH_MOSI  13
#define ETH_MISO  12
#define ETH_RST   4
#define ETH_INT   5

// Benzersiz MAC Adresi
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// Özel SPI Nesnesi (HSPI donanım bloğunu kullanır)
SPIClass hspi(HSPI);
EthernetServer server(80);

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println("ESP32 W5500 Baslatiliyor...");

  // W5500 Donanımsal Reset (GPIO 4 üzerinden)
  pinMode(ETH_RST, OUTPUT);
  digitalWrite(ETH_RST, LOW);
  delay(100);
  digitalWrite(ETH_RST, HIGH);
  delay(200);

  // Custom HSPI Pinlerini Başlat
  hspi.begin(ETH_SCLK, ETH_MISO, ETH_MOSI, ETH_CS);

  // Ethernet Kütüphanesine CS Pinini Bildir
  Ethernet.init(ETH_CS);

  // DHCP ile IP Al
  if (Ethernet.begin(mac) == 0) {
    Serial.println("DHCP Hata! Statik IP deneniyor...");
    IPAddress ip(192, 168, 1, 150);
    Ethernet.begin(mac, ip);
  }

  // Modül Donanım Kontrolü
  if (Ethernet.hardwareStatus() == EthernetNoHardware) {
    Serial.println("HATA: W5500 Modulu Algılanamadı! SPI Baglantilarini Kontrol Edin.");
    while (true);
  }

  server.begin();
  
  Serial.println("==================================");
  Serial.print("ESP32 Ethernet IP Adresi: ");
  Serial.println(Ethernet.localIP());
  Serial.println("==================================");
}

void loop() {
  EthernetClient client = server.available();
  if (client) {
    Serial.println("Yeni Baglanti Geldi!");
    boolean currentLineIsBlank = true;

    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        if (c == '\n' && currentLineIsBlank) {
          // HTTP Yanıtı Gönder
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println();
          
          client.println("");
          client.println("ESP32 W5500 Ethernet");
          client.println("");
          client.println("<h1>ESP32 W5500 Ethernet Sunucusu</h1>");
          client.println("<p>Kablolu Ağ Bağlantısı Başarılı!</p>");
          client.print("<p>Sistem Çalışma Süresi: ");
          client.print(millis() / 1000);
          client.println(" saniye</p>");
          client.println("");
          break;
        }

        if (c == '\n') {
          currentLineIsBlank = true;
        } else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }

    delay(1);
    client.stop();
  }
}

ESP32 Özel Notlar

  • GPIO 12 Strapping Pini: ESP32'de GPIO12 dahili flash voltaj regülatörünün modunu seçen bir strapping pinidir. Boot anında bu pinin lojik durumu kritik olabilir. Eğer kart boot kilitlenmesi yaşarsa, ETH_RST sıfırlama sırasını manuel geciktirmek veya VSPI hattına geçmek gerekebilir.
  • Donanımsal Reset (RST Pin): W5500 modülünün RST pini ESP32'nin GPIO 4 pinine bağlıdır. Kod içerisinde setup() aşamasında bu pini önce LOW yapıp ardından HIGH çekerek modülü resetlemek kararsız durumları çözer.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1