Arduino Uno ve W5500 Ethernet Modülü Kullanımı

👤 Yazar: ozcan 📅 Tarih: 02.08.2026 11:51 👁️ Görüntüleme: 5

Arduino Uno ve W5500 Ethernet Modülü Kullanımı

Bu rehberde, WIZnet W5500 Ethernet Modülü ile Arduino Uno'yu SPI protokolü üzerinden bağlayarak kablolu (LAN) ağlara nasıl erişeceğinizi inceliyoruz. W5500 modülü, dahili TCP/IP donanım yığını (Hardwired TCP/IP stack) sayesinde Arduino'nun işlemci yükünü ve RAM kullanımını minimumda tutarak oldukça kararlı bir haberleşme sağlar.

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

Gerekli Kütüphane:
  • Arduino IDE ile dahili gelen veya Kütüphane Yöneticisi'nden yüklenebilen resmi Ethernet (v2.0 veya üzeri) kütüphanesi W5500 çipini doğrudan destekler.

Devre Bağlantı Tablosu

W5500 modülü Arduino Uno ile donanımsal SPI hattı üzerinden haberleşir. Görseldeki pin eşleşmeleri şu şekildedir:

W5500 Pin Ucu Arduino Uno Bağlantısı Açıklama
VCC (5V / 3.3V) 5V veya 3.3V Pin Besleme Gerilimi *(Modül üzerindeki regülatör çeşidine göre ayarlanır)*
GND GND Pin Ortak Toprak Hat Sıfırlaması
RST RESET Pin Hardware Reset Sinyali
SCS (CS) Digital 10 (D10) SPI Chip Select (Slave Select)
MOSI Digital 11 (D11) SPI Master Out Slave In
MISO Digital 12 (D12) SPI Master In Slave Out
SCLK (CLK) Digital 13 (D13) SPI Clock (Saat Sinyali)
INT / NC Boşta (NC) Kesme / Baglantısız uç (Kullanılmıyor)

Örnek Kod: Web Server & Otomatik DHCP Okuma

Aşağıdaki kod, W5500 modülünü kullanarak router'dan otomatik IP (DHCP) talep eder ve Arduino'yu bir yerel Web Sunucusuna dönüştürür. Tarayıcıdan Arduino'nun IP adresine bağlandığınızda analog pin değerlerini ekrana yazdırır:

// Arduino Uno + W5500 Ethernet Web Server Örneği

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

// Benzersiz bir MAC Adresi tanımlayın (Ağdaki diğer cihazlarla çakışmamalıdır)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// Statik IP yapılandırması (DHCP başarısız olursa yedek olarak kullanılır)
IPAddress ip(192, 168, 1, 177);

// Port 80 üzerinde Web Server başlat
EthernetServer server(80);

void setup() {
  Serial.begin(115200);
  while (!Serial) { ; } // Seri Port hazır olana kadar bekle

  Serial.println("W5500 Ethernet Modulu Baslatiliyor...");

  // W5500 Chip Select pini varsayılan D10'dur
  Ethernet.init(10);

  // Otomatik IP almak için DHCP dene
  if (Ethernet.begin(mac) == 0) {
    Serial.println("DHCP ile IP alinamadi, Statik IP kuruluyor...");
    // Donanım hatası kontrolü
    if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("HATA: W5500 Modulu bulunamadi! Baglantilari kontrol edin.");
      while (true);
    }
    if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("HATA: Ethernet kablosu takili degil!");
    }
    // Statik IP ile başlat
    Ethernet.begin(mac, ip);
  }

  // Sunucuyu Başlat
  server.begin();
  
  Serial.print("Web Server Aktif! Baglanti IP Adresi: ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  // Gelen istemcileri (Browser isteklerini) dinle
  EthernetClient client = server.available();
  
  if (client) {
    Serial.println("\nYeni İstemci Baglandi.");
    boolean currentLineIsBlank = true;
    
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        
        // HTTP isteği bittiğinde (boş satır alındığında) yanıt gönder
        if (c == '\n' && currentLineIsBlank) {
          // Standart HTTP yanıt başlığı
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 5"); // Sayfayı her 5 saniyede bir otomatik yenile
          client.println();
          
          // HTML Sayfa İçeriği
          client.println("");
          client.println("");
          client.println("Arduino W5500 Server");
          client.println("");
          client.println("

Arduino Uno W5500 Web Server

"); client.println("

Sensör Okumaları (Analog Girişler):

    "); // Analog pinleri oku ve HTTP sayfasına bas for (int analogChannel = 0; analogChannel < 6; analogChannel++) { int sensorReading = analogRead(analogChannel); client.print("
  • Analog Giriş A"); client.print(analogChannel); client.print(" : "); client.print(sensorReading); client.println("
  • "); } client.println("
"); client.println(""); client.println(""); break; } if (c == '\n') { currentLineIsBlank = true; } else if (c != '\r') { currentLineIsBlank = false; } } } delay(1); // Verinin gitmesi için kısa bir süre bekle client.stop(); // Bağlantıyı kapat Serial.println("Baglanti kapatildi."); } }

Teknik Notlar ve Önemli Detaylar

  • ENC28J60 vs W5500 Farkı: Eski tip ENC28J60 modüllerinin aksine W5500, TCP/IP protokol yığınını kendi donanımında çözer. Bu sayede Ethernet.h kütüphanesi bellek dostudur ve tak-çalıştır mimari sunar.
  • SCS / CS Pini Çakışması: Eğer projenize SPI tabanlı bir SD kart modülü veya ekran eklerseniz, W5500'ün CS pini (Pin 10) ile diğer cihazların CS pinlerinin ayrıldığından emin olun.
  • Güç Tüketimi: W5500 modülü ağ bağlantısı kurup veri transferi yaparken tepe noktalarında 150mA ~ 200mA civarı akım çekebilir. Arduino'nun 3.3V çıkışı bazen yetersiz kalabileceğinden modülü harici olarak regüle edilmiş 5V/3.3V ile beslemek bağlantı kopmalarını engeller.

💬 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