NodeMCU ESP8266 Kullanımı: Pinler, Kurulum ve Wi-Fi Web Sunucu
NodeMCU ESP8266 nedir? D1–D8 ve GPIO pin karşılıkları, Arduino IDE kurulumu, Wi-Fi bağlantısı, telefondan LED yakan web sunucu, 3,3 V uyarısı ve ESP32 farkı.
NodeMCU, Wi-Fi özellikli ESP8266 yongasını USB bağlantısı, 3,3 V regülatör ve breadboard'a takılabilen pinlerle bir araya getiren, uygun fiyatlı bir geliştirme kartıdır. Arduino IDE'de alıştığın komutlarla programlanır ve tek başına ev ağına bağlanıp telefondan açılan bir web sayfası sunabilir. Bir sıcaklık sensörünü internete bağlamak, bir röleyi telefondan açmak ya da evdeki bir LED şeridi kontrol etmek istiyorsan NodeMCU ESP8266 bu işlerin en ekonomik başlangıç noktalarından biridir.
Bu rehberde NodeMCU'nun teknik özelliklerini, kafa karıştıran D1–D8 ve GPIO pin karşılıklarını, hangi pinlerin kartın açılışını etkilediğini, Arduino IDE kurulumunu, Wi-Fi'ye bağlanmayı ve telefondan LED yakan bir web sunucusunu adım adım göreceksin. Son bölümlerde ESP8266 ile ESP32 arasındaki farkları ve en sık yapılan hataların çözümlerini bulacaksın.

ESP8266 ve NodeMCU nedir?
ESP8266, Espressif firmasının 2014'te piyasaya sürdüğü, Wi-Fi'yi içinde barındıran 32 bitlik bir mikrodenetleyicidir. Çok düşük fiyatı sayesinde hobi dünyasında Wi-Fi'li projelerin yaygınlaşmasını sağladı. NodeMCU adı ise başta bu yonga için yazılmış Lua tabanlı bir yazılımı ve onun açık kaynaklı geliştirme kartını anlatıyordu; bugün ESP-12E modüllü kartların genel adı olarak kullanılıyor. Kartı Lua ile değil, çoğunlukla Arduino IDE ya da MicroPython ile programlarsın.
| Özellik | Değer |
|---|---|
| Yonga | ESP8266EX, Tensilica L106, 32 bit |
| Saat hızı | 80 MHz (160 MHz'e çıkarılabilir) |
| RAM | Yaklaşık 80 KB kullanıcı RAM'i (Wi-Fi bağlıyken programa 40–50 KB kalır) |
| Flaş bellek | 4 MB (ESP-12E modülü) |
| Wi-Fi | 802.11 b/g/n, yalnızca 2,4 GHz; istemci, erişim noktası ya da ikisi birden |
| Bluetooth | Yok |
| Kullanılabilir GPIO | 11 civarı (D0–D8, RX, TX) |
| Analog giriş | 1 kanal (A0), 10 bit, kart üzerinde yaklaşık 0–3,2 V |
| PWM | Yazılımsal, varsayılan 1 kHz, 0–255 aralığı |
| Çalışma gerilimi | 3,3 V (USB ya da VIN üzerinden 5 V ile beslenir) |
| Akım | Wi-Fi bağlıyken ortalama 70–80 mA, gönderim anında 170 mA'e kadar |
Piyasada iki yaygın NodeMCU sürümü bulunur. V2 (Amica) dar yapılıdır, CP2102 USB-seri yonga kullanır ve breadboard'a takıldığında iki yanında birer sıra boş delik bırakır. V3 (LoLin) daha geniştir, CH340G yonga kullanır ve standart bir breadboard'u neredeyse tamamen kaplar; bu yüzden V3 ile çalışırken iki breadboard'u yan yana koymak işini kolaylaştırır. İki sürümün pin dizilimi ve kodu aynıdır. Daha küçük bir kart istersen aynı yongayı taşıyan Wemos D1 Mini de aynı kodlarla çalışır.
NodeMCU pinleri: D1–D8 ve GPIO karşılıkları
NodeMCU'nun en çok kafa karıştıran yanı, kartın üzerindeki D etiketlerinin yonganın gerçek GPIO numaralarıyla aynı olmamasıdır. Örneğin kartta D1 yazan pin aslında GPIO 5'tir. Arduino IDE'de NodeMCU kartını seçtiğinde kodda D1 yazabilirsin, derleyici bunu otomatik olarak 5'e çevirir; ama digitalWrite(1, HIGH) yazarsan GPIO 1'i, yani seri haberleşmenin TX pinini sürmüş olursun. MicroPython'da ise her zaman GPIO numarasını kullanırsın.
| Kart etiketi | GPIO | Ek görevi | Kullanım notu |
|---|---|---|---|
| D0 | GPIO 16 | Derin uykudan uyandırma | Kesme (interrupt) desteklemez; derin uyku için RST'ye bağlanır |
| D1 | GPIO 5 | I2C SCL | Güvenli, genel amaçlı |
| D2 | GPIO 4 | I2C SDA | Güvenli, genel amaçlı |
| D3 | GPIO 0 | FLASH düğmesi | Açılışta LOW olursa kart programlama moduna girer |
| D4 | GPIO 2 | Dahili LED (ters mantık), TX1 | Açılışta HIGH olmalı |
| D5 | GPIO 14 | SPI SCK | Güvenli, genel amaçlı |
| D6 | GPIO 12 | SPI MISO | Güvenli, genel amaçlı |
| D7 | GPIO 13 | SPI MOSI | Güvenli, genel amaçlı |
| D8 | GPIO 15 | SPI CS | Açılışta LOW olmalı; kartta pull-down direnci vardır |
| RX | GPIO 3 | UART RX | Seri Monitör kullanılırken boş bırak |
| TX | GPIO 1 | UART TX | Açılışta açılış mesajlarını gönderir |
| A0 | ADC0 | Analog giriş | Yalnızca analog okuma, yaklaşık 0–3,2 V |
| SD2, SD3 | GPIO 9, 10 | Flaş belleğe bağlı | Kullanma |
Bu tabloya göre ilk projelerinde gönül rahatlığıyla kullanabileceğin pinler D1, D2, D5, D6 ve D7'dir. D3, D4 ve D8 ise kartın açılış (boot) modunu belirleyen pinlerdir: ESP8266 enerji geldiğinde GPIO 0, GPIO 2 ve GPIO 15'in seviyelerine bakar ve normal çalışma için GPIO 0 ile GPIO 2'nin HIGH, GPIO 15'in LOW olmasını bekler. Bu pinlere bağladığın bir buton, röle ya da sensör açılış anında seviyeyi değiştirirse kart programın yerine yükleme modunda açılır ya da hiç açılmaz. Butonlar için D3 ve D4 yine de kullanılabilir, çünkü butonlar açılışta basılı değildir; ama çıkışı LOW olan modülleri bu pinlerden uzak tut.
A0 pini de özel bir durumdur: ESP8266 yongasının analog girişi yalnızca 0–1 V ölçer, ama NodeMCU kartının üzerindeki 220 kΩ ve 100 kΩ'luk gerilim bölücü sayesinde A0'a yaklaşık 0–3,2 V verebilirsin; analogRead(A0) bu aralığı 0–1023 arasında döndürür. Tek analog giriş olduğu için birden fazla analog sensör kullanacaksan ADS1115 gibi bir I2C ADC eklemen gerekir. D1 ve D2 pinleri varsayılan I2C hattıdır; I2C'nin temellerini I2C Nedir? yazısında bulabilirsin.
Arduino IDE'ye ESP8266 kurulumu
- Arduino IDE'de Dosya > Tercihler menüsünü aç ve "Ek kart yöneticisi URL'leri" alanına https://arduino.esp8266.com/stable/package_esp8266com_index.json adresini ekle.
- Araçlar > Kart > Kart Yöneticisi'ni aç, esp8266 ara ve ESP8266 Community paketini kur.
- Araçlar > Kart menüsünden NodeMCU 1.0 (ESP-12E Module) seç. Wemos D1 Mini kullanıyorsan LOLIN(WEMOS) D1 R2 & mini seçeneğini seç.
- Kartı bir veri kablosuyla bağla ve Araçlar > Port menüsünden portu seç. Port görünmüyorsa V3 kartlar için CH340, V2 kartlar için CP2102 sürücüsünü kur.
- Upload Speed değerini 115200 olarak bırak; yükleme sorunsuz çalışıyorsa 921600'e çıkararak yüklemeyi hızlandırabilirsin.
İlk program: dahili LED'i yakıp söndürmek
NodeMCU'da ESP-12E modülünün üzerinde GPIO 2'ye (D4) bağlı mavi bir LED bulunur; V2 (Amica) kartlarda D0'a bağlı ikinci bir LED daha vardır. Bu LED'ler ters mantıkla çalışır: pin LOW olduğunda yanar, HIGH olduğunda söner. Arduino çekirdeğinde LED_BUILTIN sabiti zaten 2 olarak tanımlıdır:
1// NodeMCU dahili LED'i: GPIO2 (D4), ters mantık / onboard LED: GPIO2 (D4), inverted logic
2
3void setup() {
4 pinMode(LED_BUILTIN, OUTPUT);
5}
6
7void loop() {
8 digitalWrite(LED_BUILTIN, LOW); // LOW = yanar / LOW = on
9 delay(500);
10 digitalWrite(LED_BUILTIN, HIGH); // HIGH = söner / HIGH = off
11 delay(500);
12}Wi-Fi'ye bağlanmak
ESP8266'nın asıl gücü Wi-Fi'dır. Aşağıdaki kod kartı istemci (station) modunda ev ağına bağlar, modemin verdiği IP adresini ve sinyal gücünü Seri Monitör'e yazar. 20 saniye içinde bağlanamazsa beklemeyi bırakır ve uyarı verir. Ağ adını ve şifreni kendi bilgilerinle değiştir, Seri Monitör'ü 115200 baud hızında aç:
1#include <ESP8266WiFi.h>
2
3const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
4const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
5
6void setup() {
7 Serial.begin(115200);
8 Serial.println();
9 WiFi.mode(WIFI_STA); // istemci modu / station mode
10 WiFi.begin(ssid, password);
11 Serial.print("Baglaniyor / connecting");
12 unsigned long start = millis();
13 while (WiFi.status() != WL_CONNECTED) {
14 delay(500);
15 Serial.print('.');
16 if (millis() - start > 20000) { // 20 sn'de bağlanamazsa / give up after 20 s
17 Serial.println("\nBaglanamadi, ag adini ve sifreyi kontrol et / failed, check SSID and password");
18 return;
19 }
20 }
21 Serial.println();
22 Serial.print("IP: ");
23 Serial.println(WiFi.localIP()); // modemin verdiği adres / address given by the router
24 Serial.print("Sinyal / RSSI: ");
25 Serial.print(WiFi.RSSI()); // -50 iyi, -80 zayıf / -50 good, -80 weak
26 Serial.println(" dBm");
27}
28
29void loop() {
30}| RSSI değeri | Sinyal kalitesi | Ne beklemelisin? |
|---|---|---|
| -30 ile -50 dBm | Çok iyi | Kesintisiz ve hızlı bağlantı |
| -50 ile -67 dBm | İyi | Web sunucu ve sensör verisi için yeterli |
| -67 ile -80 dBm | Zayıf | Ara sıra kopma, yavaş sayfa açılışı |
| -80 dBm'den düşük | Çok zayıf | Bağlantı kurulamayabilir; kartı modeme yaklaştır |
Telefondan LED kontrolü: basit web sunucu
Şimdi NodeMCU'yu küçük bir web sunucusuna çevirelim. D1 pinine (GPIO 5) 220 Ω'luk bir dirençle bir LED bağla: LED'in uzun bacağı direnç üzerinden D1'e, kısa bacağı GND'ye gider. Kırmızı bir LED için bu direnç (3,3 V − 2 V) / 220 Ω ≈ 6 mA akım verir, yani pinin sınırının rahatça altındadır; değeri kendi LED'ine göre hesaplamak için LED Direnci Hesaplama aracını kullanabilirsin. Kod yüklendikten sonra Seri Monitör'de görünen adresi, aynı Wi-Fi'ye bağlı telefonunun tarayıcısında aç.
1#include <ESP8266WiFi.h>
2#include <ESP8266WebServer.h>
3#include <ESP8266mDNS.h>
4
5const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
6const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
7
8const int LED_PIN = D1; // GPIO5, 220 ohm direnç ile LED / LED through a 220 ohm resistor
9bool ledOn = false;
10
11ESP8266WebServer server(80);
12
13void handleRoot() {
14 String html = "<!DOCTYPE html><html><head><meta charset='utf-8'>"
15 "<meta name='viewport' content='width=device-width,initial-scale=1'>"
16 "<title>NodeMCU</title></head>"
17 "<body style='font-family:sans-serif;text-align:center'>"
18 "<h1>NodeMCU LED</h1><p>LED: <b>";
19 html += ledOn ? "ACIK / ON" : "KAPALI / OFF";
20 html += "</b></p><p>A0: ";
21 html += analogRead(A0); // 0-1023 arası analog değer / analog value 0-1023
22 html += "</p><p><a href='/on'><button>AC / ON</button></a> "
23 "<a href='/off'><button>KAPAT / OFF</button></a></p></body></html>";
24 server.send(200, "text/html", html);
25}
26
27void setLed(bool on) {
28 ledOn = on;
29 digitalWrite(LED_PIN, on ? HIGH : LOW);
30 server.sendHeader("Location", "/"); // ana sayfaya yönlendir / redirect to the main page
31 server.send(303, "text/plain", "");
32}
33
34void setup() {
35 pinMode(LED_PIN, OUTPUT);
36 digitalWrite(LED_PIN, LOW);
37 Serial.begin(115200);
38 WiFi.mode(WIFI_STA);
39 WiFi.begin(ssid, password);
40 while (WiFi.status() != WL_CONNECTED) {
41 delay(500);
42 Serial.print('.');
43 }
44 Serial.println();
45 Serial.print("Tarayicida ac / open in browser: http://");
46 Serial.println(WiFi.localIP());
47
48 if (MDNS.begin("nodemcu")) { // http://nodemcu.local adresi / address http://nodemcu.local
49 MDNS.addService("http", "tcp", 80);
50 }
51
52 server.on("/", handleRoot);
53 server.on("/on", []() { setLed(true); });
54 server.on("/off", []() { setLed(false); });
55 server.onNotFound([]() { server.send(404, "text/plain", "Bulunamadi / not found"); });
56 server.begin();
57}
58
59void loop() {
60 server.handleClient(); // gelen istekleri işle / handle incoming requests
61 MDNS.update();
62}| Kod parçası | Ne işe yarar? |
|---|---|
| ESP8266WebServer server(80) | 80 numaralı portta (HTTP) bir sunucu oluşturur |
| server.on("/on", ...) | Tarayıcı /on adresini istediğinde LED'i yakar |
| sendHeader("Location", "/") ve send(303) | İşlemden sonra tarayıcıyı ana sayfaya yönlendirir; sayfayı yenilesen bile komut tekrar gönderilmez |
| analogRead(A0) | A0'daki değeri sayfada gösterir; buraya bir LDR ya da potansiyometre bağlayabilirsin |
| MDNS.begin("nodemcu") | Cihaza IP yerine nodemcu.local adıyla ulaşmanı sağlar |
| server.handleClient() | loop içinde sürekli çağrılmalıdır; gelen istekleri işler |
Sayfa açılmıyorsa telefonunun misafir ağına ya da mobil veriye değil, NodeMCU ile aynı Wi-Fi ağına bağlı olduğundan emin ol. nodemcu.local adı bilgisayarlarda ve iPhone'larda genellikle çalışır; bazı Android telefonlarda mDNS desteği olmadığı için IP adresini kullanman gerekir. LED yerine bir röle modülü bağlarsan aynı kodla gerçek bir lambayı kontrol edebilirsin; ayrıntılar için Röle Modülü Nedir? yazısına bak.
Erişim noktası (AP) modu: modemsiz bağlantı
Ortamda Wi-Fi yoksa NodeMCU kendi ağını kurabilir. Erişim noktası modunda telefonunu doğrudan NodeMCU-AP ağına bağlarsın ve kart genellikle 192.168.4.1 adresinden cevap verir. Bu mod, bahçedeki bir sulama sistemi ya da sahada kullanılan bir ölçüm cihazı için idealdir. Yukarıdaki web sunucusunu bu modla birleştirmek için WiFi.begin satırları yerine softAP satırlarını kullanman yeterlidir; WIFI_AP_STA modu ise iki rolü aynı anda üstlenir. Şifre en az 8 karakter olmalıdır, aksi halde ağ kurulmaz.
1#include <ESP8266WiFi.h>
2
3void setup() {
4 Serial.begin(115200);
5 WiFi.mode(WIFI_AP); // kendi ağını kur / create its own network
6 bool ok = WiFi.softAP("NodeMCU-AP", "12345678"); // ad ve en az 8 karakter şifre / name and 8+ char password
7 Serial.println(ok ? "AP hazir / AP ready" : "AP hatasi / AP error");
8 Serial.print("IP: ");
9 Serial.println(WiFi.softAPIP()); // genellikle 192.168.4.1 / usually 192.168.4.1
10}
11
12void loop() {
13 Serial.print("Bagli cihaz / stations: ");
14 Serial.println(WiFi.softAPgetStationNum());
15 delay(3000);
16}MicroPython ile ESP8266
NodeMCU, Arduino diline ek olarak MicroPython ile de programlanabilir. esptool ile karta MicroPython yazılımı yüklendikten sonra Thonny gibi bir editörle Python kodlarını doğrudan çalıştırırsın. ESP8266'nın belleği sınırlı olduğu için büyük MicroPython programlarında bellek hatası alabilirsin; yine de basit Wi-Fi ve sensör projeleri için oldukça pratiktir. MicroPython'da pin numarası olarak D etiketini değil GPIO numarasını yazdığına dikkat et:
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT) # D4 = GPIO2, dahili LED / onboard LED
5wlan = network.WLAN(network.STA_IF)
6wlan.active(True)
7wlan.connect("AgAdi", "Sifre123") # Wi-Fi adı ve şifresi / Wi-Fi name and password
8
9while not wlan.isconnected():
10 time.sleep(0.5)
11print("IP:", wlan.ifconfig()[0])
12
13while True:
14 led.value(not led.value()) # ters mantık: 0 = yanar / inverted: 0 = on
15 time.sleep(0.5)ESP8266 mi ESP32 mi?
| Özellik | ESP8266 (NodeMCU) | ESP32 (DevKit) |
|---|---|---|
| İşlemci | Tek çekirdek, 80/160 MHz | Çift çekirdek, 240 MHz |
| RAM | Yaklaşık 80 KB kullanıcı RAM'i | 520 KB |
| Wi-Fi | 802.11 b/g/n, 2,4 GHz | 802.11 b/g/n, 2,4 GHz |
| Bluetooth | Yok | Classic ve BLE |
| GPIO | Yaklaşık 11 | Yaklaşık 34 (bazıları yalnızca giriş) |
| Analog giriş | 1 kanal, 10 bit | 18 kanal, 12 bit |
| PWM | Yazılımsal | 16 kanallı donanım PWM (LEDC) |
| I2C ve UART | Yazılımsal I2C, 1 tam UART ve yalnızca TX'li UART1 | 2 donanım I2C, 3 UART |
| Dokunmatik pin ve DAC | Yok | 10 dokunmatik pin, 2 DAC |
| Fiyat | Daha ucuz | Biraz daha pahalı |
Kısacası ESP8266, tek bir sensörün verisini internete göndermek, bir röleyi telefondan açmak ya da basit bir web sayfası sunmak gibi işler için hâlâ çok yeterlidir ve daha ucuzdur. Bluetooth, çok sayıda analog giriş, kamera, hızlı işlem ya da aynı anda birçok iş gereken yeni projelerde ise ESP32 daha doğru seçimdir. Kodlar büyük ölçüde taşınabilir: ESP8266WiFi.h yerine WiFi.h, ESP8266WebServer.h yerine WebServer.h, ESP8266mDNS.h yerine ESPmDNS.h yazman, ESP32'de bulunmayan MDNS.update() satırını silmen ve D1 gibi kart etiketleri yerine GPIO numaralarını kullanman çoğu zaman yeterlidir. Ayrıntılar için ESP32 Nedir? ve Arduino mu ESP32 mi? yazılarına göz atabilirsin.
Güç beslemesi ve derin uyku
NodeMCU, USB'den ya da VIN pininden 5 V ile beslenir; kart üzerindeki regülatör bunu 3,3 V'a düşürür. Wi-Fi gönderimi sırasındaki 170 mA'lik ani akım, zayıf bir USB portunda ya da ince bir kabloda gerilim düşmesine ve kartın kendiliğinden yeniden başlamasına yol açabilir; kaliteli bir kablo ve en az 1 A veren bir adaptör kullan. Pille çalışacak projelerde ESP.deepSleep() yongayı yaklaşık 20 µA tüketimle uyutur; zamanlayıcı dolunca uyanabilmesi için D0 (GPIO 16) pinini RST pinine bağlaman gerekir. Ancak kart üzerindeki USB-seri yonga ve regülatör uyurken de akım çekmeye devam ettiği için uzun pil ömrü isteyen projelerde çıplak ESP-12 modülü ya da düşük tüketimli kartlar daha iyi sonuç verir. Pil ömrünü hesaplamak için Pil Ömrü Hesaplama aracını kullanabilirsin.
NodeMCU ile proje fikirleri
- Wi-Fi termometre: DHT11 ile ölçülen sıcaklık ve nemi telefondan açılan bir sayfada göster.
- Akıllı priz: Bir röle modülü ile lambayı web sayfasındaki düğmeyle aç ve kapat.
- Bitki sulama uyarısı: Toprak nem sensörünü A0'a bağla, toprak kuruyunca sayfada uyarı göster.
- Wi-Fi LED şerit: WS2812B şeridin rengini ve efektini telefondan seç.
- İnternet saati: Saati NTP sunucusundan alıp I2C LCD ekranda göster.
- Hareket alarmı: PIR sensörü hareket algıladığında Telegram'a mesaj gönder.
Sık yapılan hatalar ve çözümleri
| Belirti | Olası sebep | Çözüm |
|---|---|---|
| Port görünmüyor | Şarj kablosu ya da eksik sürücü | Veri kablosu kullan; CH340 ya da CP2102 sürücüsünü kur |
| "Failed to connect to ESP8266: Timed out waiting for packet header" | Kart yükleme moduna geçemedi | FLASH düğmesini basılı tutarken RST'ye basıp bırak, ardından FLASH'ı da bırak ve yüklemeyi yeniden başlat |
| Kart açılmıyor ya da sürekli yeniden başlıyor | D3, D4 ya da D8'e bağlı devre açılış seviyesini bozuyor | O devreyi D5, D6, D7 gibi güvenli pinlere taşı |
| Seri Monitör'de anlamsız karakterler | Baud hızı uyumsuz | Kodla aynı hızı seç; açılış mesajları 74880 baud'dadır |
| Wi-Fi'ye bağlanamıyor | 5 GHz ağ, yanlış şifre ya da zayıf sinyal | 2,4 GHz ağ kullan, büyük-küçük harfleri kontrol et, RSSI'ya bak |
| LED yanmıyor, Seri Monitör susuyor | Kodda D1 yerine 1 yazılmış (GPIO 1 = TX) | Kodda D1 etiketini ya da GPIO 5'i kullan |
| "Soft WDT reset" hatası | loop içinde uzun süre dönen bir döngü | Uzun döngülerin içine yield() ya da delay(1) ekle; ikisi de arka plandaki Wi-Fi işlerine ve watchdog'a sıra verir |
NodeMCU ESP8266, Arduino'da öğrendiklerini kablosuz dünyaya taşımanın en ekonomik yoludur: birkaç satır kodla ev ağına bağlanır ve telefondan kontrol edilen cihazlar yapmanı sağlar. BlueGrays uygulamasında Wi-Fi bağlantısı, web sunucu, WebSocket, NTP saat ve mDNS gibi kablosuz projeleri ESP32 üzerinde adım adım devre şemaları ve kodlarıyla bulabilir, aynı mantığı NodeMCU'na kolayca uyarlayabilirsin.
Sıkça sorulan sorular
NodeMCU ile ESP8266 aynı şey mi?
ESP8266, Espressif'in ürettiği Wi-Fi'li yonganın adıdır. NodeMCU ise bu yongayı taşıyan ESP-12E modülünü USB bağlantısı, regülatör ve breadboard'a uygun pinlerle birleştiren geliştirme kartıdır. Kısacası her NodeMCU bir ESP8266 kartıdır ama her ESP8266 kartı NodeMCU değildir; ESP-01 ve Wemos D1 Mini de aynı yongayı kullanır.
NodeMCU 5 V ile çalışır mı?
Kart USB'den ya da VIN pininden 5 V ile beslenebilir; regülatör bunu 3,3 V'a düşürür. Ancak GPIO pinleri 3,3 V seviyesinde çalışır ve resmi olarak 5 V'a dayanıklı değildir. 5 V sinyalleri gerilim bölücü ya da seviye dönüştürücü üzerinden bağlamalısın.
NodeMCU'da D1 hangi GPIO?
D1, GPIO 5'tir ve varsayılan I2C SCL pinidir. Diğer sık kullanılan karşılıklar D2 = GPIO 4, D4 = GPIO 2, D5 = GPIO 14, D6 = GPIO 12, D7 = GPIO 13 ve D8 = GPIO 15'tir. Arduino IDE'de kodda doğrudan D1 yazabilirsin; MicroPython'da ise GPIO numarasını kullanmalısın.
ESP8266 5 GHz Wi-Fi'ye bağlanır mı?
Hayır, ESP8266 yalnızca 2,4 GHz bandındaki 802.11 b/g/n ağları destekler. Modeminin 2,4 GHz bandının açık olduğundan emin ol; iki bant aynı adla yayınlanıyorsa 2,4 GHz için ayrı bir ağ adı tanımlamak bağlantı sorunlarını çoğu zaman çözer.
NodeMCU V2 ile V3 arasındaki fark nedir?
V2 (Amica) daha dar bir karttır ve CP2102 USB-seri yonga kullanır; breadboard'da iki yanda boş delik bırakır. V3 (LoLin) daha geniştir ve CH340G yonga kullanır. Pinler, işlemci ve kod aynıdır; fark yalnızca boyutta ve kurulması gereken USB sürücüsündedir.
ESP8266'da Bluetooth var mı?
Hayır, ESP8266'da Bluetooth donanımı yoktur; yalnızca Wi-Fi destekler. Bluetooth ya da BLE gereken projeler için ESP32 kullanmalı ya da karta HC-05 gibi ayrı bir Bluetooth modülü eklemelisin.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
ESP32 ile LED Yakma
ESP32 ile temel GPIO çıkışı kullanımını öğretir. Bir LED'i dijital pinden açıp kapatarak yanıp sönme efekti elde ederiz. Arduino UNO'daki klasik blink projesinin ESP32 versiyonu; pin haritası ve syntax aynı kalır, fark sadece pin numaralarında.

ESP32 Dahili LED Yakma
ESP32 DevKit V1'in üzerindeki dahili (built-in) mavi LED'i yanıp söndürmek. Hiçbir harici bileşen gerekmez! ESP32 satın aldığında ilk denemen gereken proje. GPIO 2 dahili LED'e bağlıdır.

ESP32 Wi-Fi STA Bağlantısı (LCD Ekranlı)
Bu projede ESP32'yi Station (STA) modunda evdeki Wi-Fi ağına güvenli ve hata toleranslı şekilde bağlıyoruz. SSID/şifreyi `secrets.h` dosyasına ayırarak Git'e sızmasını önlüyor, otomatik yeniden bağlanma mekanizması kuruyor, RSSI sinyal seviyesini ve IP adresini I2C LCD ekranda gösteriyoruz. Dahili LED durum göstergesi olarak çalışır. Üretim seviyesi bir bağlantı yöneticisidir.

ESP32 Async Web Server (LCD'de IP Göstergeli)
Bu projede ESP32'yi aynı Wi-Fi ağındaki telefonunuzdan veya bilgisayarınızdan kontrol edebileceğiniz **asenkron bir web sunucusuna** dönüştürüyoruz. ESPAsyncWebServer kütüphanesi sayesinde sunucu birden fazla isteği aynı anda işleyebiliyor (klasik `WebServer.h` gibi tek istekte bloklamıyor). Tarayıcıdan ESP32'nin IP adresine bağlanıp ON/OFF butonlarına basarak (`/on` ve `/off` adresleri) GPIO 5'e bağlı LED'i açıp kapatabileceksiniz.

ESP32 WebSocket Sayaç (2 Buton + LCD + Web Realtime)
Bu projede ESP32'ye bağlı iki butonla (GPIO 5 artırır, GPIO 4 azaltır) bir sayaç değiştirilir. Değer hem 16x2 I2C LCD'de hem de ESPAsyncWebServer'ın WebSocket desteğiyle bağlı tüm tarayıcılarda anında güncellenir; sayfayı yenilemek gerekmez. HTTP polling yerine tek bir kalıcı bağlantı kullanılır ve ESP32 yeni değeri ws.textAll() ile herkese gönderir.

ESP32 mDNS: bluegrays-esp.local ile Cihaza Erişim (LCD Ekranlı)
Bu projede ESP32'ye mDNS (Multicast DNS) servisi ekleyerek IP adresi yerine `bluegrays-esp.local` gibi okunabilir bir host adıyla erişim sağlıyoruz. DHCP'nin verdiği IP değişse bile cihaza her zaman aynı isimle ulaşabilirsiniz. Üzerinde küçük bir web server da çalıştırarak tarayıcıdan `http://bluegrays-esp.local/` adresiyle LED kontrolü gönderiyoruz. I2C LCD ekranda hostname, IP ve LED durumu hem Türkçe hem İngilizce gösterilir. iOS, macOS ve Linux mDNS'i doğal olarak destekler; Windows'ta Bonjo

ESP32 NTP ile İnternetten Gerçek Zaman
ESP32, Wi-Fi'a bağlanıp NTP (Network Time Protocol) sunucularından milisaniye hassasiyetiyle gerçek zamanı çeker. `configTzTime()` fonksiyonu sayesinde Türkiye saat dilimi (TRT, UTC+3) otomatik uygulanır ve yaz/kış saati uygulayan ülkelerde DST geçişi POSIX TZ string'i ile otomatik yönetilir. Saat hem Serial Monitor'e hem de opsiyonel I2C LCD'ye yazdırılır. Açılışta bir kere senkronize edilir, sonra dahili RTC saymaya devam eder.

ESP32 OTA Update — Kablosuz Firmware Yükleme (LCD Ekranlı)
Bu projede ESP32'ye USB kablosu olmadan, Wi-Fi üzerinden yeni firmware yüklemeyi öğreneceksin. `ArduinoOTA` kütüphanesi ile ESP32 ağda görünür hale gelir ve Arduino IDE'nin "Network port" sekmesinde `bluegrays-ota` olarak otomatik listelenir. İlk yükleme USB ile yapılır, sonrasında tüm güncellemeler kablosuz olur — saha cihazları için çok kritik bir özelliktir. I2C LCD ekranda WiFi durumu, IP, hostname, OTA yükleme yüzdesi ve hata mesajları hem Türkçe hem İngilizce gösterilir. Parola koruması, h
Diğer yazılar
Ucuz ve popüler NodeMCU ESP8266 kartının pinlerini, Arduino IDE kurulumunu, Wi-Fi'ye bağlanmayı ve telefondan LED yakan bir web sunucu kurmayı adım adım öğren; ESP32 ile farklarını gör.

