Temeller · 5 dk okuma

ESP32 Nedir? Özellikleri, Arduino IDE Kurulumu ve İlk Wi-Fi Projesi

ESP32 nedir, Arduino'dan farkı ne? Wi-Fi ve Bluetooth, güvenli pinler, Arduino IDE kurulumu, ilk Blink kodu, Wi-Fi'ye bağlanma, telefondan LED kontrolü, ESP32 çeşitleri ve sık yapılan hatalar.

ESP32, Espressif firmasının ürettiği; Wi-Fi ve Bluetooth'u içinde barındıran, çift çekirdekli ve çok ucuz bir mikrodenetleyicidir. Arduino Uno'nun yapamadığı birçok şeyi tek başına yapar: ev ağına bağlanır, telefondan açılan bir web sayfası sunar, internetten saat ve hava durumu çeker, Bluetooth ile telefonla konuşur. Üstelik Arduino IDE ile, alıştığın Arduino komutlarıyla programlanır. Nesnelerin interneti (IoT) projelerine başlamak için bugün en popüler karttır.

ESP32 DevKit geliştirme kartı
ESP32 geliştirme kartı: metal kapaklı modülün içinde işlemci, Wi-Fi ve Bluetooth bulunur; kartın üzerinde USB-seri yonga, regülatör, EN ve BOOT düğmeleri yer alır.

ESP32 nedir, ne işe yarar?

Aslında "ESP32" metal kapağın altındaki yonganın adıdır. Elimize aldığımız kart ise bu yongayı taşıyan bir geliştirme kartıdır (ESP32 DevKit, NodeMCU-32S gibi): üzerinde bilgisayarla konuşmayı sağlayan USB-seri dönüştürücü, 5 V'u 3,3 V'a düşüren regülatör, yeniden başlatma (EN) ve programlama (BOOT) düğmeleri bulunur. ESP32 ile yapabileceklerinden bazıları:

  • Wi-Fi'li hava istasyonu: Sıcaklık ve nemi telefondan açılan bir sayfada göstermek.
  • Telefondan kontrol: Lamba, priz ya da kapıyı bir web sayfasındaki düğmeyle yönetmek.
  • İnternetten veri çekmek: Gerçek saati (NTP), hava durumunu ya da döviz kurunu ekranda göstermek.
  • Bildirim göndermek: Hareket algılanınca Telegram ya da e-posta ile haber vermek.
  • Bluetooth cihazları: Telefona bağlanan bir kumanda ya da bilgisayara klavye gibi görünen bir cihaz yapmak.
  • Pille aylarca çalışan sensörler: Derin uyku moduyla yalnızca ölçüm anında uyanmak.

ESP32 ile Arduino Uno karşılaştırması

ÖzellikArduino Uno R3ESP32 (WROOM-32)
İşlemciATmega328P, 8 bit, 16 MHzXtensa LX6, çift çekirdek, 32 bit, 240 MHz
RAM2 KB520 KB
Program belleği (flash)32 KBGenellikle 4 MB
Kablosuz bağlantıYokWi-Fi + Bluetooth (Classic ve BLE)
Çalışma gerilimi5 V3,3 V
Kullanılabilir GPIO20Yaklaşık 34 (bazıları yalnızca giriş)
Analog giriş (ADC)6 kanal, 10 bit18 kanal, 12 bit
Analog çıkış (DAC)Yok2 kanal, 8 bit

Bu tabloya bakınca ESP32 her açıdan üstün görünür, ama Uno'nun da avantajları vardır: 5 V ile çalıştığı için eski sensör ve modüllerin çoğuyla doğrudan uyumludur, pinleri daha dayanıklıdır ve yeni başlayanlar için daha az sürpriz içerir. Kablosuz bağlantı gerekmiyorsa Uno hâlâ harika bir başlangıçtır; hangisini seçeceğine karar vermek için Hangi Arduino'yu Almalıyım? yazısına göz at.

ESP32 pinleri: hangilerini güvenle kullanabilirsin?

ESP32'nin pinleri Arduino'daki kadar "her biri aynı" değildir. Bazıları flaş belleğe bağlıdır, bazıları yalnızca giriş olarak çalışır, bazılarının seviyesi ise kartın açılışını etkiler. Kartının tam pin haritasını Pinout aracında görebilirsin; özet tablo şöyle:

PinlerDurumNot
GPIO 6–11KullanmaDahili flaş belleğe bağlıdır; kullanılırsa kart çöker
GPIO 34–39Yalnızca girişÇıkış veremez, dahili pull-up direnci yoktur
GPIO 0, 2, 12, 15Dikkatli kullanAçılış (boot) sırasındaki seviyeleri önemlidir
GPIO 1 ve 3Dikkatli kullanUSB seri haberleşmenin TX ve RX pinleridir
ADC2 pinleri (0, 2, 4, 12–15, 25–27)Wi-Fi açıkken analog okumazAnalog okuma için ADC1 (GPIO 32–39) kullan
GPIO 4, 5, 13, 14, 16–19, 21–23, 25–27, 32, 33GüvenliGenel amaçlı giriş ve çıkış
ESP32'nin pinleri 3,3 V ile çalışır ve 5 V'a dayanıklı değildir. 5 V çıkış veren 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. Bir pinden en fazla 20 mA civarında akım çekmek güvenlidir.

Arduino IDE'ye ESP32 kurulumu

  1. Arduino IDE'de Dosya > Tercihler menüsünü aç ve "Ek kart yöneticisi URL'leri" alanına https://espressif.github.io/arduino-esp32/package_esp32_index.json adresini ekle.
  2. Kart Yöneticisi'nde esp32 ara ve Espressif Systems'in paketini kur.
  3. Araçlar > Kart menüsünden ESP32 Dev Module seç.
  4. ESP32'yi USB kablosuyla bağla ve Araçlar > Port menüsünden doğru portu seç. Port görünmüyorsa kartındaki USB-seri yonganın (CP2102 ya da CH340) sürücüsünü kur.
  5. Yükleme sırasında ekranda "Connecting..." yazısı uzun süre kalırsa kartın üzerindeki BOOT düğmesine basılı tut, yükleme başlayınca bırak.

İlk program: dahili LED'i yakıp söndürmek

Çoğu ESP32 DevKit kartında GPIO 2'ye bağlı mavi bir LED vardır. Aşağıdaki kod onu yarım saniyede bir yakıp söndürür; gördüğün gibi Arduino'daki komutların aynısıdır:

Arduino (C++)
1const int LED_PIN = 2;   // çoğu DevKit'te dahili mavi LED / onboard blue LED on most DevKits
2
3void setup() {
4  pinMode(LED_PIN, OUTPUT);
5}
6
7void loop() {
8  digitalWrite(LED_PIN, HIGH);
9  delay(500);
10  digitalWrite(LED_PIN, LOW);
11  delay(500);
12}

Wi-Fi'ye bağlanmak

ESP32'nin asıl gücü Wi-Fi'dır. Aşağıdaki kod ev ağına bağlanır ve modeminin ESP32'ye verdiği IP adresini Seri Monitör'e yazar. Ağ adını ve şifreni kendi bilgilerinle değiştir, Seri Monitör'ü 115200 baud hızında aç:

Arduino (C++)
1#include <WiFi.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  WiFi.begin(ssid, password);
9  Serial.print("Bağlanıyor / connecting");
10  while (WiFi.status() != WL_CONNECTED) {
11    delay(500);
12    Serial.print(".");
13  }
14  Serial.println();
15  Serial.print("IP adresi / IP address: ");
16  Serial.println(WiFi.localIP());
17}
18
19void loop() {
20}
ESP32 yalnızca 2,4 GHz Wi-Fi ağlarına bağlanabilir; 5 GHz ağlarını göremez. Modemin iki bandı aynı adla yayınlıyorsa ve bağlantı sorunu yaşıyorsan 2,4 GHz için ayrı bir ağ adı tanımlamak işe yarar.

Telefondan LED kontrolü: basit web sunucu

Şimdi ESP32'yi küçük bir web sunucusuna çevirelim. Kod yüklendikten sonra Seri Monitör'de görünen IP adresini aynı Wi-Fi'ye bağlı telefonunun tarayıcısında aç; sayfadaki iki düğmeyle kartın LED'ini yakıp söndürebilirsin. LED yerine bir röle bağlarsan aynı yöntemle gerçek bir lambayı kontrol edersin; bunun için Röle Modülü Nedir? yazısına bak.

Arduino (C++)
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";
5const char* password = "Sifre123";
6const int LED_PIN = 2;
7
8WebServer server(80);
9
10void handleRoot() {
11  server.send(200, "text/html",
12    "<meta name='viewport' content='width=device-width'>"
13    "<h1>ESP32</h1>"
14    "<a href='/on'><button>LED AÇ / ON</button></a> "
15    "<a href='/off'><button>LED KAPAT / OFF</button></a>");
16}
17
18void setup() {
19  pinMode(LED_PIN, OUTPUT);
20  Serial.begin(115200);
21  WiFi.begin(ssid, password);
22  while (WiFi.status() != WL_CONNECTED) delay(500);
23  Serial.println(WiFi.localIP());   // bu adresi telefonda aç / open this address on your phone
24
25  server.on("/", handleRoot);
26  server.on("/on",  []() { digitalWrite(LED_PIN, HIGH); handleRoot(); });
27  server.on("/off", []() { digitalWrite(LED_PIN, LOW);  handleRoot(); });
28  server.begin();
29}
30
31void loop() {
32  server.handleClient();
33}

ESP32 çeşitleri: hangisini almalısın?

ModelÖne çıkan özelliğiNe zaman seçilir?
ESP32 (WROOM-32 DevKit)Wi-Fi, Bluetooth Classic ve BLE, çift çekirdekGenel amaçlı ilk kart
ESP32-S3Doğrudan USB, daha fazla RAM, yapay zekâ komutlarıKamera, ses, USB klavye ve fare projeleri
ESP32-C3Tek çekirdek RISC-V, Wi-Fi ve BLE, küçük ve ucuzBasit IoT sensörleri
ESP32-CAMKamera ve microSD yuvasıGörüntü aktarımı, güvenlik kamerası
ESP8266 (NodeMCU, Wemos D1)Daha eski, tek çekirdek, yalnızca Wi-FiÇok basit Wi-Fi projeleri

Güç beslemesi ve pil kullanımı

ESP32, Wi-Fi'yi açtığı anlarda kısa süreliğine 250 mA'e kadar akım çekebilir. Zayıf bir USB portu ya da ince bir kablo bu ani yükü karşılayamazsa kart "Brownout detector was triggered" mesajıyla yeniden başlar. Kaliteli bir kablo ve en az 1 A veren 5 V bir adaptör kullan; gerekirse 3V3 ile GND arasına 100–470 µF'lık bir kondansatör ekle. Pil ile çalışacak projelerde ESP32'nin derin uyku modu yonga tüketimini mikroamperlere indirir; ancak geliştirme kartlarındaki regülatör ve LED birkaç mA harcamaya devam eder, bu yüzden uzun pil ömrü için çıplak modül ya da düşük tüketimli kartlar tercih edilir.

MicroPython ile ESP32

ESP32 yalnızca Arduino diliyle değil MicroPython ile de programlanabilir. Thonny programıyla karta MicroPython yükledikten sonra Wi-Fi'ye bağlanmak birkaç satırdır:

MicroPython
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)
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())        # LED'i yakıp söndür / toggle the LED
15    time.sleep(0.5)

ESP32 ile proje fikirleri

  • Wi-Fi hava istasyonu: DHT11 ile ölçülen sıcaklık ve nemi telefondan izle.
  • Akıllı priz: Bir röleyle lambayı web sayfasından ya da sesli asistandan aç.
  • Hareket alarmı: PIR sensörü birini algıladığında Telegram'dan bildirim gönder.
  • İnternet saati: Saati NTP sunucusundan alıp bir LCD ya da 7 segment ekranda göster.
  • Bluetooth kumanda: Telefondaki bir uygulamayla robot arabayı yönet.
  • Pil dostu sensör: Her 10 dakikada bir uyanıp ölçüm gönderen, sonra yeniden uyuyan bir cihaz yap.

Sık yapılan hatalar ve çözümleri

  • Port görünmüyor: Kablo yalnızca şarj kablosu olabilir ya da USB-seri sürücüsü kurulu değildir; veri kablosu kullan ve CP2102 ya da CH340 sürücüsünü kur.
  • "Failed to connect... Timed out waiting for packet header": Yükleme başlarken BOOT düğmesine basılı tut.
  • Kart sürekli yeniden başlıyor: Güç yetersiz (brownout); daha iyi kablo, adaptör ve kondansatör kullan.
  • Wi-Fi'ye bağlanamıyor: Ağ 5 GHz olabilir ya da ad ve şifrede büyük-küçük harf hatası vardır.
  • GPIO 6–11'i kullanmak: Bu pinler flaş belleğe bağlıdır; kullanıldığında kart çöker.
  • Wi-Fi açılınca analog değerler bozuluyor: Sensör ADC2 pinine bağlı; GPIO 32–39 arasındaki ADC1 pinlerine taşı.

ESP32, Arduino'da öğrendiklerini internete taşımanın en kolay yoludur. Arduino'nun temellerini tazelemek için Arduino Nedir? yazısına bakabilirsin; BlueGrays uygulamasında ESP32 ile LED, web sunucu, WebSocket, NTP saat, hava durumu ve Telegram alarmı gibi onlarca projeyi devre şemaları ve kodlarıyla bulabilirsin.

Sıkça sorulan sorular

ESP32 bir Arduino mu?

Hayır. ESP32, Espressif'in ürettiği ayrı bir mikrodenetleyicidir; Arduino ise kart ve yazılım ekosisteminin adıdır. Ancak Espressif'in sağladığı paket sayesinde ESP32, Arduino IDE ile ve Arduino komutlarıyla programlanabilir; bu yüzden Arduino kodlarının çoğu küçük değişikliklerle ESP32'de çalışır.

ESP32 5 V ile çalışır mı?

Geliştirme kartı USB'den ya da VIN pininden 5 V ile beslenebilir; kart üzerindeki regülatör bunu 3,3 V'a düşürür. Ancak GPIO pinleri 3,3 V ile çalışır ve 5 V'a dayanıklı değildir; 5 V sinyalleri doğrudan pinlere bağlamamalısın.

ESP32 mi Arduino Uno mu almalıyım?

Wi-Fi, Bluetooth ya da internet gerektiren projeler için ESP32 al. Elektroniğe yeni başlıyorsan, 5 V'luk sensör ve modüllerle sorunsuz çalışmak ve kaynaklardaki örnekleri birebir takip etmek istiyorsan Arduino Uno daha az sürprizle başlamanı sağlar.

ESP32 5 GHz Wi-Fi'ye bağlanır mı?

Klasik ESP32, ESP32-S3 ve ESP32-C3 yalnızca 2,4 GHz Wi-Fi destekler ve 5 GHz ağlarını göremez. Modeminin 2,4 GHz bandının açık olduğundan emin ol.

ESP32 ile ESP8266 arasındaki fark nedir?

ESP8266 daha eski, tek çekirdekli ve yalnızca Wi-Fi destekleyen bir yongadır; tek analog girişi vardır. ESP32 ise çift çekirdekli, daha hızlıdır, Bluetooth'u da destekler ve çok daha fazla pine, ADC kanalına ve belleğe sahiptir. Yeni projelerde ESP32 tercih edilir.

ESP32 internet olmadan kullanılabilir mi?

Evet. ESP32 kendi Wi-Fi ağını kurabilir (erişim noktası modu), birden fazla ESP32 ESP-NOW ile modem olmadan haberleşebilir ve Bluetooth ile telefona bağlanabilir. Kablosuz özellikleri hiç kullanmadan güçlü bir Arduino gibi de çalıştırılabilir.

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 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 `/control` ile bağlanıp butonlara basarak GPIO 5'e bağlı LED'i açıp kapatabileceksiniz. HTML arayüzü `PROGMEM` ile flash belleğe gömülü olduğundan ayrıca dosya sistemi gerek

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, ESPAsyncWebServer'ın WebSocket desteğini kullanarak DHT11 sensöründen okuduğu sıcaklık ve nem değerlerini bağlı tüm tarayıcılara gerçek zamanlı olarak push eder. Standart HTTP polling yerine tek bir kalıcı TCP bağlantısı üzerinden çift yönlü iletişim sağlanır, böylece gecikme milisaniyeler seviyesine iner. Tarayıcı tarafında saf JavaScript ile Chart.js kullanılarak canlı çizgi grafik çizilir; veri formatı JSON paketi olarak iletilir. LittleFS'e gömülü HTML/JS sayesinde aynı ESP

4.5(14)
23
ESP32 HTTPClient + Hava Durumu API (LCD Ekranlı)
#133İleri
Premium

ESP32 HTTPClient + Hava Durumu API (LCD Ekranlı)

Bu projede ESP32 ile internet üzerinden hava durumu API'sine (wttr.in) `HTTPClient.h` kullanarak REST API çağrısı yapıyoruz. ArduinoJson v7 ile dönen JSON cevabını parse edip şehir, sıcaklık, nem, hava durumu ve rüzgar bilgilerini I2C LCD ekranda hem Türkçe hem İngilizce gösteriyoruz. wttr.in ücretsizdir, API key gerektirmez — herhangi bir şehir ismini yazarak o şehrin anlık hava durumunu çekebilirsiniz. 30 dakikada bir otomatik güncelleme, LED ile her ekran için farklı görsel feedback ve eksiks

4.7(13)
20
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 PIR Hareket Sensörü ile Otomatik Aydınlatma
#121Orta
Premium

ESP32 PIR Hareket Sensörü ile Otomatik Aydınlatma

Bu projede HC-SR501 PIR hareket sensörü ile odaya giren kişiyi algılayıp LED'i otomatik olarak yakacağız. Hareket algılandığında LED belirli bir süre yanacak ve `millis()` fonksiyonu ile sayaç sayesinde `delay()` kullanmadan zamanı yöneteceğiz. Bu sayede ESP32 bloklanmadan, başka işler de yapabilen bir hareket sensörlü aydınlatma sistemi elde edeceğiz. Gerçek hayatta merdiven, koridor, banyo veya dolap içi aydınlatmalarda kullanılabilir.

4.4(24)
38
ESP32 Hareket Alarm Sistemi (PIR + Buzzer + LED + Telegram)
#145İleri
Premium

ESP32 Hareket Alarm Sistemi (PIR + Buzzer + LED + Telegram)

PIR sensörü hareket algıladığında buzzer ve LED'i aktif eden, aynı anda Telegram üzerinden sahibine anlık bildirim gönderen akıllı bir güvenlik alarm sistemidir. Yanlış alarmları önlemek için 30 saniyelik cooldown (bekleme süresi) mekanizması vardır. Ev güvenliği, garaj izleme, depo veya çalışma odası gibi alanlarda kullanılabilir. Telegram entegrasyonu sayesinde nerede olursanız olun anında haberdar olursunuz. ESP32-CAM kullanılırsa fotoğraflı bildirim eklenebilir, klasik ESP32 DevKit V1 ile me

0.0(0)
8

ESP32'nin Arduino'dan farklarını, hangi pinlerin güvenle kullanılabileceğini, Arduino IDE kurulumunu ve telefondan LED yakan ilk Wi-Fi projeni adım adım öğren.

ESP32 Nedir? Özellikleri, Arduino IDE Kurulumu ve İlk Wi-Fi Projesi | BlueGrays