ESP32-WROOM-32D, 38 pinli, 3,3 V ile çalışan bir Wi-Fi ve Bluetooth modülüdür; GPIO6-11 flash belleğe bağlı olduğu için kullanılmaz, GPIO34-39 yalnızca giriştir, GPIO0, 2, 5, 12 ve 15 açılışı etkiler. Wi-Fi açıkken ADC2 pinleri analog okuma yapamaz, bu yüzden analog ölçüm için ADC1 pinleri (32-39) seçilir.
ESP32-WROOM-32D, Wi-Fi ve Bluetooth'lu projelerde en sık karşılaşılan modüllerden biridir; ama 38 pinin hepsi aynı işi görmez. Bu yazıda ESP32-WROOM-32D pin diyagramını, hangi pinlerin güvenle kullanılabileceğini, açılışı etkileyen strapping pinlerini, ADC2 ile Wi-Fi çakışmasını ve besleme ihtiyacını anlatıyoruz. ESP32'ye yeni başlayan hobiciler ve kendi kartını tasarlayan üreticiler için bir başvuru rehberidir.
ESP32-WROOM-32D nedir?
ESP32-WROOM-32D, Espressif'in ESP32-D0WD çipini, 4 MB SPI flash belleği, 40 MHz kristali ve PCB anteni tek bir metal kapaklı kartta birleştiren 38 pinli bir Wi-Fi ve Bluetooth modülüdür. Çift çekirdekli Xtensa LX6 işlemci 240 MHz'e kadar çalışır; modül 18 × 25,5 × 3,1 mm boyutundadır.
Modülü tek başına (lehimleyerek) ya da üzerinde USB-seri dönüştürücü, regülatör ve butonlar bulunan bir ESP32-WROOM-32D geliştirme kartı olarak kullanabilirsiniz. ESP32 ile ilk adımlar için ESP32 başlangıç rehberi yazımıza da göz atabilirsiniz.
ESP32-WROOM-32D pin diyagramı nasıl okunur?
Pin diyagramı modülü üstten, anten yukarıda olacak şekilde gösterir: 1-14 numaralı pinler sol kenarda yukarıdan aşağı, 15-24 alt kenarda soldan sağa, 25-38 sağ kenarda aşağıdan yukarı sıralanır. 1, 15 ve 38 numaralı pinler GND, 2 numaralı pin 3V3, 3 numaralı pin EN'dir.
Pin adındaki "IO" ön eki GPIO numarasını verir; IO25, GPIO25 demektir. Aynı pin birden fazla işleve sahip olabilir: IO25 hem dijital pin, hem DAC1, hem de ADC2 kanalıdır. Geliştirme kartlarında pin sırası kart üreticisine göre değişir, bu yüzden kartın üzerindeki baskıyı esas alın.
| Pin grubu | GPIO numaraları | Not |
|---|---|---|
| Besleme | 3V3, GND (1, 15, 38) | 3,0-3,6 V |
| Yalnız giriş | 34, 35, 36, 39 | Çıkış yok, dahili pull-up/pull-down yok |
| Strapping | 0, 2, 5, 12, 15 | Açılışta seviyesi önemli |
| Flash'a bağlı | 6, 7, 8, 9, 10, 11 | Kullanmayın |
| UART0 (USB-seri) | 1 (TX), 3 (RX) | Program yükleme ve seri monitör |
| Serbest GPIO | 4, 13, 14, 16-19, 21-23, 25-27, 32, 33 | Genel kullanım |
Hangi pinler güvenle kullanılabilir?
Güvenle kullanabileceğiniz pinler GPIO4, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32 ve 33'tür. Bunlar açılışı etkilemez ve hem giriş hem çıkış olarak çalışır. Arduino çekirdeğinde varsayılan I2C pinleri GPIO21 (SDA) ve GPIO22 (SCL), VSPI pinleri ise GPIO18 (SCK), 19 (MISO), 23 (MOSI) ve 5 (SS)'tir. I2C hattının nasıl çalıştığını I2C nedir yazımızda anlattık.
GPIO34, 35, 36 ve 39 yalnızca giriştir; bunlara LED ya da röle bağlayamazsınız. Dahili pull-up dirençleri de olmadığından buton bağlarken harici direnç gerekir. GPIO6-11 modülün içindeki flash belleğe bağlıdır; Espressif veri sayfası bu pinlerin başka amaçla kullanılmamasını söyler. Bu pinlere bir şey bağlamak modülün çökmesine yol açar.
Tüm GPIO'lar 3,3 V mantıkla çalışır. 5 V çıkışlı bir sensörü doğrudan bağlamayın; seviye dönüştürücü ya da gerilim bölücü kullanın. Bir pinden en fazla birkaç on miliamper çekin; röle, motor ve yüksek akımlı LED'leri transistör ya da sürücü üzerinden sürün.
Strapping pinleri neden önemlidir?
Strapping pinleri, ESP32'nin reset anında okuduğu ve açılış biçimini belirleyen pinlerdir; bu anda yanlış seviyede tutulurlarsa modül açılmaz ya da programlama moduna giremez. ESP32-WROOM-32D'de beş strapping pini vardır: GPIO0, GPIO2, GPIO5, GPIO12 (MTDI) ve GPIO15 (MTDO).
| Pin | Dahili varsayılan | Etkisi | Pratik kural |
|---|---|---|---|
| GPIO0 | Pull-up (1) | Düşükse program yükleme modu | BOOT butonu; açılışta düşük çekmeyin |
| GPIO2 | Pull-down (0) | Program yükleme için düşük olmalı | Açılışta boşta ya da düşük bırakın |
| GPIO5 | Pull-up (1) | SDIO zamanlaması | Açılışta düşük çekmeyin |
| GPIO12 | Pull-down (0) | Flash besleme gerilimini seçer | Açılışta mutlaka düşük |
| GPIO15 | Pull-up (1) | Düşükse açılış mesajları susar | Açılışta düşük çekmeyin |
En sık yapılan hata GPIO12'dir. Bu pin açılışta yüksek okunursa çip flash beslemesini 1,8 V'a ayarlar; modüldeki flash 3,3 V olduğu için ESP32 açılmaz. GPIO12'ye açılışta yüksek veren bir sensör ya da pull-up direnci bağlamayın.
ADC2 pinleri Wi-Fi ile neden çalışmaz?
ADC2 birimi Wi-Fi sürücüsü tarafından da kullanıldığından, Wi-Fi açıkken ADC2 kanallarından analog okuma yapılamaz. Espressif'in ESP-IDF belgeleri bunu açıkça belirtir; Arduino'da analogRead bu pinlerde hata ya da anlamsız değer döndürür.
ADC2 pinleri GPIO0, 2, 4, 12, 13, 14, 15, 25, 26 ve 27'dir. Wi-Fi kullanan bir projede potansiyometre, LDR ya da analog sensörü ADC1 pinlerine bağlayın: GPIO32, 33, 34, 35, 36 ve 39. Analog girişe 3,3 V'tan yüksek gerilim vermeyin; ölçüm aralığının uçlarına yakın bölgede doğrusallığın bozulduğunu da hesaba katın.
Besleme için ne kadar akım gerekir?
Espressif, ESP32-WROOM-32D için en az 500 mA verebilen 3,0-3,6 V aralığında bir besleme önerir. Ortalama tüketim düşük olsa da Wi-Fi yayını sırasında kısa akım tepeleri oluşur; zayıf besleme bu anda gerilimi düşürür ve modül kendini resetler.
Modülü kendiniz besliyorsanız 500 mA ya da üzeri bir 3,3 V regülatör kullanın ve 3V3 pininin yakınına 10 µF ile 100 nF kondansatör koyun. Geliştirme kartında USB'den besleme yapıyorsanız kaliteli ve kısa bir kablo seçin. Seri monitörde "Brownout detector was triggered" mesajı görüyorsanız ilk bakacağınız yer beslemedir.
ESP32-WROOM-32, 32D, 32E ve 32U arasındaki fark nedir?
Bu modüller aynı pin dizilişini ve boyut ailesini paylaşır; farkları içlerindeki çip sürümü ve anten tipidir. "U" harfi harici anten konnektörü, "E" harfi ise yeni çip revizyonu (v3) anlamına gelir.
| Modül | Çip | Anten | Not |
|---|---|---|---|
| ESP32-WROOM-32 | ESP32-D0WDQ6 | PCB anten | İlk sürüm, eski tasarımlarda |
| ESP32-WROOM-32D | ESP32-D0WD | PCB anten | Veri sayfasında "yeni tasarımlar için önerilmez" (NRND) |
| ESP32-WROOM-32U | ESP32-D0WD | Harici anten konnektörü | 32D'nin konnektörlü hâli, anten takılmalı |
| ESP32-WROOM-32E | ESP32-D0WD-V3 | PCB anten | v3 revizyonu; GPIO6-11 dışarı verilmez |
Kodlar her dört modülde de aynı şekilde çalışır. Metal kutu içinde ya da uzak mesafede çalışacaksanız ESP32-WROOM-32U modülü ve harici anten kullanın; yeni bir kart tasarlıyorsanız ESP32-WROOM-32E modülü daha güncel seçenektir. ESP32'nin ESP8266'dan farklarını ESP32 ve ESP8266 farkı yazımızda karşılaştırdık.
Modülü ilk kez nasıl programlarsınız?
Geliştirme kartında programlama USB üzerinden otomatik yapılır; çıplak modülde ise bir USB-seri dönüştürücü ve iki buton gerekir. Çıplak modül için adımlar şunlardır:
- ESP32-WROOM-32D modülünü bir adaptör kartına ya da kendi PCB'nize lehimleyin; 3V3 ve GND'yi bağlayın.
- EN pinini 10 kΩ ile 3V3'e çekin ve EN ile GND arasına 1 µF kondansatör koyun.
- GPIO0 ile GND arasına bir buton (BOOT), EN ile GND arasına bir buton (RESET) bağlayın.
- USB-seri dönüştürücünün TX ucunu RXD0'a (GPIO3), RX ucunu TXD0'a (GPIO1) bağlayın; GND'ler ortak olsun.
- Arduino IDE'de ESP32 kart paketini kurup "ESP32 Dev Module" seçin.
- BOOT'a basılı tutarken RESET'e basıp bırakın, sonra BOOT'u bırakın ve yüklemeyi başlatın.
- Yükleme bitince RESET'e basarak programı çalıştırın.
Breadboard'a sığmayan 38 pinli kartlar için ESP32 38 pin genişletme kartı pinleri vidalı ya da erkek başlıklı olarak dışarı verir.
Sık sorulan sorular
ESP32-WROOM-32D 5 V ile çalışır mı?
Hayır, modül 3,0-3,6 V ile beslenir ve GPIO'ları 3,3 V mantıktadır. Geliştirme kartlarında 5V ya da VIN pini bulunur, ancak bu gerilim kart üzerindeki regülatörle 3,3 V'a düşürülür. Modülün 3V3 pinine 5 V vermek ya da GPIO'lara 5 V sinyal uygulamak çipe zarar verebilir.
ESP32 neden açılmıyor ya da sürekli resetleniyor?
En sık iki neden yetersiz besleme ve strapping pinleridir. Wi-Fi açıldığında gerilim düşüyorsa daha güçlü bir kaynak ve kondansatör ekleyin. GPIO12'nin açılışta yüksek, GPIO0'ın düşük okunmadığını kontrol edin. Seri monitörde 115200 baud ile açılış mesajlarını okumak sorunu çoğu zaman gösterir.
Geliştirme kartındaki BOOT butonu hangi pine bağlıdır?
BOOT butonu GPIO0'a bağlıdır ve basıldığında pini GND'ye çeker. Reset sırasında GPIO0 düşükse ESP32 program yükleme moduna girer. Çoğu kartta USB-seri çipi bunu otomatik yaptığı için butona basmanız gerekmez; yükleme "Connecting..." satırında takılıyorsa butonu basılı tutun.
WROOM-32D ile WROOM-32E kodları birbirine uyumlu mu?
Evet, Arduino ve ESP-IDF ile yazılan kodlar iki modülde de aynı şekilde çalışır ve pin numaraları değişmez. Fark donanım tarafındadır: 32E yeni v3 çip revizyonunu kullanır ve flash'a bağlı GPIO6-11 pinlerini dışarı vermez. Bu pinleri zaten kullanmamanız gerektiği için pratikte fark hissedilmez.
Hangi pinler PWM verebilir?
Çıkış olarak kullanılabilen tüm GPIO'lar PWM verebilir; ESP32'de PWM, LEDC birimiyle istenen pine yönlendirilir. Yalnız giriş olan GPIO34-39 ve flash pinleri GPIO6-11 bu listenin dışındadır. Servo, LED parlaklığı ve fan hızı için GPIO4, 13, 14, 25, 26, 27, 32 ve 33 iyi seçeneklerdir.
Özet
- ESP32-WROOM-32D, ESP32-D0WD çipli, 4 MB flash'lı, PCB antenli 38 pinli bir modüldür ve 3,3 V ile çalışır.
- GPIO6-11 flash'a bağlıdır, kullanmayın; GPIO34-39 yalnızca giriştir ve dahili pull-up içermez.
- GPIO0, 2, 5, 12 ve 15 açılışı etkiler; özellikle GPIO12 açılışta düşük olmalıdır.
- Wi-Fi açıkken ADC2 çalışmaz; analog ölçüm için ADC1 pinlerini (32-39) seçin.
- En az 500 mA verebilen 3,3 V besleme ve modüle yakın kondansatörler reset sorunlarını önler.
