Opens in a new tab

ESP32 DevKit V1 Pinout (30 pins)

ESP32 DevKit V1 (originally from DOIT) is the most widespread low-cost board with the ESP32-WROOM-32 module. You will find it in every other ESP32 tutorial.

It has 30 pins – unlike the official DevKitC, it does not break out the flash memory pins, and GPIO0 is only available on the BOOT button. Clones differ in USB-serial converter, color and board width, but the pin layout stays the same.

Specifications

  • ESP32: 2× Xtensa LX6 up to 240 MHz, 520 kB SRAM
  • 4 MB flash (ESP32-WROOM-32 module)
  • Wi-Fi 4 (2.4 GHz), Bluetooth Classic and BLE 4.2
  • 25 GPIO on the headers, 15 channels of 12-bit ADC, 2× DAC, 9 touch inputs
  • 3× UART, 2× I2C, 2× free SPI, PWM on all output pins
  • micro USB, CP2102 or CH340 converter
  • blue LED on GPIO2, EN (reset) and BOOT buttons

In the Arduino IDE, select the DOIT ESP32 DEVKIT V1 board or the generic ESP32 Dev Module. UART, I2C and SPI can be remapped to almost any pin through the GPIO matrix – the table shows the default Arduino assignments.

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.

Pin names:
ESP32 DevKit V1 (30pin) – pinoutESP32 DevKit V1 (30pin) – pinoutchiptron.eu · CC BY 4.0micro USBBOOTENESP32-WROOM-32 1 3V3 ← 3.3 V output from the regulator 2 GND 3 GPIO15 ADC2_CH3 T3 4 GPIO2 ADC2_CH2 T2 blue LED 5 GPIO4 ADC2_CH0 T0 RX2 6 GPIO16 7 GPIO17 8 GPIO5 SS 9 GPIO18 SCK 10 GPIO19 MISO 11 GPIO21 SDA 12 GPIO3 RX 13 GPIO1 TX 14 GPIO22 SCL 15 GPIO23 MOSI 30 VIN ↔ 5 V from USB, or 5 V power input 29 GND 28 GPIO13 ADC2_CH4 T4 27 GPIO12 ADC2_CH5 T5 26 GPIO14 ADC2_CH6 T6 25 GPIO27 ADC2_CH7 T7 TX1 24 GPIO26 ADC2_CH9 DAC2 RX1 23 GPIO25 ADC2_CH8 DAC1 TX2 22 GPIO33 ADC1_CH5 T8 21 GPIO32 ADC1_CH4 T9 20 GPIO35 ADC1_CH7 input only 19 GPIO34 ADC1_CH6 input only 18 GPIO39 ADC1_CH3 VN · input only 17 GPIO36 ADC1_CH0 VP · input only 16 EN ← Reset – connecting to GND restarts the chip (EN button) GPIO UART I2C SPI ADC (analog) DAC Touch Power Ground (GND) Control / reset Strapping pin
Download:PNGSVG
Pin table – ESP32 DevKit V1 (30pin)
PinNameDirectionUARTI2CSPIADCDACTouchNote
13V3output3.3 V output from the regulator
2GND–
3GPIO15input/outputADC2_CH3T3Strapping pin – logic 0 at boot disables bootloader output. JTAG MTDO
4GPIO2input/outputADC2_CH2T2Blue LED. Strapping pin – for download mode must be logic 0 or floating at boot
5GPIO4input/outputRX2ADC2_CH0T0UART2 RX (Serial2, default in Arduino 3.x). ADC2 cannot be used with Wi-Fi enabled
6GPIO16input/outputSilkscreened RX2 on DOIT boards – in Arduino 3.x the default Serial2 is on GPIO4/25, specify this pin in Serial2.begin(…); used by PSRAM on WROVER modules
7GPIO17input/outputSilkscreened TX2 on DOIT boards – in Arduino 3.x the default Serial2 is on GPIO4/25, specify this pin in Serial2.begin(…); used by PSRAM on WROVER modules
8GPIO5input/outputSSStrapping pin (SDIO timing) – logic 1 at boot (internal pull-up)
9GPIO18input/outputSCK
10GPIO19input/outputMISO
11GPIO21input/outputSDA
12GPIO3input/outputRXUART0 RX – connected to the USB-serial converter
13GPIO1input/outputTXUART0 TX – connected to the USB-serial converter
14GPIO22input/outputSCL
15GPIO23input/outputMOSI
16ENinputReset – connecting to GND restarts the chip (EN button)
17GPIO36inputADC1_CH0SENSOR_VP – input only, no internal pull-up/pull-down
18GPIO39inputADC1_CH3SENSOR_VN – input only, no internal pull-up/pull-down
19GPIO34inputADC1_CH6Input only, no internal pull-up/pull-down
20GPIO35inputADC1_CH7Input only, no internal pull-up/pull-down
21GPIO32input/outputADC1_CH4T9
22GPIO33input/outputADC1_CH5T8
23GPIO25input/outputTX2ADC2_CH8DAC1DAC1 (8-bit); UART2 TX (Serial2, default in Arduino 3.x). ADC2 cannot be used with Wi-Fi on
24GPIO26input/outputRX1ADC2_CH9DAC2DAC2 (8-bit); UART1 RX (Serial1, default in Arduino 3.x). ADC2 cannot be used with Wi-Fi on
25GPIO27input/outputTX1ADC2_CH7T7UART1 TX (Serial1, default in Arduino 3.x). ADC2 cannot be used with Wi-Fi enabled
26GPIO14input/outputADC2_CH6T6JTAG MTMS; ADC2 cannot be used with Wi-Fi on
27GPIO12input/outputADC2_CH5T5Strapping pin (flash voltage) – must be logic 0 at boot, otherwise the board will not boot. JTAG MTDI
28GPIO13input/outputADC2_CH4T4JTAG MTCK; ADC2 cannot be used with Wi-Fi on
29GND–
30VINinput/output5 V from USB, or 5 V power input

What to watch out for

  • The GPIO are not 5V tolerant. Use a level shifter for 5V signals.
  • GPIO34, 35, 36 (VP) and 39 (VN) are input-only and have no internal pull-up or pull-down.
  • ADC2 (GPIO2, 4, 12–15, 25–27) does not work while Wi-Fi is on – use ADC1 (GPIO32–39) for analog inputs.
  • Strapping pins: GPIO12 must be at logic 0 at boot, otherwise the wrong flash voltage is set and the board will not start. GPIO0 and GPIO2 select the download mode, GPIO5 and GPIO15 control timing and the bootloader log output.
  • If uploading fails with “Failed to connect”, hold the BOOT button when the upload starts.
  • Feed 5 V into VIN – a higher voltage only heats up the linear regulator.

ESP32 projects on chiptron.eu/

Projects and guides on chiptron.eu/:

  • SEN66 with ESP32 – air quality sensor connected to an ESP32 DevKit, code and tips
  • Wokwi – online simulator where you can try the ESP32 DevKit V1 without hardware
  • YoRadio – internet radio with an ESP32 WROOM and an I2S DAC, Home Assistant support
  • ESP32 chip comparison – which ESP32 to choose based on peripherals and project needs

More pinouts

See all pinouts on the Pinouts page.

Related Articles