Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza

W5500 Ethernet Modülü: Arduino ve ESP32 Bağlantısı

W5500 Ethernet Modülü: Arduino ve ESP32 Bağlantısı
Kısa cevap

W5500 Ethernet modülü, TCP/IP yığınını donanımda çalıştıran WIZnet W5500 çipiyle mikrodenetleyiciye SPI üzerinden 10/100 Mbps kablolu ağ bağlantısı kazandırır. 8 soket ve 32 KB tampon bellek sunar, 3,3 V ile beslenir ve girişleri 5 V toleranslıdır. Arduino Ethernet kütüphanesiyle doğrudan çalışır.

Wi-Fi her projede yeterince kararlı değildir: pano içindeki bir kontrol kartı, depo sıcaklığını kaydeden bir sensör ya da fabrikadaki bir sayaç kablolu ağdan çok daha güvenilir çalışır. W5500 Ethernet modülü, Arduino ve ESP32 gibi kartlara bu kablolu bağlantıyı birkaç kabloyla ekler. Bu yazıda W5500'ün ne olduğunu, özelliklerini, ENC28J60 ve W5100'den farkını, Arduino ve ESP32 bağlantısını, örnek bir web sunucu kodunu ve beslemeyi anlatıyoruz.

W5500 nedir?

W5500, WIZnet firmasının TCP, UDP, IPv4, ICMP, ARP, IGMP ve PPPoE protokollerini donanım içinde işleyen, MAC ve 10/100 Mbps PHY katmanını da barındıran ve mikrodenetleyiciye SPI ile bağlanan bir Ethernet denetleyici çipidir. WIZnet bu yapıya "hardwired TCP/IP" adını verir.

Bu yaklaşımın faydası, ağ yığınının mikrodenetleyicinin belleğini ve işlem gücünü tüketmemesidir. Arduino Uno gibi 2 KB RAM'li bir kart bile W5500 ile web sayfası sunabilir ya da MQTT mesajı gönderebilir. W5500 tabanlı SPI-Ethernet dönüştürücü modül (USR-ES1) gibi kartlar ise bu çipi RJ45 soketi, manyetik trafo, kristal ve gerekli pasif elemanlarla birlikte küçük bir karta yerleştirir.

W5500'ün özellikleri nelerdir?

W5500, 8 bağımsız soket, 32 KB gönderme-alma tampon belleği ve 80 MHz'e kadar SPI saat hızı sunar; 3,3 V ile çalışır ve G/Ç uçları 5 V toleranslıdır. Temel değerler WIZnet belgelerine göre şöyledir:

ÖzellikDeğer
Ağ hızı10BaseT / 100BaseTX, otomatik algılama, tam ve yarım çift yönlü
Soket sayısı8 bağımsız soket
Tampon bellek32 KB (TX ve RX için paylaştırılır)
ArayüzSPI, mod 0 ve 3, 80 MHz'e kadar
Besleme3,3 V
G/Ç seviyesi3,3 V, girişler 5 V toleranslı
Akım100 Mbps bağlantıda yaklaşık 130 mA
Ek özelliklerWake on LAN (UDP), güç kesme modu

W5500 IP parçalanmasını (fragmentation) desteklemez ve çip içinde fabrika MAC adresi yoktur; MAC adresini kodda siz verirsiniz. Aynı ağda birden fazla modül varsa her birine farklı MAC adresi atayın.

W5500, ENC28J60 ve W5100 arasındaki fark nedir?

W5500 TCP/IP'yi donanımda işler ve 8 soket sunar; W5100 de donanım yığınlıdır ama 4 soketle sınırlıdır; ENC28J60 ise yalnızca MAC ve PHY içerir, TCP/IP yığını mikrodenetleyicide yazılımla çalışır. Bu fark özellikle küçük RAM'li Arduino kartlarında belirgindir.

ÖzellikW5500W5100ENC28J60
TCP/IP yığınıDonanımdaDonanımdaYazılımda (mikrodenetleyici)
Soket84Kütüphaneye bağlı
Ağ hızı10/100 Mbps10/100 Mbps10 Mbps
Arduino kütüphanesiEthernet (resmi)Ethernet (resmi)UIPEthernet, EtherCard
Tipik kartKüçük SPI modülüArduino Ethernet ShieldKüçük SPI modülü

Uno'ya doğrudan takılan bir kart istiyorsanız W5100 Ethernet Shield SD kart yuvasıyla birlikte gelir. Bütçe öncelikliyse ENC28J60 Ethernet LAN modülü de çalışır, ancak programınızın RAM'inden pay alır. Yeni projelerde hız, soket sayısı ve kütüphane desteği nedeniyle W5500 daha dengeli seçimdir.

W5500 Arduino'ya nasıl bağlanır?

W5500 modülü Arduino Uno'ya SPI pinleriyle bağlanır: MOSI → D11, MISO → D12, SCK → D13 ve CS (SCS) → D10; GND ortak olur, modül 3,3 V ile beslenir. RST ucu boşta bırakılabilir ya da Arduino'nun RESET pinine bağlanabilir.

W5500 modülüArduino UnoESP32 DevKit
3.3VHarici 3,3 V regülatör3V3
GNDGNDGND
MOSID11GPIO23
MISOD12GPIO19
SCK (SCLK)D13GPIO18
CS (SCS)D10GPIO5
RSTRESET (isteğe bağlı)EN ya da boş GPIO (isteğe bağlı)
W5500 Ethernet modülü Arduino Uno bağlantı şeması: Arduino 5V pini AMS1117 3,3 V regülatör modülünün VIN girişine, regülatörün 3V3 çıkışı W5500 modülünün 3.3V pinine, GND'ler ortak; Arduino D10 pini W5500 SCS, D11 MOSI, D12 MISO, D13 SCLK pinine bağlı; RST ucu boş ya da Uno RESET; altta pin tablosu: ESP32 DevKit için 3V3, GPIO23 MOSI, GPIO19 MISO, GPIO18 SCK, GPIO5 CS; yanda Uno'nun 3,3 V pininin yetersiz olduğu, girişlerin 5 V toleranslı olduğu ve Ethernet.init(10) notları
W5500, Uno'ya D10 (CS), D11 (MOSI), D12 (MISO) ve D13 (SCK) ile bağlanır; 3,3 V besleme harici regülatörden alınır.

Arduino Uno'nun 3,3 V pini, Arduino belgelerine göre en fazla 50 mA verecek şekilde kullanılmalıdır; W5500 ise 100 Mbps bağlantıda yaklaşık 130 mA çeker. Bu yüzden modülü Uno'nun 5 V pininden beslenen bir AMS1117 3,3 V regülatör modülü ile besleyin ve GND'leri birleştirin. Regülatörün çalışmasını AMS1117 3,3 V regülatör yazımızda anlattık.

W5500'ün girişleri 5 V toleranslı olduğu için Uno'nun MOSI, SCK ve CS çıkışları doğrudan bağlanabilir. MISO hattında W5500'ün 3,3 V çıkışı Uno tarafından çoğu durumda yüksek seviye olarak okunur; uzun kablolarda ya da kararsız okumada bir lojik seviye dönüştürücü kullanın. Bazı modüllerde 5V girişi ve kart üstü regülatör bulunur; pin sırası üreticiye göre değiştiği için kartın üzerindeki baskıyı esas alın.

W5500 ESP32'ye nasıl bağlanır?

ESP32 DevKit kartında W5500, varsayılan VSPI pinlerine bağlanır: MOSI → GPIO23, MISO → GPIO19, SCK → GPIO18 ve CS → GPIO5; besleme kartın 3V3 pininden alınır. ESP32 3,3 V mantıkla çalıştığı için seviye dönüştürücü gerekmez.

Arduino'nun Ethernet kütüphanesi ESP32'de de çalışır; tek fark, kodda Ethernet.init(5) ile CS pinini belirtmektir. ESP32 Arduino çekirdeğinin 3.x sürümlerindeki ETH kütüphanesi de W5500'ü destekler ve ağ bağlantısını Wi-Fi ile aynı yapıda yönetir. ESP32-WROOM-32D geliştirme kartı ile kablolu ağ ve Wi-Fi'yi aynı projede yedekli kullanabilirsiniz. ESP32'ye yeniyseniz ESP32 başlangıç rehberi yazımıza göz atın.

Örnek kod nasıl yazılır?

W5500 ile ilk deneme için en uygun örnek, DHCP'den IP adresi alan ve tarayıcıya A0 pinindeki değeri gösteren küçük bir web sunucusudur. Adımlar şunlardır:

  1. Modülü yukarıdaki tabloya göre bağlayın ve RJ45 soketine bir ağ kablosu takıp modemin ya da switch'in LAN portuna bağlayın.
  2. Arduino IDE'de Kütüphane Yöneticisi'nden "Ethernet" kütüphanesini (Arduino) kurun ya da güncelleyin.
  3. Aşağıdaki kodu yükleyin ve seri monitörü 115200 baud'da açın.
  4. Seri monitörde yazan IP adresini aynı ağdaki bir bilgisayarın tarayıcısına girin.
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0x02, 0x12, 0x34, 0x56, 0x78, 0x9A };
EthernetServer sunucu(80);

void setup() {
  Serial.begin(115200);
  Ethernet.init(10);              // CS pini (ESP32'de 5)
  if (Ethernet.begin(mac) == 0) { // DHCP
    Serial.println("DHCP basarisiz");
    if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("W5500 bulunamadi");
    if (Ethernet.linkStatus() == LinkOFF) Serial.println("Kablo takili degil");
    while (true) delay(1);
  }
  Serial.print("IP: ");
  Serial.println(Ethernet.localIP());
  sunucu.begin();
}

void loop() {
  EthernetClient istemci = sunucu.available();
  if (istemci) {
    delay(5);
    while (istemci.available()) istemci.read();   // istegi oku
    istemci.println("HTTP/1.1 200 OK");
    istemci.println("Content-Type: text/plain");
    istemci.println("Connection: close");
    istemci.println();
    istemci.print("A0 = ");
    istemci.println(analogRead(A0));
    istemci.stop();
  }
}

MAC adresinin ilk baytı 0x02 olduğu için bu adres "yerel yönetilen" sınıfındadır ve gerçek cihazlarla çakışmaz. Kütüphane, 2 KB RAM'li kartlarda (Uno, Nano) soket sayısını otomatik olarak 4'e indirir; Mega ve ESP32'de 8 soketin hepsi kullanılır.

W5500 için besleme ve PoE nasıl planlanır?

W5500 modülü için en az 200 mA verebilen temiz bir 3,3 V besleme planlayın; üretici tabloları çipin 100 Mbps bağlantıda yaklaşık 130 mA çektiğini, Joy-IT gibi modül üreticileri ise en az 200 mA besleme önerdiğini belirtir. Modülün yakınına 10 µF ve 100 nF kondansatör eklemek bağlantı kopmalarını azaltır.

W5500 çipi ve yaygın W5500 modülleri PoE (Ethernet üzerinden güç) içermez; RJ45 soketinden gelen gerilimi kullanmaz. Kartı ağ kablosuyla beslemek istiyorsanız kablonun ucunda ayrı bir PoE ayırıcı (splitter) kullanın ve çıkan 5 V ya da 12 V'u regülatörle düşürün. Bağlantı için standart bir CAT6 Ethernet kablosu yeterlidir.

Sık sorulan sorular

W5500 modülü 5 V ile çalışır mı?

W5500 çipi 3,3 V ile beslenir; 3,3 V pinine 5 V vermek çipe zarar verir. Girişleri 5 V toleranslı olduğu için 5 V'luk bir Arduino'dan gelen SPI sinyalleri sorun çıkarmaz. Bazı modüllerde kart üzerinde regülatör ve 5V girişi bulunur; bu durumda besleme 5V ucundan verilir, iki uç aynı anda kullanılmaz.

W5500 ile Wi-Fi aynı anda kullanılabilir mi?

Evet, ESP32'de W5500 ve Wi-Fi aynı anda çalışabilir. Örneğin kablolu bağlantı ana hat, Wi-Fi yedek hat olarak kullanılabilir ya da ESP32 kablolu ağ ile Wi-Fi ağı arasında köprü görevi görebilir. Bu durumda yönlendirme ve IP adreslerini dikkatle planlamak gerekir.

W5500 sabit IP ile nasıl çalıştırılır?

Ethernet.begin fonksiyonuna MAC adresiyle birlikte bir IPAddress nesnesi verirseniz modül DHCP beklemeden o adresi kullanır; örneğin Ethernet.begin(mac, IPAddress(192, 168, 1, 50)). Adresin ağınızdaki aralıkta olduğundan ve başka bir cihazda kullanılmadığından emin olun. Gerekirse ağ geçidi ve alt ağ maskesini de ekleyin.

Ethernet.begin neden takılıyor?

DHCP isteğine yanıt gelmezse Ethernet.begin varsayılan olarak bir dakikaya kadar bekler. Önce kablonun takılı ve modül LED'lerinin yanık olduğunu, sonra SPI kablolarını ve CS pininin kodla aynı olduğunu kontrol edin. Besleme yetersizse modül kendini resetleyebilir; 3,3 V hattını yük altında ölçün.

W5500 ile Modbus TCP veya MQTT yapılabilir mi?

Evet, W5500 TCP ve UDP soketleri sağladığı için üzerine Modbus TCP, MQTT ve HTTP gibi uygulama protokolleri kütüphanelerle kurulabilir. Arduino'da PubSubClient (MQTT) ve ArduinoModbus gibi kütüphaneler EthernetClient ile çalışır. Seri hat üzerinden Modbus kullanılacaksa RS485 dönüştürücü ayrıca gerekir.

Özet

  • W5500, TCP/IP yığınını donanımda işleyen, SPI ile bağlanan 10/100 Mbps Ethernet çipidir; 8 soket ve 32 KB tampon sunar.
  • Arduino Uno bağlantısı: MOSI D11, MISO D12, SCK D13, CS D10; ESP32'de GPIO23, 19, 18 ve 5.
  • Besleme 3,3 V'tur; Uno'nun 3,3 V pini yetmez, en az 200 mA verebilen harici regülatör kullanın.
  • Arduino'nun resmi Ethernet kütüphanesi W5500'ü otomatik tanır; CS pini Ethernet.init ile verilir.
  • W5500 PoE içermez; ağ kablosundan besleme için ayrı PoE ayırıcı gerekir.

Bu yazıdaki ürünler

Diğer yazılar

12 Kasım 20268 dk okuma

AMG8833 Termal Kamera Sensörü: 8x8 Isı Haritası Rehberi

AMG8833, Panasonic Grid-EYE ailesinden 8x8 = 64 pikselli bir termopil kızılötesi dizi sensörüdür. 0-80 °C aralığındaki yüzeylerin sıcaklığın...

Devamını oku →
12 Kasım 20268 dk okuma

MT6701 Manyetik Encoder: 14 Bit Açı Sensörü Rehberi

MT6701, MagnTek'in ürettiği, dönen bir mıknatısın açısını Hall algılayıcılarla temassız ölçen 14 bitlik manyetik açı sensörüdür. Açıyı I2C y...

Devamını oku →
12 Kasım 20267 dk okuma

MG90S ve SG90 Servo Farkı: Tork, Dişli ve Seçim Rehberi

MG90S ile SG90 arasındaki temel fark dişlilerdir: MG90S metal, SG90 plastik dişli kullanır. İkisi de aynı boyda mikro servodur ve 4,8 V'ta y...

Devamını oku →
12 Kasım 20267 dk okuma

C5198 ve A1941 Transistör: Değerler, Bacaklar ve Muadil

C5198 (2SC5198), Toshiba'nın ses amplifikatörü çıkış katı için ürettiği 140 V, 10 A ve 100 W değerli NPN güç transistörüdür; PNP eşi A1941'd...

Devamını oku →
12 Kasım 20267 dk okuma

ZB2L3 Pil Kapasite Test Cihazı: Bağlantı ve Kullanım

ZB2L3 pil kapasite test cihazı, pili harici bir yük direnci üzerinden ayarladığınız sonlandırma gerilimine kadar boşaltıp gerçek kapasiteyi...

Devamını oku →
12 Kasım 20266 dk okuma

TC4427 MOSFET Sürücü: Pinout, Bağlantı ve TC4426 Farkı

TC4427, Microchip'in iki kanallı, evirmeyen (non-inverting) ve 1,5 A tepe akımlı MOSFET sürücü entegresidir. 4,5-18 V ile beslenir ve Arduin...

Devamını oku →