Overview

The ESP32-WROOM-32 (and variants ESP32-WROOM-32D / 32E) is a flagship Wi-Fi + Bluetooth + Bluetooth LE microcontroller module developed by Espressif Systems. At its core is the ESP32-D0WDQ6 dual-core 32-bit Tensilica Xtensa LX6 microprocessor operating up to 240 MHz.

Targeted at IoT edge devices, robotics, smart home automation (ESPHome, Home Assistant), audio streaming, and wearable electronics, it integrates 4 MB SPI flash memory, 520 KB SRAM, cryptographic hardware accelerators, and a rich set of peripherals including capacitive touch, ADC, DAC, I2S, SPI, I2C, UART, and CAN bus.

Quick reference

Operating voltage (VCC)3.0 V to 3.6 V DC (3.3 V nominal)
ProcessorDual-Core 32-bit Xtensa LX6 (up to 240 MHz, 600 DMIPS)
Internal SRAM520 KB SRAM (including 8 KB RTC FAST/SLOW memory)
External SPI Flash4 MB (up to 16 MB option)
Wi-Fi802.11 b/g/n (up to 150 Mbps)
BluetoothBluetooth v4.2 BR/EDR and BLE
ADC / DAC18-channel 12-bit SAR ADC, 2-channel 8-bit DAC
Deep Sleep current5 μA5\text{ }\mu\text{A} (RTC timer active)

Pinout

Standard 30-Pin ESP32 DevKit Breakout Pinout

PinNameTypeDescription
1EN / RSTDigital InputEnable / Reset pin (Active-HIGH, pull HIGH to run)
2VP / GPIO36Analog InputADC1_CH0 / RTC_GPIO0 (Input only)
3VN / GPIO39Analog InputADC1_CH3 / RTC_GPIO3 (Input only)
4GPIO34Analog InputADC1_CH6 (Input only, no internal pull-up/down)
5GPIO35Analog InputADC1_CH7 (Input only, no internal pull-up/down)
6GPIO32Touch / I/OTouch9 / ADC1_CH4 / XTAL32
7GPIO33Touch / I/OTouch8 / ADC1_CH5 / XTAL32
8GPIO25DAC / I/ODAC1 / ADC2_CH8 / RTC_GPIO6
9GPIO26DAC / I/ODAC2 / ADC2_CH9 / RTC_GPIO7
10GPIO27Touch / I/OTouch7 / ADC2_CH17
11GPIO14Touch / I/OTouch6 / ADC2_CH16 / HSPI_CLK
12GPIO12Touch / I/OTouch5 / ADC2_CH15 / HSPI_MISO (Boot strapping pin!)
13GPIO13Touch / I/OTouch4 / ADC2_CH14 / HSPI_MOSI
14GNDPowerGround (0 V)
15VIN / 5VPower5 V DC supply input (feeds onboard 3.3V LDO regulator)
16GPIO23Digital I/OVSPI_MOSI
17GPIO22Digital I/OI2C SCL
18GPIO1Digital OutputUART0 TX
19GPIO3Digital InputUART0 RX
20GPIO21Digital I/OI2C SDA
21GPIO19Digital I/OVSPI_MISO
22GPIO18Digital I/OVSPI_CLK
23GPIO5Digital I/OVSPI_CS (Boot strapping pin!)
24GPIO17Digital I/OUART2 TX
25GPIO16Digital I/OUART2 RX
26GPIO4Touch / I/OTouch0 / ADC2_CH0
27GPIO0Touch / I/OTouch1 / ADC2_CH1 (Boot Mode: LOW = Flash, HIGH = Run)
28GPIO2Touch / I/OTouch2 / ADC2_CH2 (Must be floating or LOW during flashing)
29GPIO15Touch / I/OTouch3 / ADC2_CH3 / HSPI_CS
303V3Power OutputRegulated +3.3 V DC output (or 3.3V power input)

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply VoltageVDDV_{DD}3.03.33.6VDC
Peak Supply CurrentIpeakI_{peak}240500mAWi-Fi TX burst at full power
Modem-Sleep CurrentImodemI_{modem}2030mACPU 240MHz active, radio idle
Light-Sleep CurrentIlightI_{light}0.81.0mACPU paused, ULP / RTC active
Deep-Sleep CurrentIdeepI_{deep}510µARTC timer active
Hibernation CurrentIhibI_{hib}2.55µARTC memory off
Max GPIO Sink/SourceIGPIOI_{GPIO}1240mAPer pin maximum

Strapping pins & Boot configuration

PinDefaultFunctionStrapping State
GPIO0Pull-upBoot ModeLOW = ROM Serial Flasher, HIGH = SPI Flash Boot
GPIO2Pull-downBoot Mode / LEDMust be LOW or left floating during serial flashing
GPIO5Pull-upSDIO Slave TimingMust be HIGH during boot
GPIO12Pull-downFlash Voltage (VSPIV_{SPI})LOW = 3.3V Flash (Default), HIGH = 1.8V Flash
GPIO15Pull-upSilence Boot LogHIGH = Output debug log on TXD0 at 115200 baud
Warning

GPIO Limitations & Gotchas:

  • Input-Only Pins: GPIO34, GPIO35, GPIO36 (VP), and GPIO39 (VN) are Input-only. They have no internal pull-up or pull-down resistors and cannot be used as outputs.
  • ADC2 & Wi-Fi Conflict: ADC2 channels (GPIO0, 2, 4, 1215, 2527) cannot be used when Wi-Fi is active. Use ADC1 (GPIO3239) for analog readings when using Wi-Fi.
  • GPIO12 1.8V LDO Trap: If GPIO12 is pulled HIGH during power-up, the ESP32 sets internal flash voltage to 1.8V, causing 3.3V SPI flash chips to fail and placing the ESP32 in a boot loop (flash read err).

Common mistakes

  • Holding GPIO0 LOW after flashing: If GPIO0 is connected to GND via a jumper, the ESP32 will continuously enter bootloader mode upon reset instead of running application code.
  • Powering external high-current devices from 3V3 pin: The onboard 3.3V LDO on DevKit boards has a max output limit of ~500 mA. Powering motors, servos, or heavy LED strips from the 3V3 pin will overheat the regulator.
  • Reading ADC2 while Wi-Fi is transmitting: Code calling analogRead() on ADC2 pins returns NaN or incorrect values once WiFi.begin() is invoked. Always route analog sensors to ADC1 pins.

Notes

  • Supports FreeRTOS natively with dual-core task pinning using xTaskCreatePinnedToCore().

Assets & downloads