- ESP32-S3, Espressif’in çift çekirdekli Xtensa LX7 işlemcili, 240 MHz’de çalışan Wi-Fi + Bluetooth 5 (LE) mikrodenetleyicisi. 45 GPIO, 512 KB SRAM.
- Klasik ESP32’den üç temel farkı: yerleşik USB OTG, 14 kanal dokunmatik, ve yapay sinir ağı hesaplaması için vektör komut seti.
- Kartın üstündeki N8R8, N16R8 gibi kodlar rastgele değil: N = flash, R = PSRAM, sayılar megabayt.
- Kartta iki USB portu var ve ikisi farklı çalışıyor. Yeni başlayanların en sık takıldığı yer burası.
- GPIO35, GPIO36, GPIO37 bazı modellerde kullanılamıyor, GPIO19 ve GPIO20 USB’ye ayrılmış, dört pin de strapping görevinde.
- Kart sürümüne göre RGB LED ya GPIO48’de ya GPIO38’de. Kodunuz çalışmıyorsa önce buraya bakın.
ESP32 ile bir proje yaptıysanız ve kamera, ses ya da renkli ekran eklemeye kalktıysanız muhtemelen duvara toslamışsınızdır: pin yetmez, RAM yetmez, USB yoktur.
ESP32-S3 tam olarak bunun için var. Bu yazıda pinout şemasını, kart üstündeki şifreli model kodlarını, hangi pinleri kullanamayacağınızı ve Arduino IDE’de ilk kodu yüklerken takılacağınız iki tuzağı sırayla geçeceğiz. 👇🏻
ESP32-S3 Pinout Şeması
Aradığınız şey muhtemelen buysa, en başa koyalım. Aşağıdaki şema ESP32-S3-DevKitC-1, yani Espressif’in kendi referans geliştirme kartına ait resmi pinout:

Görsel mobilde küçük kalıyor, üstüne tıklayıp büyütebilirsiniz. Farklı bir kartınız varsa (Waveshare, XIAO, Super Mini gibi) pin dizilimi değişir ama GPIO numaralarının işlevi aynı kalır, çünkü işlev çipten geliyor, karttan değil.
Kart seçip pin arıyorsanız ESP32 pinout aracımızda ESP32-S3-DevKitC-1, S3-WROOM-1, C3, C6 ve S2 kartlarını yan yana inceleyebilirsiniz.
ESP32-S3 Nedir?
ESP32-S3, Espressif’in 2021’de tanıttığı, klasik ESP32’nin yerini almak üzere tasarlanmış Wi-Fi + Bluetooth mikrodenetleyicisi.
Resmi künyesi:
| Özellik | Değer |
|---|---|
| İşlemci | 32 bit Xtensa LX7, çift çekirdek, 240 MHz |
| SRAM | 512 KB (16 KB’ı RTC alanında) |
| ROM | 384 KB |
| Kablosuz | Wi-Fi 802.11 b/g/n 2,4 GHz + Bluetooth 5 (LE) |
| GPIO | 45 |
| Dokunmatik | 14 kanal |
| ADC | 2 adet 12 bit |
| Arayüzler | 4x SPI, 3x UART, 2x I2C, 2x I2S, RMT, LED PWM, TWAI, SD/MMC |
| Özel | USB-OTG, LCD arayüzü, DVP kamera arayüzü, ULP çekirdek |
| Yapay zeka | Vektör komut seti (ESP-DSP ve ESP-NN kütüphaneleri) |
Klasik ESP32’den farkı ne?
Kafa karıştıran nokta şu: ESP32-S3, klasik ESP32’nin her açıdan üstü değil. Bazı şeyler eklenmiş, bazı şeyler çıkarılmış.
| ESP32 (klasik) | ESP32-S3 | |
|---|---|---|
| Çekirdek | Xtensa LX6 x2 | Xtensa LX7 x2 |
| SRAM | 520 KB | 512 KB |
| GPIO | 34 | 45 |
| Bluetooth | 4.2 Klasik + LE | 5 (yalnız LE) |
| USB | Yok, harici çevirici şart | Yerleşik USB-OTG |
| DAC | Var (2 kanal) | Yok |
| Ethernet MAC | Var | Yok |
| Kamera arayüzü | Yok | DVP var |
| Vektör komutları | Yok | Var |
Pratik karşılığı:
- Bluetooth Klasik kullanıyorsanız S3’e geçmeyin.
BluetoothSerialkütüphanesi S3’te çalışmaz. Kablosuz kulaklık, SPP seri bağlantı gibi işler için klasik ESP32 gerekir. - Analog ses çıkışı alıyorsanız DAC yok. Yerine I2S kullanmanız, yani harici bir DAC ya da amfi modülü (MAX98357A gibi) eklemeniz gerekir.
- Kablolu Ethernet gerekiyorsa klasik ESP32 ya da harici SPI Ethernet modülü şart.
Buna karşılık kazandıklarınız: 11 fazla pin, yerleşik USB, kamera arayüzü ve harici PSRAM ile onlarca megabaytlık RAM.
Espressif’in isimlendirmesi karışık görünüyor ama mantığı var:
- S serisi (S2, S3): performans odaklı, çok pinli, USB’li. S2 tek çekirdek ve Bluetooth’suz, S3 çift çekirdek ve Bluetooth 5 LE’li.
- C serisi (C3, C6): RISC-V çekirdekli, küçük ve ucuz. C6 ayrıca Wi-Fi 6, Zigbee ve Thread destekliyor, akıllı ev projelerinin yeni gözdesi.
- P4: Wi-Fi’siz, yüksek performanslı uygulama işlemcisi.
Ekran, kamera ya da ses işi yapıyorsanız S3. Pil ömrü ve maliyet önceliğinizse C3. Matter/Thread hedefliyorsanız C6.
Model Kodlarını Çözmek: N8R8, N16R8, N32R16V
Kart alırken en çok kafa karıştıran şey bu. Aynı isimli üç kart farklı fiyatta ve nedeni bu harfler.
Kod iki parçadan oluşuyor:
- N = flash bellek (programınızın durduğu yer), sayı megabayt
- R = PSRAM (harici çalışma belleği), sayı megabayt
- V = SPI hattı 1,8 volt çalışıyor (yoksa 3,3 volt)
Yani:
| Kod | Flash | PSRAM | Not |
|---|---|---|---|
| N4 | 4 MB | Yok | En ucuz, PSRAM gerektirmeyen işler |
| N8R2 | 8 MB | 2 MB | Dengeli giriş seviyesi |
| N8R8 | 8 MB | 8 MB | Espressif’in resmi DevKitC-1 seçeneği |
| N16R8 | 16 MB | 8 MB | Piyasada en yaygın, kamera ve ekran için tercih edilen |
| N32R16V | 32 MB | 16 MB | Espressif’in üst seçeneği, 1,8 V SPI |
PSRAM ne işe yarar? Çipin içindeki 512 KB SRAM bir kamera karesi ya da renkli ekran çerçeve tamponu için yetmez. PSRAM harici bir RAM yongası; megabaytlarca alan açıyor ama SRAM’den yavaş.
Kartınızda 8 MB PSRAM olması onun kullanıldığı anlamına gelmiyor. Arduino IDE’de Tools → PSRAM menüsünden açmanız gerekiyor. Kapalıyken ESP.getPsramSize() sıfır döner ve ps_malloc() çalışmaz.
Octal PSRAM’li modellerde (R8 ve üstü) doğru seçenek genellikle OPI PSRAM, quad olanlarda QSPI PSRAM. Yanlış seçim kartı açılışta sonsuz yeniden başlatma döngüsüne sokar.
Modül tipleri: WROOM-1, WROOM-1U, WROOM-2
Kod dizisinin başındaki modül adı da bir şey söylüyor:
- ESP32-S3-WROOM-1: PCB anten, Quad SPI flash. En yaygın.
- ESP32-S3-WROOM-1U: Anten yerine harici anten konnektörü. Metal kutu içine koyacaksanız bu.
- ESP32-S3-WROOM-2: Octal SPI bellek. Daha hızlı ama karşılığında pin kaybediyorsunuz (aşağıda).
Hangi Pinleri Kullanamazsınız?
45 GPIO yazıyor ama hepsini serbestçe kullanamazsınız. Yeni başlayanların projesini bozan liste bu.

1. Flash ve PSRAM’e ayrılmış pinler
GPIO26 ile GPIO32 arası dahili flash ve PSRAM’e bağlı, dışarı çıkarılmamış. Bunlara zaten erişemezsiniz.
Kritik olan: Octal SPI bellekli modellerde (WROOM-2 ve octal PSRAM’li WROOM-1/1U) GPIO35, GPIO36 ve GPIO37 de belleğe ayrılıyor. Header’da pin duruyor, lehimleyebiliyorsunuz, ama kullandığınız anda kart çöküyor.
N16R8 gibi popüler modeller bu gruba giriyor. Yani piyasadaki en yaygın kartta bu üç pin ölü.
2. USB’ye ayrılmış pinler
GPIO19 = USB_D- ve GPIO20 = USB_D+. Yerleşik USB portunu kullanıyorsanız bu ikisi meşgul. Varsayılan olarak USB-JTAG hata ayıklamasına da ayrılmışlar; başka amaçla yapılandırırsanız JTAG devre dışı kalıyor.
3. Strapping pinleri
Dört pin açılış anında kartın nasıl davranacağını belirliyor:
| Pin | Görev | Dikkat |
|---|---|---|
| GPIO0 | BOOT | Açılışta LOW ise karta program yükleme moduna girer |
| GPIO3 | JTAG kaynak seçimi | |
| GPIO45 | SPI voltaj seçimi | Yanlış seviye kartı açtırmaz |
| GPIO46 | Log çıkışı ayarı | Açılışta LOW tutulmalı |
Bu pinlere açılış anında LOW/HIGH dayatan bir devre (mesela pull-down dirençli bir buton ya da röle modülü) bağlarsanız kart ya açılmaz ya da yükleme moduna takılır. Program çalışmaya başladıktan sonra normal GPIO gibi kullanabilirsiniz.
4. ADC2 ve Wi-Fi çakışması
ESP32-S3’te iki ADC var:
- ADC1: GPIO1 ile GPIO10 arası
- ADC2: GPIO11 ile GPIO20 arası
Klasik ESP32’de olduğu gibi burada da ADC2, Wi-Fi açıkken güvenilir okuma yapmıyor. Wi-Fi kullanan bir projede analog okuma yapacaksanız sensörlerinizi ADC1 pinlerine, yani GPIO1-GPIO10 arasına bağlayın.
Sonuç: rahatça kullanabileceğiniz pinler
N16R8 tipi bir kartta, Wi-Fi açıkken ve yerleşik USB kullanırken elinizde kalan güvenli GPIO’lar:
GPIO1-GPIO18, GPIO21, GPIO38-GPIO44, GPIO47, GPIO48
Bu bile klasik ESP32’nin sunduğundan fazla.
İki USB Portu: En Sık Yapılan Hata 🔌
DevKitC-1’in üstünde yan yana iki micro-USB portu var ve aynı şey değiller.
| Port | Ne yapar |
|---|---|
| UART (sol) | Kart üstündeki CP2102 çeviriciye bağlı. Klasik yöntem, her zaman çalışır |
| USB (sağ) | Doğrudan çipin USB-OTG birimine bağlı. Programlama, seri iletişim ve JTAG hata ayıklaması |
Yeni başlayanların yaşadığı senaryo hep aynı: kabloyu sağdaki porta takıyor, Serial.println() yazıyor, seri ekranda hiçbir şey görünmüyor.
Yerleşik USB portundan Serial.print çıktısı almak için Arduino IDE’de Tools → USB CDC On Boot → Enabled yapmanız gerekiyor. Varsayılan kapalı.
Açtıktan sonra ikinci bir tuzak var: kart her yeniden başladığında USB bağlantısı da kopup yeniden kuruluyor. Bu yüzden setup() içindeki ilk satırlar seri ekrana yetişemiyor. Çözüm:
void setup() {
Serial.begin(115200);
delay(2000); // USB'nin bilgisayara yeniden tanıtılmasını bekle
Serial.println("Merhaba ESP32-S3");
}
Hâlâ sorun yaşıyorsanız soldaki UART portunu kullanın. Orada bu sorun yok.
Kart hiç görünmüyorsa: BOOT düğmesini basılı tutun, RESET’e basıp bırakın, sonra BOOT’u bırakın. Kart zorla yükleme moduna girer ve bilgisayarda görünür.
Arduino IDE ile Başlangıç
Arduino IDE kurulu değilse önce Arduino IDE nasıl indirilir yazımıza göz atın.
1. Kart desteğini ekleyin. File → Preferences → Additional Board Manager URLs alanına:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
2. Kartı yükleyin. Tools → Board → Boards Manager → “esp32” aratın, Espressif Systems paketini kurun.
3. Doğru kartı seçin. Tools → Board → ESP32 Arduino → ESP32S3 Dev Module. Kartınızın özel bir tanımı varsa (XIAO, LilyGO gibi) onu seçin.
4. Ayarları yapın. Kritik olanlar:
| Ayar | Değer |
|---|---|
| USB CDC On Boot | Enabled (yerleşik USB kullanıyorsanız) |
| Flash Size | Kartınızın gerçek boyutu (N16 ise 16MB) |
| PSRAM | OPI PSRAM (R8/R16 için) ya da Disabled |
| Partition Scheme | Flash boyutuna uygun olan |
| Upload Mode | UART0 / Hardware CDC |
5. İlk kodu yükleyin. Kart üstündeki RGB LED’i yakan test:
// ESP32-S3-DevKitC-1 v1.1 -> RGB LED GPIO38
// ESP32-S3-DevKitC-1 v1.0 -> RGB LED GPIO48
#define RGB_PIN 38
void setup() {
Serial.begin(115200);
delay(2000);
Serial.printf("Flash: %u MB\n", ESP.getFlashChipSize() / (1024 * 1024));
Serial.printf("PSRAM: %u byte\n", ESP.getPsramSize());
}
void loop() {
neopixelWrite(RGB_PIN, 32, 0, 0); // kırmızı
delay(500);
neopixelWrite(RGB_PIN, 0, 32, 0); // yeşil
delay(500);
neopixelWrite(RGB_PIN, 0, 0, 32); // mavi
delay(500);
}
Seri ekranda flash ve PSRAM boyutunu görüyorsanız kart doğru yapılandırılmış demektir. PSRAM 0 dönüyorsa Tools menüsünden açmayı unutmuşsunuzdur.
DevKitC-1’in iki sürümü piyasada. v1.0’da RGB LED GPIO48’e, v1.1’de GPIO38’e bağlı. Espressif bunu revizyon notlarında açıkça yazıyor.
Kodunuz doğru ama LED yanmıyorsa RGB_PIN değerini diğeriyle deneyin. Klon kartlarda bu numara bambaşka olabilir, kartın kendi şemasına bakmak gerekir.
Ne Zaman ESP32-S3 Seçmeli?
Seçin:
- Renkli TFT ya da büyük OLED ekran süreceksiniz (LCD arayüzü ve PSRAM tam bunun için)
- Kamera kullanacaksınız (DVP arayüzü yerleşik)
- I2S ile ses kaydedecek ya da çalacaksınız
- Yerleşik USB istiyorsunuz (HID klavye, MIDI cihaz, seri port)
- Pin sayısı sıkıştırıyor
- Kenar cihazda küçük bir sinir ağı çalıştıracaksınız
Seçmeyin:
- Bluetooth Klasik gerekiyorsa (S3’te yok)
- Analog çıkış için DAC gerekiyorsa (S3’te yok)
- Kablolu Ethernet gerekiyorsa (S3’te MAC yok)
- İşiniz basit bir sensör okuyup buluta yollamaksa. O iş için ESP32-C3 daha ucuz ve daha az güç yer.
Ekran süreceksiniz ve karakter üretmek gerekiyorsa LCD karakter oluşturucu ve görselden C dizisi çevirici araçlarımız işinizi görür.
Sonuç
ESP32-S3’ün öğrenme eğrisi klasik ESP32’den dik, ama diklik zorluktan değil, seçenek fazlalığından geliyor: iki USB portu, beş modül varyantı, açılıp kapanması gereken PSRAM ayarı, sürüme göre değişen LED pini.
Bu yazıdaki dört şeyi bilirseniz geri kalanı akar:
- N ve R kodları flash ile PSRAM’i söylüyor, PSRAM’i menüden açmayı unutmayın.
- Sağdaki USB portu için
USB CDC On Bootaçık olmalı. - GPIO35-36-37 yaygın modellerde ölü, GPIO19-20 USB’nin.
- Wi-Fi varsa analog okuma ADC1’den, yani GPIO1-GPIO10 arasından.
👉🏻 Pin ararken ESP32 pinout aracımızı kullanabilirsiniz, S3 dahil beş kartı yan yana gösteriyor.
