Tidak semua pin ESP32 bebas dipakai. Pin GPIO6–11 tersambung ke flash dan tidak boleh dipakai, GPIO34–39 hanya bisa input, beberapa pin (GPIO0, 2, 5, 12, 15) memengaruhi proses boot, dan ADC2 tidak bisa dipakai saat WiFi aktif. Untuk output seperti relay, pin yang paling aman antara lain GPIO4, 13, 16–19, 21–23, 25–27, 32, dan 33.
Pin yang tidak boleh dipakai: GPIO6–11
Pada modul ESP32-WROOM, GPIO6 sampai GPIO11 terhubung ke chip flash di dalam modul. Memakainya akan membuat ESP32 crash atau tidak bisa boot. Anggap pin ini tidak ada.
Strapping pin: hati-hati saat boot
Saat dinyalakan atau di-reset, ESP32 membaca kondisi beberapa pin untuk menentukan cara boot:
| Pin | Pengaruh saat boot | Catatan |
|---|---|---|
| GPIO0 | LOW = masuk mode upload | Biasanya untuk tombol BOOT |
| GPIO2 | Harus LOW/mengambang saat masuk mode upload | Sering tersambung LED di DevKit |
| GPIO12 (MTDI) | HIGH = tegangan flash 1,8 V | Ditarik HIGH saat boot bisa membuat modul 3,3V gagal boot |
| GPIO15 (MTDO) | Mengatur pesan log saat boot | Relatif aman, tapi hindari beban berat |
| GPIO5 | Timing interface SDIO | Umumnya aman untuk output |
Masalah yang sering terjadi: relay, sensor, atau pull-up eksternal di GPIO12 membuat ESP32 tidak mau boot, atau relay di GPIO0/GPIO2 ikut berkedip saat boot.
Pin input saja: GPIO34–39
GPIO34, 35, 36 (VP), dan 39 (VN) hanya bisa dipakai sebagai input dan tidak punya pull-up atau pull-down internal. Cocok untuk membaca sensor analog atau tombol dengan resistor eksternal.
ADC2 dan WiFi
ESP32 punya dua ADC. ADC2 (GPIO0, 2, 4, 12–15, 25–27) tidak bisa dipakai membaca analog saat WiFi aktif. Untuk proyek IoT, gunakan pin ADC1 (GPIO32–39) untuk sensor analog.
Pin yang juga punya fungsi khusus
- GPIO1 (TX0) dan GPIO3 (RX0) dipakai untuk upload dan Serial Monitor. Hindari kecuali benar-benar perlu.
- GPIO21 (SDA) dan GPIO22 (SCL) adalah pin I2C default di Arduino-ESP32, walaupun I2C bisa dipindah ke pin lain.
- Beberapa pin mengeluarkan sinyal PWM atau berubah kondisi sesaat saat boot. Untuk beban seperti relay, pilih pin yang diam saat boot dan tambahkan pull-down di sisi driver.
Rekomendasi praktis
| Kebutuhan | Pin yang disarankan |
|---|---|
| Output relay / LED | GPIO4, 13, 16–19, 21–23, 25–27, 32, 33 |
| Input analog (dengan WiFi) | GPIO32–39 |
| Tombol (pull-up internal) | GPIO4, 13, 16–19, 25–27, 32, 33 |
| I2C | GPIO21 (SDA), GPIO22 (SCL) |
Cek ulang dengan pinout board yang kamu pakai, karena beberapa DevKit memakai pin tertentu untuk LED atau fungsi lain.
Kesimpulan
Hindari pin flash, hati-hati dengan strapping pin, pakai GPIO34–39 hanya untuk input, dan gunakan ADC1 saat WiFi aktif. Dengan pemilihan pin yang benar, banyak masalah "ESP32 tidak mau boot" atau "relay berkedip sendiri" bisa dicegah. Pemilihan pin ini dibahas tuntas di Bootcamp SALTECH.
Pertanyaan yang sering muncul
Kenapa relay saya menyala sebentar saat ESP32 dinyalakan?
Kemungkinan relay tersambung ke pin yang berubah kondisi saat boot. Pindahkan ke pin yang lebih aman dan tambahkan resistor pull-down di sisi driver.
Apakah semua board ESP32 punya pinout yang sama?
Tidak. Pinout di artikel ini untuk ESP32 klasik (WROOM-32). ESP32-S2, S3, dan C3 punya pinout dan aturan strapping berbeda.
