ENC28J60, Microchip firması tarafından geliştirilmiş tümleşik MAC ve 10Base-T PHY katmanına sahip 8 KB RAM tamponlu bir Ethernet denetleyicisidir. ESP32 DevKit V1 kartı ile standart HSPI/VSPI blokları yerine özel tanımlanmış GPIO pinleri üzerinden SPI haberleşmesi kurarak kablolu ağ bağlantısı elde edilir.

Şemada belirtilen devre bağlantılarına göre ESP32 DevKit V1 ile ENC28J60 arasındaki bağlantı haritası aşağıdaki şekildedir:
| ENC28J60 Pin | ESP32 DevKit V1 Pin | Sinyal / İşlev | Ek Donanım / Not |
|---|---|---|---|
| VCC | 3V3 | 3.3V Besleme Hat (Kırmızı Wire) | Doğrudan bağlantı |
| GND | GND | Toprak Hattı (Siyah Wire) | Doğrudan bağlantı |
| CS | GPIO 13 | Chip Select / Slave Select (Yeşil Wire) | Doğrudan bağlantı |
| SCK | GPIO 14 | SPI Clock Sinyali (Mavi Wire) | Doğrudan bağlantı |
| SI (MOSI) | GPIO 2 | Slave In / Master Out (Turuncu Wire) | 33 Ω Seri Direnç eklendi |
| SO (MISO) | GPIO 15 | Slave Out / Master In (Kahverengi Wire) | 33 Ω Seri Direnç eklendi |
Aşağıdaki Arduino C++ kodu, şemada gösterilen özel pin tanımlamalarına (CS: 13, SCK: 14, MOSI/SI: 2, MISO/SO: 15) göre yapılandırılmıştır:
#include <Arduino.h>
#include <SPI.h>
#include <EthernetENC.h>
// Şemadaki Özel Pin Tanımlamaları
#define ETH_CS_PIN 13
#define ETH_SCK_PIN 14
#define ETH_MOSI_PIN 2 // SI
#define ETH_MISO_PIN 15 // SO
// Benzersiz MAC Adresi
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server(80);
void setup() {
Serial.begin(115200);
while (!Serial) { delay(10); }
Serial.println("ENC28J60 Özel Pin Konfigürasyonu İle Başlatılıyor...");
// Özel SPI Bus Pinlerini Başlat (SCK, MISO, MOSI, SS)
SPI.begin(ETH_SCK_PIN, ETH_MISO_PIN, ETH_MOSI_PIN, ETH_CS_PIN);
// Ethernet Sürücüsüne CS Pinini Bildir
Ethernet.init(ETH_CS_PIN);
// DHCP üzerinden IP almayı dene
if (Ethernet.begin(mac) == 0) {
Serial.println("DHCP Hatası! Kabloyu veya Donanım Bağlantılarını Kontrol Edin.");
while (true) { delay(1000); }
}
server.begin();
Serial.print("Ethernet Bağlantısı Sağlandı! Sunucu IP Adresi: ");
Serial.println(Ethernet.localIP());
}
void loop() {
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && currentLineIsBlank) {
// HTTP Başlığı
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
// HTML Gövdesi
client.println("<!DOCTYPE HTML><html><body style='font-family:sans-serif;'>");
client.println("<h2>ESP32 DevKit V1 + ENC28J60 Ethernet</h2>");
client.println("<p><b>SPI Pin Yapısı:</b> CS:13 | SCK:14 | SI:2 | SO:15</p>");
client.println("<p>Durum: Kablolu Ağ Aktif</p>");
client.println("</body></html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
} else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
Henüz yorum yapılmamış. İlk yorumu siz yapın!