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.
Görseldeki breadboard devresine göre pin bağlantıları şu şekildedir:
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();
}
192.168.1.50).
Henüz yorum yapılmamış. İlk yorumu siz yapın!