Opens in a new tab

ESP32-WROOM-32 Pinout (module)

ESP32-WROOM-32 is an Espressif module with the original ESP32 chip, flash memory, a crystal and an antenna under a shielding can. You will find it on ESP32 DevKit boards and in lots of finished devices, and when you design your own board, you solder it directly onto it.

The pinout applies to the WROOM-32, -32D and -32E variants as well as the -32U/-32UE versions with a connector for an external antenna.

Specifications

  • ESP32: 2× Xtensa LX6 up to 240 MHz, 520 kB SRAM
  • 4 MB flash (8 and 16 MB on -32E as well, R2 versions with 2 MB PSRAM)
  • Wi-Fi 4 (2.4 GHz) and Bluetooth 4.2 (Classic and LE)
  • 38 pads with 1.27 mm pitch, 26 usable GPIO
  • 16 analog inputs (ADC1 + ADC2), 2× DAC, 10 touch inputs
  • 3.0–3.6 V supply
  • 18 × 25.5 × 3.1 mm (U/UE versions 18 × 19.2 mm)

For your own board, you need at least a 3.3 V regulator (500 mA or more), a pull-up with a capacitor on EN, and a button or jumper on GPIO0 for uploading. It is programmed via UART0 (GPIO1/GPIO3) with a USB-UART converter. On the -32 and -32D, pads 17–22 are connected to the flash memory; on the -32E they are not connected.

Pinout and pin table

Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.

ESP32-WROOM-32 (modul) – pinoutESP32-WROOM-32 (modul) – pinoutchiptron.eu · CC BY 4.0ESP32-WROOM-32D / E / U / UE 1 GND 2 3V3 → Power 3.0–3.6 V, supply at least 500 mA 3 EN → Chip enable (logic 0 = reset), do not leave floating 4 GPIO36 ADC1_CH0 VP · input only 5 GPIO39 ADC1_CH3 VN · input only 6 GPIO34 ADC1_CH6 input only 7 GPIO35 ADC1_CH7 input only 8 GPIO32 ADC1_CH4 T9 9 GPIO33 ADC1_CH5 T8 10 GPIO25 ADC2_CH8 DAC1 TX2 11 GPIO26 ADC2_CH9 DAC2 RX1 12 GPIO27 ADC2_CH7 T7 TX1 13 GPIO14 ADC2_CH6 T6 14 GPIO12 ADC2_CH5 T5 38 GND 37 GPIO23 MOSI 36 GPIO22 SCL 35 GPIO1 TX 34 GPIO3 RX 33 GPIO21 SDA 32 NC 31 GPIO19 MISO 30 GPIO18 SCK 29 GPIO5 SS 28 GPIO17 27 GPIO16 26 GPIO4 ADC2_CH0 T0 RX2 25 GPIO0 ADC2_CH1 T1 15 GND 16 GPIO13 ADC2_CH4 T4 17 GPIO9 SD2 18 GPIO10 SD3 19 GPIO11 CMD 24 GPIO2 ADC2_CH2 T2 23 GPIO15 ADC2_CH3 T3 22 GPIO8 SD1 21 GPIO7 SD0 20 GPIO6 CLK GPIO UART I2C SPI ADC (analog) DAC Touch Power Ground (GND) Control / reset Not connected Strapping pin Used by flash
Download:PNGSVG
Pin table – ESP32-WROOM-32 (modul)
PinNameDirectionUARTI2CSPIADCDACTouchNote
1GND–
23V3inputPower 3.0–3.6 V. Wi-Fi peaks above 300 mA when transmitting – size the regulator and capacitors for at least 500 mA.
3ENinputChip enable (CHIP_PU): logic 1 = running, logic 0 = reset. Connect a 10 kΩ pull-up to 3.3 V and a 1 µF capacitor to GND (delayed start), or a button to GND.
4GPIO36inputADC1_CH0SENSOR_VP – input only, no internal pull-up/pull-down
5GPIO39inputADC1_CH3SENSOR_VN – input only, no internal pull-up/pull-down
6GPIO34inputADC1_CH6Input only, no internal pull-up/pull-down
7GPIO35inputADC1_CH7Input only, no internal pull-up/pull-down
8GPIO32input/outputADC1_CH4T9
9GPIO33input/outputADC1_CH5T8
10GPIO25input/outputTX2ADC2_CH8DAC1DAC1 (8-bit); UART2 TX (Serial2, default in Arduino 3.x). ADC2 cannot be used with Wi-Fi on
11GPIO26input/outputRX1ADC2_CH9DAC2DAC2 (8-bit); UART1 RX (Serial1, default in Arduino 3.x). ADC2 cannot be used with Wi-Fi on
12GPIO27input/outputTX1ADC2_CH7T7UART1 TX (Serial1, default in Arduino 3.x). ADC2 cannot be used with Wi-Fi enabled
13GPIO14input/outputADC2_CH6T6JTAG MTMS; ADC2 cannot be used with Wi-Fi on
14GPIO12input/outputADC2_CH5T5Strapping pin (MTDI) – selects the flash voltage. The module has 3.3 V flash, so it must be logic 0 at power-up (internal pull-down), otherwise it will not boot. This can be fixed permanently with an eFuse (espefuse set-flash-voltage 3.3V). ADC2 cannot be used with Wi-Fi on.
15GND–
16GPIO13input/outputADC2_CH4T4JTAG MTCK; ADC2 cannot be used with Wi-Fi on
17GPIO9input/outputConnected to flash memory (SD2) – do not use; not connected on -32E
18GPIO10input/outputConnected to flash memory (SD3) – do not use; not connected on -32E
19GPIO11input/outputConnected to flash memory (CMD) – do not use; not connected on -32E
20GPIO6input/outputConnected to flash memory (CLK) – do not use; not connected on -32E
21GPIO7input/outputConnected to flash memory (SD0) – do not use; not connected on -32E
22GPIO8input/outputConnected to flash memory (SD1) – do not use; not connected on -32E
23GPIO15input/outputADC2_CH3T3Strapping pin – logic 0 at boot disables bootloader output. JTAG MTDO
24GPIO2input/outputADC2_CH2T2Strapping pin – must be logic 0 or unconnected at boot for download mode
25GPIO0input/outputADC2_CH1T1Strapping pin – logic 0 at boot (together with GPIO2 at logic 0) = UART download mode. For normal boot use a pull-up (internal is enough); boards have a BOOT button to GND.
26GPIO4input/outputRX2ADC2_CH0T0UART2 RX (Serial2, default in Arduino 3.x). ADC2 cannot be used with Wi-Fi enabled
27GPIO16input/outputIn use on PSRAM versions (-32E…R2); Serial2 defaults to GPIO4/25 in Arduino 3.x
28GPIO17input/outputFormerly the default UART2 TX; in Arduino 3.x, Serial2 defaults to GPIO4/25
29GPIO5input/outputSSStrapping pin (SDIO timing) – logic 1 at boot (internal pull-up)
30GPIO18input/outputSCK
31GPIO19input/outputMISO
32NC–
33GPIO21input/outputSDA
34GPIO3input/outputRXUART0 RX – firmware upload
35GPIO1input/outputTXUART0 TX – firmware upload and log output
36GPIO22input/outputSCL
37GPIO23input/outputMOSI
38GND–
padGND–

What to watch out for

  • The GPIO are not 5V tolerant.
  • GPIO12 must be at logic 0 at power-up – otherwise the flash gets 1.8 V and the module won’t start.
  • GPIO0 at logic 0 at boot switches to download mode; GPIO2 must be at logic 0 or unconnected during uploading.
  • GPIO34–39 are input-only with no internal pull-ups.
  • ADC2 (GPIO0, 2, 4, 12–15, 25–27) cannot be used while Wi-Fi is on.
  • There must be no copper or components under the antenna – place the module with the antenna over the board edge.

ESP32 on chiptron.eu/

Projects and guides on chiptron.eu/:

More pinouts

See all pinouts on the Pinouts page.

Related Articles