Parçalar · 7 dk okuma

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.

NodeMCU V3 ESP8266 geliştirme kartı
NodeMCU V3 (LoLin): metal kapaklı ESP-12E modülünde ESP8266 yongası ve 4 MB flaş bellek bulunur; kartta CH340 USB-seri yonga, 3,3 V regülatör, RST ve FLASH düğmeleri yer alır.

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.

ÖzellikDeğer
YongaESP8266EX, Tensilica L106, 32 bit
Saat hızı80 MHz (160 MHz'e çıkarılabilir)
RAMYaklaşık 80 KB kullanıcı RAM'i (Wi-Fi bağlıyken programa 40–50 KB kalır)
Flaş bellek4 MB (ESP-12E modülü)
Wi-Fi802.11 b/g/n, yalnızca 2,4 GHz; istemci, erişim noktası ya da ikisi birden
BluetoothYok
Kullanılabilir GPIO11 civarı (D0–D8, RX, TX)
Analog giriş1 kanal (A0), 10 bit, kart üzerinde yaklaşık 0–3,2 V
PWMYazılımsal, varsayılan 1 kHz, 0–255 aralığı
Çalışma gerilimi3,3 V (USB ya da VIN üzerinden 5 V ile beslenir)
AkımWi-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 etiketiGPIOEk göreviKullanım notu
D0GPIO 16Derin uykudan uyandırmaKesme (interrupt) desteklemez; derin uyku için RST'ye bağlanır
D1GPIO 5I2C SCLGüvenli, genel amaçlı
D2GPIO 4I2C SDAGüvenli, genel amaçlı
D3GPIO 0FLASH düğmesiAçılışta LOW olursa kart programlama moduna girer
D4GPIO 2Dahili LED (ters mantık), TX1Açılışta HIGH olmalı
D5GPIO 14SPI SCKGüvenli, genel amaçlı
D6GPIO 12SPI MISOGüvenli, genel amaçlı
D7GPIO 13SPI MOSIGüvenli, genel amaçlı
D8GPIO 15SPI CSAçılışta LOW olmalı; kartta pull-down direnci vardır
RXGPIO 3UART RXSeri Monitör kullanılırken boş bırak
TXGPIO 1UART TXAçılışta açılış mesajlarını gönderir
A0ADC0Analog girişYalnızca analog okuma, yaklaşık 0–3,2 V
SD2, SD3GPIO 9, 10Flaş 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.

ESP8266'nın pinleri 3,3 V ile çalışır ve resmi olarak 5 V'a dayanıklı değildir; bir pinden en fazla 12 mA civarında akım çekmelisin. 5 V çıkışlı bir sensörü (örneğin HC-SR04'ün ECHO pinini) doğrudan bağlama, araya bir Gerilim Bölücü ya da seviye dönüştürücü koy. 3V3 pinine asla 5 V verme; kartı USB'den ya da VIN pininden 5 V ile besle.

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

  1. 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.
  2. Araçlar > Kart > Kart Yöneticisi'ni aç, esp8266 ara ve ESP8266 Community paketini kur.
  3. 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ç.
  4. 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.
  5. 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:

Arduino (C++)
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}
Kodu yükledikten sonra Seri Monitör'de anlamsız karakterler görmen normaldir: ESP8266 açılış mesajlarını 74880 baud hızında gönderir. Seri Monitör'ü 74880'e ayarlarsan açılış sebebini ve açılış modunu okuyabilirsin; kendi mesajların ise kodda seçtiğin hızda (ör. 115200) görünür.

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ç:

Arduino (C++)
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ğeriSinyal kalitesiNe beklemelisin?
-30 ile -50 dBmÇok iyiKesintisiz ve hızlı bağlantı
-50 ile -67 dBmİyiWeb sunucu ve sensör verisi için yeterli
-67 ile -80 dBmZayıfAra sıra kopma, yavaş sayfa açılışı
-80 dBm'den düşükÇok zayıfBağlantı kurulamayabilir; kartı modeme yaklaştır
ESP8266 yalnızca 2,4 GHz ağlara bağlanabilir. Modemin 2,4 ve 5 GHz bantlarını aynı adla yayınlıyorsa ve kart bağlanamıyorsa, 2,4 GHz için ayrı bir ağ adı tanımlamak çoğu zaman sorunu çözer. Kurumsal (WPA2-Enterprise) ağlar ve tarayıcıdan giriş isteyen misafir ağları ise ek kod olmadan çalışmaz.

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ç.

Arduino (C++)
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.

Arduino (C++)
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:

MicroPython
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?

ÖzellikESP8266 (NodeMCU)ESP32 (DevKit)
İşlemciTek çekirdek, 80/160 MHzÇift çekirdek, 240 MHz
RAMYaklaşık 80 KB kullanıcı RAM'i520 KB
Wi-Fi802.11 b/g/n, 2,4 GHz802.11 b/g/n, 2,4 GHz
BluetoothYokClassic ve BLE
GPIOYaklaşık 11Yaklaşık 34 (bazıları yalnızca giriş)
Analog giriş1 kanal, 10 bit18 kanal, 12 bit
PWMYazılımsal16 kanallı donanım PWM (LEDC)
I2C ve UARTYazılımsal I2C, 1 tam UART ve yalnızca TX'li UART12 donanım I2C, 3 UART
Dokunmatik pin ve DACYok10 dokunmatik pin, 2 DAC
FiyatDaha ucuzBiraz 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

BelirtiOlası 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çemediFLASH 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ıyorD3, D4 ya da D8'e bağlı devre açılış seviyesini bozuyorO devreyi D5, D6, D7 gibi güvenli pinlere taşı
Seri Monitör'de anlamsız karakterlerBaud hızı uyumsuzKodla aynı hızı seç; açılış mesajları 74880 baud'dadır
Wi-Fi'ye bağlanamıyor5 GHz ağ, yanlış şifre ya da zayıf sinyal2,4 GHz ağ kullan, büyük-küçük harfleri kontrol et, RSSI'ya bak
LED yanmıyor, Seri Monitör susuyorKodda 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
Yükleme sırasında bağlantı sorunu yaşıyorsan önce kartı bilgisayardan çıkarıp D3, D4, D8 ve RX pinlerine bağlı her şeyi sök, sonra yeniden dene. Bu pinlerdeki bir modül, kartın açılışta yükleme moduna girmesini engelleyebilir. Ayrıca USB hub yerine bilgisayarın kendi USB portunu kullanmak, ani akım çekişlerinden kaynaklanan kopmaları azaltır.

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.

Tüm projeleri gör
ESP32 ile LED Yakma
#103Başlangıç

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.

4.7(36)
92
ESP32 Dahili LED Yakma
#106Başlangıç

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.

4.8(29)
53
ESP32 Wi-Fi STA Bağlantısı (LCD Ekranlı)
#127İleri
Premium

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.

4.4(21)
33
ESP32 Async Web Server (LCD'de IP Göstergeli)
#129İleri
Premium

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.

4.8(16)
26
ESP32 WebSocket Sayaç (2 Buton + LCD + Web Realtime)
#130İleri
Premium

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.

4.5(14)
23
ESP32 mDNS: bluegrays-esp.local ile Cihaza Erişim (LCD Ekranlı)
#131İleri
Premium

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

4.8(14)
23
ESP32 NTP ile İnternetten Gerçek Zaman
#128İleri
Premium

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.

4.5(13)
21
ESP32 OTA Update — Kablosuz Firmware Yükleme (LCD Ekranlı)
#132İleri
Premium

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

4.7(13)
21

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.

NodeMCU ESP8266 Kullanımı: Pinler, Kurulum ve Wi-Fi Web Sunucu | BlueGrays