Bu rehberde, NodeMCU (ESP8266), L298N motor sürücü ve 4×AAA pil yuvası kullanarak kendi Wi-Fi kontrollü fan sisteminizi nasıl kuracağınızı adım adım öğreneceksiniz. Kodun içinde Wi-Fi bilgilerini "YOUR_WIFI_SSID" ve "YOUR_WIFI_PASSWORD" olarak bırakacağız; siz kendi ağınıza göre güncelleyin.
Tüm malzemeleri web sayfamızdan güvenle satın alabilirsiniz.
| Bileşen | ESP8266 Pin | L298N Pin | Açıklama |
| ENA (PWM) | D1 | ENA | Fan hızı PWM kontrolü |
| IN1 | D2 | IN1 | Yön kontrolü (HIGH/LOW) |
| IN2 | D3 | IN2 | Yön kontrolü (LOW/HIGH) |
| Fan + | — | Out1 | Motor çıkışı (+) |
| Fan – | — | Out2 | Motor çıkışı (–) |
| Pil Paketi +12 V | — | +12 V Giriş | L298N’in güç kaynağı (4×AAA) |
| ESP8266 GND | GND | GND (ortak) | Toprak hattı (ortak referans) |
| Pil Paketi GND | — | GND (ortak) | Toprak hattı (ortak referans) |
Not: ESP8266’nızı USB ile beslerken, mutlaka GND’lerin ortak olduğuna dikkat edin.
Bu proje için ekstra kütüphane gerekmez; ESP8266’nın kendi WiFi ve WebServer sınıflarını kullanacağız.
Aşağıdaki kodu kopyalayıp Tools > Board > NodeMCU 1.0 seçili iken yükleyin. Wi-Fi bilgilerini kendi ağınıza göre güncellediğinizden emin olun:
cppCopyEdit#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
// ——— Wi-Fi Bilgilerinizi Girin ———
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
ESP8266WebServer server(80);
const int fanPin = D1; // ENA / PWM pini
void handleRoot() {
server.send(200, "text/html", R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Fan Kontrol</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: Arial; text-align: center; padding-top: 30px; }
input[type=range] { width: 80%; max-width: 300px; }
</style>
</head>
<body>
<h2>FAN HIZ KONTROL</h2>
<input type="range" min="0" max="255" value="0" id="slider" oninput="updateSpeed(this.value)">
<p>Hız: <span id="speedVal">0</span></p>
<script>
function updateSpeed(val) {
document.getElementById("speedVal").innerText = val;
fetch("/set?speed=" + val);
}
</script>
</body>
</html>
)rawliteral");
}
void handleSpeed() {
if (server.hasArg("speed")) {
int speed = server.arg("speed").toInt();
if (speed == 0) {
digitalWrite(fanPin, LOW);
} else {
analogWrite(fanPin, speed);
}
Serial.println("Yeni hız: " + String(speed));
}
server.send(200, "text/plain", "OK");
}
void setup() {
Serial.begin(115200);
pinMode(fanPin, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi bağlı. IP: " + WiFi.localIP().toString());
server.on("/", handleRoot);
server.on("/set", handleSpeed);
server.begin();
Serial.println("HTTP sunucusu başlatıldı.");
}
void loop() {
server.handleClient();
}
Başlangıç seviyesindeki bu proje ile hem Wi-Fi tabanlı kontrol mantığını öğrenmiş olacak, hem de basit bir motor sürücü entegrasyonu deneyimi kazanacaksınız. İyi çalışmalar!