ESP8266 NodeMCU Web Sunucu ile 4'lü LED Kontrolü

👤 Yazar: ozcan 📅 Tarih: 29.07.2026 13:49 👁️ Görüntüleme: 5

ESP8266 NodeMCU Web Sunucu ile 4'lü LED Kontrolü

Bu rehberde, ESP8266 NodeMCU geliştirme kartını bir Web Sunucusuna (Web Server) dönüştürerek, aynı Wi-Fi ağına bağlı telefon veya bilgisayarınızın tarayıcısı üzerinden 4 adet LED'i bağımsız olarak açıp kapatabileceğiniz interaktif bir IoT uygulaması hazırlıyoruz.

ESP8266 NodeMCU 4 LED Wi-Fi Kontrol Bağlantı Şeması

Gerekli Malzemeler:
  • 1 x ESP8266 NodeMCU V3 Geliştirme Kartı
  • 4 x LED (İstediğiniz renklerde)
  • 4 x 220 Ω Direnç (LED koruma dirençleri)
  • 1 x Breadboard
  • Jumper Kablolar (Erkek - Erkek)

Devre Bağlantı Şeması

Görseldeki breadboard devresine göre pin bağlantıları şu şekildedir:

  • 1. LED (Soldaki): Anot (+) bacağı direnç üzerinden D1 (GPIO5) pinine.
  • 2. LED: Anot (+) bacağı direnç üzerinden D2 (GPIO4) pinine.
  • 3. LED: Anot (+) bacağı direnç üzerinden D3 (GPIO0) pinine.
  • 4. LED (Sağdaki): Anot (+) bacağı direnç üzerinden D4 (GPIO2) pinine.
  • Katot (-) Bacakları: Tüm LED'lerin eksi bacakları breadboard üzerindeki ortak eksi (GND) hattına bağlanır ve NodeMCU üzerindeki GND pini ile birleştirilir.
Önemli İpucu (Boot Pin Uyarısı):
ESP8266 mimarisinde D3 (GPIO0) ve D4 (GPIO2) pinleri kartın ilk açılış (boot) modunu belirler. Kodu yüklerken veya kart yeniden başlatılırken sorun yaşamamak için devre bağlantılarınızın sağlam olduğundan ve koruma dirençlerinin bağlandığından emin olun.

Örnek Arduino IDE Kodu

Aşağıdaki kodda ssid ve password değişkenlerine kendi Wi-Fi ağınızın bilgilerini yazdıktan sonra NodeMCU'ya yükleyin. Yükleme tamamlandıktan sonra Seri Port Ekranını (115200 baud) açarak ESP8266'nın aldığı IP adresini öğrenebilirsiniz:

// ESP8266 NodeMCU Web Server 4'lü LED Kontrol Kodu

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// Wi-Fi Ağ Bilgileriniz
const char* ssid = "YENIDIR_WIFI";
const char* password = "WIFI_SIFRENIZ";

// Web Sunucu Nesnesi (Port 80)
ESP8266WebServer server(80);

// LED Pin Tanımlamaları
const int led1 = D1;
const int led2 = D2;
const int led3 = D3;
const int led4 = D4;

// LED Durum Değişkenleri
bool led1State = false;
bool led2State = false;
bool led3State = false;
bool led4State = false;

// HTML Arayüz Oluşturma Fonksiyonu
void handleRoot() {
  String html = "<!DOCTYPE html><html lang='tr'><head><meta charset='UTF-8'>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1.0'>";
  html += "<title>YENIDIR - Wi-Fi LED Kontrol</title>";
  html += "<style>";
  html += "body { font-family: Arial, sans-serif; text-align: center; background-color: #f4f4f9; margin-top: 30px; }";
  html += "h1 { color: #333; }";
  html += ".card { background: white; max-width: 400px; margin: 0 auto; padding: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); }";
  html += ".btn { display: inline-block; width: 80%; padding: 12px; margin: 10px 0; font-size: 16px; border: none; border-radius: 5px; cursor: pointer; text-decoration: none; color: white; font-weight: bold; }";
  html += ".btn-on { background-color: #28a745; }";
  html += ".btn-off { background-color: #dc3545; }";
  html += "</style></head><body>";
  
  html += "<div class='card'>";
  html += "<h1>ESP8266 LED Kontrol</h1>";
  html += "<p>YENIDIR.COM Wi-Fi Web Server</p><hr>";

  // LED 1
  html += "<p><strong>LED 1 (D1):</strong> " + String(led1State ? "AÇIK" : "KAPALI") + "</p>";
  html += "<a class='btn " + String(led1State ? "btn-off" : "btn-on") + "' href='/toggle1'>" + String(led1State ? "KAPAT" : "AÇ") + "</a><br>";

  // LED 2
  html += "<p><strong>LED 2 (D2):</strong> " + String(led2State ? "AÇIK" : "KAPALI") + "</p>";
  html += "<a class='btn " + String(led2State ? "btn-off" : "btn-on") + "' href='/toggle2'>" + String(led2State ? "KAPAT" : "AÇ") + "</a><br>";

  // LED 3
  html += "<p><strong>LED 3 (D3):</strong> " + String(led3State ? "AÇIK" : "KAPALI") + "</p>";
  html += "<a class='btn " + String(led3State ? "btn-off" : "btn-on") + "' href='/toggle3'>" + String(led3State ? "KAPAT" : "AÇ") + "</a><br>";

  // LED 4
  html += "<p><strong>LED 4 (D4):</strong> " + String(led4State ? "AÇIK" : "KAPALI") + "</p>";
  html += "<a class='btn " + String(led4State ? "btn-off" : "btn-on") + "' href='/toggle4'>" + String(led4State ? "KAPAT" : "AÇ") + "</a><br>";

  html += "</div></body></html>";

  server.send(200, "text/html", html);
}

// LED Tetikleme İstekleri
void handleToggle1() { led1State = !led1State; digitalWrite(led1, led1State); server.sendHeader("Location", "/"); server.send(303); }
void handleToggle2() { led2State = !led2State; digitalWrite(led2, led2State); server.sendHeader("Location", "/"); server.send(303); }
void handleToggle3() { led3State = !led3State; digitalWrite(led3, led3State); server.sendHeader("Location", "/"); server.send(303); }
void handleToggle4() { led4State = !led4State; digitalWrite(led4, led4State); server.sendHeader("Location", "/"); server.send(303); }

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

  // Pin Yönlendirmeleri
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);

  // Başlangıçta tüm LED'ler kapalı
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);

  // Wi-Fi Bağlantısı
  Serial.println();
  Serial.print("Wi-Fi Agina Baglaniliyor: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWi-Fi Baglantisi Saglandi!");
  Serial.print("Web Server IP Adresi: ");
  Serial.println(WiFi.localIP());

  // Web Server URL Yönlendirmeleri
  server.on("/", handleRoot);
  server.on("/toggle1", handleToggle1);
  server.on("/toggle2", handleToggle2);
  server.on("/toggle3", handleToggle3);
  server.on("/toggle4", handleToggle4);

  server.begin();
  Serial.println("HTTP Sunucusu Baslatildi.");
}

void loop() {
  // Gelen HTTP isteklerini sürekli dinle
  server.handleClient();
}

Nasıl Kullanılır?

  • 1. Bağlantı Kurma: Telefonunuzu veya bilgisayarınızı ESP8266'nın bağlı olduğu Wi-Fi ağına bağlayın.
  • 2. IP Adresine Giriş: İnternet tarayıcınızı (Chrome, Safari vb.) açın ve adres çubuğuna Seri Port Ekranında görünen IP adresini yazın (örneğin: 192.168.1.50).
  • 3. Kontrol Arayüzü: Karşınıza çıkan modern ve mobil uyumlu panel üzerinden butonlara tıklayarak istediğiniz LED'i anlık olarak açıp kapatabilirsiniz.

💬 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