Hoş Geldiniz
Hızlı ve güvenli alışverişe giriş yapın!
Henüz Üye Değil Misiniz?
Kolayca üye olabilirsiniz!

ESP32 Pinout (Pin Diyagramı) Rehberi

20-01-2026 20:06
ESP32 Pinout (Pin Diyagramı) Rehberi

ESP32, dahili Wi-Fi ve Bluetooth özellikleri sayesinde IoT projelerinde en çok tercih edilen SoC çözümlerinden biridir. Bu güçlü çipi verimli şekilde kullanabilmek için ESP32 pin yapısını iyi anlamamız gerekir. ESP32'ye yeni başlıyorsanız, öncelikle ESP32 Nedir ? Ne İşe Yarar ? konulu yazımıza göz atarak temel bilgiler hakkında bilgi edinebilirsiniz.

Bu rehberde, standart ESP32'nin tüm bağlantı yapısına ve ESP32'yi dış dünya ile buluşturan pinleri hakkında detaylı bilgilere ulaşabilirsiniz.

Bu yazımız, hem yeni başlayanlar hemde profesyoneller için ESP32 pinout rehberi niteliğindedir. Doğru pin seçimi ve kullanımı projelerinizde verimliliği ve performansı arttırmanın en önemli adımlarından biridir.

ESP32 Pinout Giriş

ESP32'nin ESP8266 dan en büyük avantajı çok daha fazla GPIO pinlerine sahip olmasıdır. Bu sayede herhangi bir multiplexer veya genişletici (expander) kullanmanıza gerek kalmadan daha çok çevre birimi ile bu portlar üzerinden alışveriş yapabilirsiniz.

ESP32 Bare (Çıplak) Çip Pin Diyagramı

Görselde çıplak (bare) ESP32 çipinin biçimde pinleri ve bu pinlerin dizilimi gözükmektedir.

Görselde görüldüğü gibi ESP32 çipinde her bir kenarında 12 adet olacak şekilde 48 adet port bulunmaktadır.

ESP32 Pin Tanımları

Port İsmi Port Sırası Port Türü Fonksiyonu
VDDA 1 Güç (P) Analog Besleme Pini (2.3V ~ 3.6V )
LNA_IN 2 G/Ç (I/O) RF Giriş ve Çıkış
VDD3P3P 3 Güç (P) Analog Besleme Pini (2.3V ~ 3.6V)
VDD3P3P 4 Güç (P) Analog Besleme Pini (2.3V ~ 3.6V)
SENSOR_VP 5 Giriş (Input) GPIO36, ADC_PRE_AMP, ADC1_CH0, RTC_GPIO0. Not: ADC_PRE_AMP olarak kullanıldığında bu pin ile SENSOR_CAPP arasına 270 pF kapasitör bağlanır.
SENSOR_CAPP 6 Giriş (Input) GPIO37, ADC_PRE_AMP, ADC1_CH1, RTC_GPIO1. Not: ADC_PRE_AMP olarak kullanıldığında bu pin ile SENSOR_VP arasına 270 pF kapasitör bağlanır.
SENSOR_CAPN 7 Giriş (Input) GPIO38, ADC_PRE_AMP, ADC1_CH2, RTC_GPIO2. Not: ADC_PRE_AMP olarak kullanıldığında bu pin ile SENSOR_VN arasına 270 pF kapasitör bağlanır.
SENSOR_VN 8 Giriş (Input) GPIO39, ADC_PRE_AMP, ADC1_CH3, RTC_GPIO3. Not: ADC_PRE_AMP olarak kullanıldığında bu pin ile SENSOR_CAPN arasına 270 pF kapasitör bağlanır.
CHIP_PU 9 Giriş (Input) Chip Enable girişidir. (Active High)
High : ON, ESP32 düzgün şekilde çalışır 
Low : OFF, ESP32 minimum güçte çalışır
Not: Bu pin boşta (floating) bırakılmamalıdır.
VDET_1 10 Giriş (Input) GPIO34, ADC1_CH6, RTC_GPIO4
VDET_2 11 Giriş (Input) GPIO35, ADC1_CH7, RTC_GPIO5
32K_XP 12 G/Ç (I/O) GPIO32, 32K_XP (32.768 kHz harici kristal pozitif ucudur.),ADC1_CH4, TOUCH9, RTC_GPIO9
32K_XN 13 G/Ç (I/O) GPIO33, 32K_XN (32.768 kHz harici kristal negatif ucudur.),ADC1_CH5, TOUCH8, RTC_GPIO8.
GPIO25 14 G/Ç (I/O) GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
GPIO26 15 G/Ç (I/O) GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
GPIO27 16 G/Ç (I/O) GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
MTMS 17 G/Ç (I/O) GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2
MTDI 18 G/Ç (I/O) GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3
VDD3P3_RTC 19 Güç (P) RTC I/O pinleri için besleme girişi (1.8V ~3.3V)
MTCK 20 G/Ç (I/O) GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,HS2_DATA3, SD_DATA3, EMAC_RX_ER
MTDO 21 G/Ç (I/O) GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0, HS2_CMD, SD_CMD, EMAC_RXD3
GPIO2 22 G/Ç (I/O) GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,HS2_DATA0, SD_DATA0
GPIO0 23 G/Ç (I/O) GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,EMAC_TX_CLK
GPIO4 24 G/Ç (I/O) GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,HS2_DATA1, SD_DATA1, EMAC_TX_ER
GPIO16 25 G/Ç (I/O) GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT
VDD_SDIO 26 Güç (P) 1.8V ya da 3.3V besleme çıkışı
GPIO17 27 G/Ç (I/O) GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180
SD_DATA_2 28 G/Ç (I/O) GPIO9, SD_DATA2, SPIHD, HS1_DATA2, U1RXD
SD_DATA_3 29 G/Ç (I/O) GPIO10, SD_DATA3, SPIWP, HS1_DATA3, U1TXD
SD_CMD 30 G/Ç (I/O) GPIO11, SD_CMD, SPICS0, HS1_CMD, U1RTS
SD_CLK 31 G/Ç (I/O) GPIO6, SD_CLK, SPICLK, HS1_CLK, U1CTS
SD_DATA_0 32 G/Ç (I/O) GPIO7, SD_DATA0, SPIQ, HS1_DATA0, U2RTS
SD_DATA_1 33 G/Ç (I/O) GPIO8, SD_DATA1, SPID, HS1_DATA1, U2CTS
GPIO5 34 G/Ç (I/O) GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK
GPIO18 35 G/Ç (I/O) GPIO18, VSPICLK, HS1_DATA7
GPIO23 36 G/Ç (I/O) GPIO23, VSPID, HS1_STROBE
VDD3P3_CPU 37 Güç (P) CPU G/Ç (I/O) besleme giriş pini (1.8V ~ 3.3V)
GPIO19 38 G/Ç (I/O) GPIO19, VSPIQ, U0CTS, EMAC_TXD0
GPIO22 39 G/Ç (I/O) GPIO22, VSPIWP, U0RTS, EMAC_TXD1
U0RXD 40 G/Ç (I/O) GPIO3, U0RXD, CLK_OUT2
U0TXD 41 G/Ç (I/O) GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
GPIO21 42 G/Ç (I/O) GPIO21, VSPIHD, EMAC_TX_EN
VDDA 43 G/Ç (I/O) Analog besleme girişi (2.3V - 3.6V)
XTAL_N 44 Çıkış (O) Harici kristal çıkış pini
XTAL_P 45 Giriş (I) Harici kristal giriş pini
VDDA 46 Güç (P) PLL için dijital besleme (2.3V ~ 3.6V)
CAP2 47 Giriş (I) CAP1’e paralel olarak 3 nF kondansatör ve 20 kΩ direnç ile bağlanır.
CAP1 48 Giriş (I) Toprağa seri bağlı 10 nF kondansatör ile bağlanır.

ESP32 çipinin pinleri bu şekildedir. ESP32'de multiplexer'lar aracılığıyla bir pin farklı fonksiyonlar ile kullanılabilmektedir. Bu da esneklik sağlamaktadır.

ESP32 çipini direkt kullanacaklar için bu tablo oldukça kıymetlidir. Bundan sonraki kısımda ESP32'nin pinlerini daha iyi anlamak ve ESP32'yi hazır bir şekilde projelerine entegre etmek isteyenler için ESP32 30 pin geliştirme kartı (devkit v1) üzerinden devam edeceğiz.

Her ESP32 geliştirme kartı her pini kullanmamaktadır, ancak hangi geliştirme kartını kullanırsanız kullanın her pin tamamen aynı şekilde çalışır.

ESP32 30 Pin Geliştirme Kiti (Devkit V1)

ESP32 Pinout

esp-32s%20pinout_1.jpg

Referans aldığımız ESP32 30 pin geliştirme kartı pinleri bu şekildedir. Önceki başlıkta bahsettiğimiz çıplak ESP32 çipinin pinout'ı ile doğası gereği oldukça benzemektedir. Geliştirme kitinde ESP32 Çevre Birimleri'ni (Peripherals) ve her pini detalıyca inceleyelim.

GPIO Pinleri

GPIO (General Purpose Input/Output), mikrodenetleyici ve mikroişlemcilerde bulunan, yazılım aracılığıyla giriş veya çıkış olarak yapılandırılabilen genel amaçlı dijital pinlerdir.

ESP32 geliştirme kartı üzerinde, uygun register'lar programlanarak farklı işlevler atanabilen 25 adet GPIO pin'i bulunmaktadır. ESP32 işlevselliği çok yüksek bir kart olduğundan, aynı pinler istenildiği gibi farklı amaçlarda kullanılabilmektedir. Örneğin bu GPIO pinleri yalnızca dijital amaçlı olanlar, analog sinyalleri destekleyenler ve kapasitif dokunma algılayabilenler gibi çeşitli türlere ayrılır. Bazı analog ve kapasitif dokunma özellikli pinler gerektiğinde standart dijital GPIO olarak kullanılabilir. Dijital GPIO’ların büyük bir kısmı dahili pull-up veya pull-down dirençlerle yapılandırılabildiği gibi, istenirse yüksek empedans (high-Z) moduna da alınabilir. İşte bu çeşitliliğin arasında projenize uygun hangi GPIO pinlerinin kullanılabileceğine karar vermeniz için oluşturduğumuz GPIO pinlerinin tablosuna göz atabilirsiniz.

ESP32 GPIO Pin Haritası - Hangisi Kullanıma Uygun ?

ESP32 çok sayıda ve farklı işlevlere sahip pine sahiptir; ancak bunların hepsi her proje için uygun değildir. Aşağıdaki tablo, güvenle kullanılabilen pinleri ve dikkat gerektiren pinleri özetler.

GPIO Pin No Giriş Uygun mu ? Çıkış Uygun mu ? Notlar
0 Dikkat Dikkat Boot esnasında HIGH(1) olmalıdır. Boot esnasında PWM çıktısı üretir. Flash mode'a girmek için LOW(0) olmalıdır.
1 Hayır Hayır TX Pindir. Flash ve Debug işlemleri için kullanılır.
2 Hayır Hayır Board üzerindeki LED'e bağlıdır. Boot esnasında LOW(0) olmalıdır.
3 Hayır Hayır RX Pindir. Flash ve Debug işlemleri için kullanılır. Boot esnasında HIGH(1) olmalıdır.
4 Evet Evet Giriş ve Çıkış Kullanımına uygundur.
5 Dikkat Dikkat Boot esnasında PWM sinyali çıktısı verir. Strapping (Önyükleme) Pini'dir.
6 Hayır Hayır ESP32'nin dahili SPI Flash belleğine bağlıdır. Kullanılmaz
7 Hayır Hayır ESP32'nin dahili SPI Flash belleğine bağlıdır. Kullanılmaz
8 Hayır Hayır ESP32'nin dahili SPI Flash belleğine bağlıdır. Kullanılmaz
9 Hayır Hayır ESP32'nin dahili SPI Flash belleğine bağlıdır. Kullanılmaz
10 Hayır Hayır ESP32'nin dahili SPI Flash belleğine bağlıdır. Kullanılmaz
11 Hayır Hayır ESP32'nin dahili SPI Flash belleğine bağlıdır. Kullanılmaz
12 Dikkat Evet HIGH seviyesine çekilirse boot başarısız olur, strapping (önyükleme) pinidir.
13 Evet Evet Giriş ve Çıkış Kullanımına uygundur.
14 Evet Evet Giriş ve Çıkış Kullanımına uygundur. Boot esnasında PWM sinyal çıktısı üretir.
15 Dikkat Dikkat Boot esnasında HIGH(1) olmalıdır.strapping (önyükleme) pinidir.
16 Evet Evet
17 Evet Evet
18 Evet Evet
19 Evet Evet
21 Evet Evet
22 Evet Evet
23 Evet Evet
25 Evet Evet
26 Evet Evet
27 Evet Evet
32 Evet Evet
33 Evet Evet
34 Evet Hayır Sadece giriş (input) olarak kullanılabilen GPIO’dur, çıkış (output) olarak yapılandırılamaz.
35 Evet Hayır Sadece giriş (input) olarak kullanılabilen GPIO’dur, çıkış (output) olarak yapılandırılamaz.
36 Evet Hayır Sadece giriş (input) olarak kullanılabilen GPIO’dur, çıkış (output) olarak yapılandırılamaz.
39 Evet Hayır Sadece giriş (input) olarak kullanılabilen GPIO’dur, çıkış (output) olarak yapılandırılamaz.

ESP32’de GPIO 34–39 aralığındaki pinler sadece veri girişine (input) uygundur. Bu pinler:

  • Çıkış sinyali üretemez

  • Dahili pull-up / pull-down direnci içermez

  • Yalnızca harici sinyal, sensör veya buton okuma gibi giriş işlemleri için kullanılır

Bu yüzden bu pinler, ADC okumaları veya dijital girişler için idealdir; ancak LED, röle veya motor sürmek gibi çıkış gerektiren uygulamalarda kullanılamaz.

Not : Bütün GPIO pinleri kesme (interrupt) olarak yapılandırılabilmektedir.

RTC GPIO Pinleri

Bazı GPIO pinleri, ESP32’nin RTC (Real-Time Clock) düşük güç alt sistemine doğrudan bağlıdır ve bu pinler RTC GPIO olarak adlandırılır. Bu özel pinler, ESP32 deep sleep (derin uyku) modundayken bile aktif kalabilen donanım arasında yer alır.

ESP32 derin uykuya geçtiğinde, ana CPU ve çoğu çevresel birim kapatılır; ancak RTC power domain (RTC güç alanı) çalışmaya devam eder. RTC GPIO’lar da bu güç alanı üzerinden beslendiği için, sistem minimum enerji tüketirken dahi belirli pinleri izlemek mümkün olur.

Bu yapı sayesinde, Ultra Low Power (ULP) yardımcı işlemcisi çalışır durumdayken RTC GPIO’lar harici bir olay (buton, sensör çıkışı, seviye değişimi vb.) algıladığında ESP32’yi deep sleep modundan uyandırabilir. Yani ana işlemci kapalıyken bile, çok düşük güç tüketimiyle tetikleme yapılabilir.

RTC GPIO desteği ESP32 üzerinde donanımsal olarak mevcuttur ve bu pinler harici uyandırma (external wake-up source) olarak kullanılabilir. Özellikle pille çalışan sistemlerde, uzun bekleme süresi gerektiren projelerde ve enerji verimliliğinin kritik olduğu uygulamalarda büyük avantaj sağlar.

Özetle:

  • RTC GPIO’lar RTC güç domaini üzerinden beslenir

  • Deep sleep sırasında tamamen kapanmazlar

  • ULP co-processor ile birlikte çalışarak çok düşük güçle izleme yapabilirler

  • Harici sinyallerle ESP32’yi uyandırma kaynağı olarak kullanılabilirler

Bu özellik, ESP32’yi klasik mikrodenetleyicilerden ayıran en güçlü düşük güç yönetimi yeteneklerinden biridir. Bu pinler aşağıdaki gibidir.

  • RTC_GPIO0 (GPIO36)
  • RTC_GPIO3 (GPIO39)
  • RTC_GPIO4 (GPIO34)
  • RTC_GPIO5 (GPIO35)
  • RTC_GPIO6 (GPIO25)
  • RTC_GPIO7 (GPIO26)
  • RTC_GPIO8 (GPIO33)
  • RTC_GPIO9 (GPIO32)
  • RTC_GPIO10 (GPIO4)
  • RTC_GPIO12 (GPIO2)
  • RTC_GPIO13 (GPIO15)
  • RTC_GPIO14 (GPIO13)
  • RTC_GPIO15 (GPIO12)
  • RTC_GPIO16 (GPIO14)
  • RTC_GPIO17 (GPIO27)

Kapasitif Dokunma Pinleri (Touch Pins)

ESP32, kapasitif dokunma algılayabilen (capacitive touch-sensing) GPIO pinlerine sahiptir. Bu pinlere yakın bir kapasitif yük (örneğin insan parmağı) geldiğinde, pin çevresindeki elektriksel alan değişir ve buna bağlı olarak kapasitans değeri farklılaşır. ESP32 de bu değişimi ölçerek dokunma/temas durumunu algılar.

ESP32 içinde toplam 9 adet dahili kapasitif dokunma sensörü bulunur. Bu sensörler, insan derisi gibi elektriksel yük tutabilen nesnelerdeki değişimleri algılayabildiği için, bir parmakla pinlere dokunulduğunda oluşan etkiyi rahatça tespit eder.

Bu pinler, kolayca kapasitif pad (dokunmatik alan) tasarımlarına entegre edilebilir ve birçok projede mekanik butonların yerine kullanılabilir. Mekanik parça olmadığı için daha sessiz, daha uzun ömürlü ve tasarım açısından daha “temiz” çözümler sunar.

ESP32’deki dahili touch sensörlerinin bağlı olduğu GPIO pinleri şunlardır:

  • T0 → GPIO 4

  • T2 → GPIO 2
  • T3 → GPIO 15

  • T4 → GPIO 13

  • T5 → GPIO 12

  • T6 → GPIO 14

  • T7 → GPIO 27

  • T8 → GPIO 33

  • T9 → GPIO 32

ADC (Analog to Digital Converter) Pinleri

ESP32, analog sinyalleri dijital değerlere dönüştürmek için iki adet 12-bit SAR ADC (Successive Approximation Register) içerir. ESP8266 yalnızca tek bir 10-bit ADC kanalına sahipti. ESP32 toplamda 15 adet 12-bit ADC giriş kanalı destekleyerek hem daha fazla pin üzerinden ölçüm yapılabilmesini hem de daha yüksek çözünürlük elde edilmesini sağlar.

12-bit ADC Nedir ?

ESP32’nin ADC’si 12-bit çözünürlüklüdür, yani:

  • Ölçüm aralığı: 0 – 3.3V

  • Dijital çıktı aralığı: 0 – 4095

  • Toplam seviye sayısı: 4096 (2¹²)

Bu da yaklaşık olarak:

  • 3.3V / 4096 ≈ 0.8 mV çözünürlük anlamına gelir.

Yani ADC, girişteki voltajdaki yaklaşık 0.8 mV’luk değişimleri ayırt edebilir. Bu özellik; sensör okumaları, potansiyometreler, analog çıkış veren modüller ve batarya gerilimi ölçümleri için oldukça yeterlidir.

Ayrıca ADC çözünürlüğü ve kanal aralıkları yazılımsal olarak ayarlanabilir.

ESP32'de ADC pinleri iki gruba ayrılmıştır:

ADC1’e bağlı pinler:

  • ADC1_CH0 → GPIO 36

  • ADC1_CH3 → GPIO 39
  • ADC1_CH4 → GPIO 32

  • ADC1_CH5 → GPIO 33

  • ADC1_CH6 → GPIO 34

  • ADC1_CH7 → GPIO 35

Bu pinler analog ölçüm için en sık tercih edilen GPIO’lardır.

ADC2’ye bağlı pinler:

  • ADC2_CH0 → GPIO 4

  • ADC2_CH2 → GPIO 2
  • ADC2_CH3 → GPIO 15

  • ADC2_CH4 → GPIO 13

  • ADC2_CH5 → GPIO 12

  • ADC2_CH6 → GPIO 14

  • ADC2_CH7 → GPIO 27

  • ADC2_CH8 → GPIO 25

  • ADC2_CH9 → GPIO 26

Önemli Not : ESP32’de ADC2 donanımı, Wi-Fi modülü ile ortak kaynak kullanır. Bu nedenle Wi-Fi açıkken ADC2 üzerinden analog okuma yapmak mümkün değildir. Wi-Fi kullanılan projelerde ADC1 kanalı tercih edilmelidir. Bu detay, ESP32’de analog ölçüm yaparken yapılan en yaygın hatalardan biridir.

DAC (Digital to Analog Converter) Pinleri

ESP32, dijital verileri doğrudan analog gerilim seviyelerine dönüştürebilmek için iki adet 8-bit DAC (Digital-to-Analog Converter) kanalına sahiptir. Bu DAC’ler PWM benzeri yöntemlerden farklı olarak gerçek analog voltaj çıkışı üretir ve dijital sinyallerin analog cihazları sürmesinde kullanılabilir. ESP32 üzerindeki DAC kanalları DAC1 (GPIO25) ve DAC2 (GPIO26) pinlerine bağlıdır.

ESP32 DAC’leri 8-bit çözünürlüğe sahiptir. Bu, DAC girişine uygulanan sayısal değerin:

  • 0 – 255 aralığında

  • 0 – 3.3V arasında

analog bir gerilime dönüştürüldüğü anlamına gelir. Teorik olarak her adım yaklaşık 13 mV’lik bir gerilim değişimine karşılık gelir.

Bu çözünürlük; referans voltaj üretimi, basit seviye kontrolü veya analog cihazların sürülmesi gibi uygulamalar için yeterlidir.

ESP32’nin dahili DAC’leri, pratikte bir dijital potansiyometre gibi kullanılabilir. Referans gerilimi üretme, analog kontrollü devrelerin sürülmesi veya basit seviye ayarlamaları gibi senaryolarda doğrudan kullanılmaları mümkündür. Ancak 8-bit çözünürlük, özellikle yüksek dinamik aralık ve düşük gürültü gerektiren uygulamalar için sınırlayıcıdır. Bu nedenle ses (audio) uygulamaları gibi hassas analog çıkış gerektiren sistemlerde, daha yüksek çözünürlüğe sahip 12, 16 veya 24 bit harici DAC’ler isteğe göre tercih edilebilir.

PWM Pinleri

ESP32 içerisinde PWM (Pulse Width Modulation) sinyalleri üretmek için gelişmiş LED PWM kontrolcüsü bulunmaktadır. ESP32 üzerindeki çıkış (output) olarak kullanılabilen tüm GPIO pinleri (yani GPIO34-35-36-39 pinleri hariç) PWM sinyal üretimi için uygundur. Bu pinler PWM Kontrolcüsü tarafından kontrol edilmektedir.

PWM kontrolcüsünün donanım yapısı; PWM zamanlayıcıları (timers), PWM operatörleri (operators) ve özel bir capture (yakalama) alt modülünden oluşur. Her bir zamanlayıcı, senkron veya bağımsız şekilde zamanlama üretebilirken, her PWM operatörü bir PWM kanalı için dalga formunu oluşturur. Capture alt modülü ise harici sinyallerden gelen olayları yüksek zaman hassasiyetiyle yakalayarak ölçüm yapılmasına olanak tanır. Bu PWM çıkışları; dijital motor sürme, LED parlaklık kontrolü ve benzeri birçok uygulamada yaygın olarak kullanılır.

Bir PWM sinyali ayarlamak için, kod içerisinde aşağıdaki parametrelerin tanımlanması gerekir:

  • Sinyalin frekansı

  • Duty cycle (görev döngüsü)

  • PWM kanalı

  • Sinyalin çıkış alınacağı GPIO pini

I2C Pinleri

ESP32, donanım üzerinde iki adet I2C veri yolu (bus) arabirimine sahiptir; ancak sabitlenmiş (dedicated) I2C pinleri yoktur. Bunun yerine ESP32, esnek pin yönlendirme (flexible pin assignment) mimarisi sunar. Bu sayede herhangi bir GPIO pini, yazılım üzerinden I2C SDA (veri hattı) veya I2C SCL (saat hattı) olarak yapılandırılabilir.

Bununla birlikte, mevcut Arduino kodları, kütüphaneler ve örneklerle uyumluluğu korumak amacıyla GPIO21 (SDA) ve GPIO22 (SCL) pinleri, ESP32 için yaygın olarak varsayılan I2C pinleri olarak kullanılmaktadır. Bu yaklaşım, ESP32’ye geçen kullanıcıların mevcut I2C tabanlı projelerini minimum değişiklikle çalıştırabilmesini sağlar.

ESP32, iki ayrı I2C kanalını destekler ve her iki kanal için de SDA ve SCL pinleri yazılım üzerinden serbestçe atanabilir. Arduino IDE kullanılırken varsayılan I2C pinleri şu şekildedir:

  • GPIO 21 → SDA

  • GPIO 22 → SCL

SPI Pinleri

ESP32, hem master hem de slave modlarında çalışabilen üç adet SPI arabirimine sahiptir: SPI, HSPI ve VSPI. Bu SPI birimleri, genel amaçlı SPI haberleşmesinde kullanılan temel özellikleri donanımsal olarak destekler. Bunlar arasında SPI veri aktarım formatının 4 farklı zamanlama modu, 80 MHz’e kadar saat frekansı (ve bu frekanstan türetilen bölünmüş saatler) ve 64 byte’a kadar FIFO tampon belleği bulunur.

ESP32 mimarisinde bu üç SPI biriminden yalnızca HSPI ve VSPI, harici SPI cihazlarla haberleşme için kullanılabilir durumdadır. Üçüncü SPI birimi ise ESP32 üzerindeki dahili SPI Flash bellek tarafından kullanılır ve kullanıcı uygulamalarına açık değildir. Pratikte, standart kütüphaneler ve örnekler çoğunlukla VSPI pinlerini varsayılan olarak kullanır.

HSPI ve VSPI arasında işlevsel bir fark yoktur. HSPI’nin “Hardware SPI”, VSPI’nin ise “Virtual” veya “Software SPI” olduğu yönünde yaygın bir yanlış anlama bulunur; ancak gerçekte bu iki SPI birimi donanımsal olarak birebir aynıdır. Aralarındaki temel fark yalnızca varsayılan pin eşleşmeleridir; çalışma prensibi, performans ve özellikler açısından herhangi bir ayrım söz konusu değildir.

I2C’de olduğu gibi, ESP32’de SPI protokolü de esnek pin yönlendirme sayesinde istenilen GPIO pinleri üzerinden çalıştırılabilir. Donanımsal SPI birimleri kullanılmadan, SPI protokolü yazılımsal olarak herhangi bir GPIO üzerinde uygulanabilir. Bu amaçla, SPI pinleri aşağıdaki şekilde yazılım üzerinden atanabilir:

bus.begin(CLK_PIN, MISO_PIN, MOSI_PIN, SS_PIN);

Bu esneklik, özel kart tasarımlarında veya varsayılan pinlerin uygun olmadığı durumlarda ESP32’nin SPI haberleşmesini sorunsuz şekilde kullanabilmeyi mümkün kılar.

Bu tabloda da SPI pinlerinin eşleşmelerini görebilirsiniz:

SPI MOSI MISO CLK CS
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

UART Pinleri

ESP32 geliştirme kartı, UART0, UART1 ve UART2 olmak üzere üç adet UART arabirimine sahiptir. Bu UART birimleri; asenkron haberleşme (RS232 ve RS485) ile IrDA protokolünü destekler ve 5 Mbps’e kadar veri iletim hızlarında çalışabilir.

UART0 pinleri, kart üzerindeki USB–Seri dönüştürücüye bağlıdır ve ağırlıklı olarak program yükleme (flashlama) ve debug işlemleri için kullanılır. Bu nedenle UART0 pinlerinin, uygulama tarafında harici UART cihazlarıyla haberleşme amacıyla kullanılması önerilmez.

UART1 pinleri ise ESP32 üzerindeki dahili SPI Flash bellek ile ilişkilidir ve bu nedenle direkt kullanılamamaktadır.

UART2, harici UART tabanlı cihazlarla haberleşme için en güvenli ve tercih edilen seçenektir. GPS modülleri, parmak izi okuyucular, mesafe sensörleri ve benzeri UART ile çalışan çevre birimleri, doğrudan UART2 üzerinden ESP32’ye bağlanabilir.

Bunlara ek olarak ESP32’nin UART birimleri, CTS ve RTS sinyallerinin donanımsal yönetimini destekler. Ayrıca yazılımsal akış kontrolü olan XON / XOFF mekanizması da UART sürücüsü tarafından sağlanmaktadır. Bu özellikler, yüksek hızlarda veya veri kaybının kritik olduğu haberleşme senaryolarında daha kararlı bir iletişim kurulmasını sağlamaktadır.

UART Pinleri aşağıdaki gibidir:

UART Port TX RX
UART0 GPIO 1 GPIO 3
UART1 GPIO 10 GPIO 9
UART2 GPIO 17 GPIO 16

Strapping (Önyükleme) Pinleri

Strapping (önyükleme) pinleri, ESP32’nin reset anında veya ilk güç verildiği anda okuduğu özel GPIO pinleridir. Bu pinlerin o andaki lojik seviyelerine (HIGH / LOW) bakılarak, ESP32’nin hangi modda başlayacağı belirlenir. Yani ESP32, henüz kullanıcı programı çalışmaya başlamadan önce bu pinleri kontrol eder ve boot davranışını buna göre seçer.

Bu pinler, ESP32’yi BOOT moduna (flash bellekte depolanan programı çalıştırmak için) veya FLASH / download moduna (programı flash belleğe yüklemek için) almak amacıyla kullanılır. Güç verildiği anda strapping pinlerin durumuna bağlı olarak ESP32 ya normal şekilde çalışır ya da programlama moduna girer.

Dahili USB/Seri dönüştürücüye sahip çoğu geliştirme kartında, bu pinlerin durumuyla kullanıcıların ilgilenmesine gerek yoktur. Kart üzerindeki ön ayarlı devreler, flashlama veya boot modu için strapping pinleri otomatik olarak doğru seviyelere getirir.

Ancak bu pinlere harici çevre birimleri bağlandığında durum değişir. Eğer strapping pinlere bağlı bir sensör, buton veya modül, boot anında pini yanlış seviyeye zorluyorsa; ESP32:

  • Yeni kod yüklemeyebilir

  • Flashlama moduna girmeyebilir

  • Yanlış modda kalabilir

  • Hiç boot edemeyebilir

Bu tür sorunların temel nedeni, harici devrelerin ESP32’nin doğru moda girmesini engellemesidir. Bu durumda ESP32 Boot Mode Selection dokümanına bakılarak pin seviyeleri kontrol edilmelidir.

Strapping pinler, reset serbest bırakıldıktan sonra normal GPIO gibi çalışmaya devam eder; ancak buna rağmen tasarım aşamasında dikkatli kullanılmaları gerekir.

ESP32’de bulunan strapping pinler aşağıdaki gibidir:

  • GPIO0

  • GPIO2

  • GPIO5

  • GPIO12

Bu pinlerin bazıları boot sırasında HIGH, bazıları ise LOW seviyesinde olmalıdır. (yazımızın başlangıcında tabloda bulabilirsiniz.)Örneğin GPIO0 LOW seviyedeyken ESP32 download (flashlama) moduna girer; HIGH seviyedeyken ise normal şekilde çalışır. Bu nedenle GPIO0’a bağlı bir buton veya harici devre, boot anında yanlış bir seviye oluşturursa ESP32 açılmaz.

Özellikle GPIO12 (MTDI) kritik bir strapping pindir. Boot anında yanlış seviyede kalması, ESP32’nin dahili besleme yapılandırmasını hatalı seçmesine neden olabilir. Bu durum kararsız çalışmaya ya da ESP32’nin hiç boot edememesine yol açabilir.

Strapping pinlerle ilgili en önemli tasarım kuralı şudur: Bu pinlere bağlanan harici devreler, boot anında pin seviyesini zorlamamalıdır. Eğer bu pinler kullanılacaksa:

  • Pull-up / pull-down dirençleri doğru seçilmeli

  • Harici modüller boot anında yüksek empedanslı olmalı

  • Mümkünse strapping pinler kritik uygulamalarda kullanılmamalıdır

Özetle strapping pinler, ESP32’nin reset anındaki kimliğini belirleyen pinlerdir. Yanlış kullanıldıklarında yazılımsal değil, tamamen donanımsal problemler ortaya çıkar. Bu nedenle ESP32 tabanlı bir tasarım yapılırken strapping pinler mutlaka bilinmeli ve bilinçli şekilde ele alınmalıdır.

Enable (EN) Pinleri

EN (Enable) pini, ESP32 üzerindeki 3.3V regülatörünün enable (etkinleştirme) pinidir ve varsayılan olarak HIGH seviyesine çekilmiştir. Bu pin HIGH durumdayken ESP32 aktif durumdadır ve normal şekilde çalışır. EN pini LOW seviyesine çekildiğinde ise 3.3V regülatörü devre dışı kalır ve ESP32 kapanır.

Bu davranış sayesinde EN pini, pratikte bir reset (yeniden başlatma) pini gibi kullanılabilir. EN pininin kısa süreli olarak GND’ye çekilmesi, ESP32’nin kapanıp yeniden başlatılmasına neden olur. Bu nedenle EN pini genellikle bir butona bağlanarak manuel reset işlevi sağlanır.

Çoğu ESP32 geliştirme kartında EN pini, kart üzerinde bulunan bir pushbutton (reset butonu) ile zaten bağlantılıdır. Bu butona basıldığında EN pini LOW seviyesine çekilir ve ESP32 resetlenir. Buton bırakıldığında pin tekrar HIGH seviyesine çıkar ve ESP32 yeniden çalışmaya başlar.

Özetle EN pini, ESP32’nin çalışıp çalışmamasını kontrol eden donanımsal bir enable pinidir ve reset işlemleri bu pin üzerinden gerçekleştirilir.

Güç (Power) Pinleri

ESP32 üzerinde iki adet güç pini bulunur: VIN pini ve 3V3 pini. VIN pini, regüle edilmiş bir 5V güç kaynağı mevcutsa ESP32’yi ve bağlı çevre birimlerini doğrudan beslemek için kullanılabilir. 3V3 pini ise kart üzerindeki voltaj regülatörünün çıkışıdır ve bu pin üzerinden 600 mA’e kadar akım alınabilir. GND pini ise toprak (şase) bağlantısıdır.

Sonuç Olarak

Bu rehberimizin ESP32 Pinlerini anlamak ve doğru şekilde kullanmak isteyenler için faydalı bir kaynak olmasını dileriz. Konuya dair ek bilgileriniz varsa bize ulaşabilir veya yorumlar kısmında paylaşabilirsiniz.

Faydalı Linkler

ESP32, Arduino, Raspberry Pi, FPGA ve daha bir çok konu ile ilgili kaynak kodları paylaşacağımız Fevaris Elektronik Github adresimizi takip ederek, yeni eklenecek projelerin kaynak kodlarına hızlıca ulaşabilirsiniz. Yeni yazılar ve rehberlerimiz için fevaris.com adresimizi ziyaret etmeyi unutmayın.
IdeaSoft® | E-Ticaret paketleri ile hazırlanmıştır.