The ESP32 DevKit V1 with a USB Type-C connector is the current standard-bearer for hobbyist and prototyping Wi-Fi/Bluetooth projects. However, the transition from Micro-USB to Type-C on these budget boards introduces specific power delivery quirks, and the 30-pin layout hides several silicon-level traps that will crash your code or brick your boot sequence.
Below is the direct, bench-tested reference for the ESP32 DevKit V1 Type-C pinout, assuming the standard 30-pin NodeMCU-32S footprint (the most widely manufactured variant in 2026).
The Complete ESP32 DevKit V1 Type-C Pinout Reference
Read this table with the USB-C port facing up. The left bank contains pins 1 through 15, and the right bank contains pins 16 through 30.
| Pin # | GPIO | Silkscreen Name | Primary Function & Constraints |
|---|---|---|---|
| 1 | - | 3V3 | 3.3V Power Output (Max ~500mA from onboard LDO) |
| 2 | - | EN | Enable (Chip reset when pulled LOW) |
| 3 | 36 | VP / GPIO36 | Input ONLY. ADC1_CH0. No internal pull-up. |
| 4 | 39 | VN / GPIO39 | Input ONLY. ADC1_CH3. No internal pull-up. |
| 5 | 34 | GPIO34 | Input ONLY. ADC1_CH6. No internal pull-up. |
| 6 | 35 | GPIO35 | Input ONLY. ADC1_CH7. No internal pull-up. |
| 7 | 32 | GPIO32 | ADC1_CH4, Touch9, XTAL_32K_N. Safe for I2C/SPI. |
| 8 | 33 | GPIO33 | ADC1_CH5, Touch8, XTAL_32K_P. Safe for I2C/SPI. |
| 9 | 25 | GPIO25 | DAC1, ADC2_CH8. General purpose I/O. |
| 10 | 26 | GPIO26 | DAC2, ADC2_CH9. General purpose I/O. |
| 11 | 27 | GPIO27 | ADC2_CH7, Touch7. General purpose I/O. |
| 12 | 14 | GPIO14 | ADC2_CH6, Touch6, MTMS. Outputs PWM on boot. |
| 13 | 12 | GPIO12 | Strapping Pin. ADC2_CH5, Touch5. Boot fails if HIGH. |
| 14 | - | GND | Ground reference. |
| 15 | 13 | GPIO13 | ADC2_CH4, Touch4, MTCK. General purpose I/O. |
| 16 | 9 | GPIO9 | DO NOT USE. Connected to internal SPI Flash. |
| 17 | 10 | GPIO10 | DO NOT USE. Connected to internal SPI Flash. |
| 18 | 11 | GPIO11 | DO NOT USE. Connected to internal SPI Flash. |
| 19 | - | 5V | 5V Input from USB-C or external supply. |
| 20 | - | GND | Ground reference. |
| 21 | 23 | GPIO23 | VSPI MOSI. High-speed digital I/O. |
| 22 | 22 | GPIO22 | Default I2C SCL. Safe for general I/O. |
| 23 | 1 | GPIO1 / TX0 | U0TXD. Debug console output. Avoid for general I/O. |
| 24 | 3 | GPIO3 / RX0 | U0RXD. Debug console input. Avoid for general I/O. |
| 25 | 21 | GPIO21 | Default I2C SDA. Safe for general I/O. |
| 26 | - | GND | Ground reference. |
| 27 | 19 | GPIO19 | VSPI MISO. High-speed digital I/O. |
| 28 | 18 | GPIO18 | VSPI SCK. High-speed digital I/O. |
| 29 | 5 | GPIO5 | VSPI SS. Outputs PWM on boot. Strapping pin. |
| 30 | 17 | GPIO17 | General purpose I/O. Safe for UART1 TX. |
| 31 | 16 | GPIO16 | General purpose I/O. Safe for UART1 RX. |
| 32 | 4 | GPIO4 | ADC2_CH0, Touch0. Outputs PWM on boot. |
| 33 | 0 | GPIO0 | Strapping Pin. ADC2_CH1, Touch1. Boot mode select. |
| 34 | 2 | GPIO2 | Strapping Pin. ADC2_CH2, Touch2. Connected to onboard LED. |
| 35 | 15 | GPIO15 | Strapping Pin. ADC2_CH3, Touch3. Outputs PWM on boot. |
Note: Some manufacturers produce a 38-pin "wide" variant. If your board has 38 pins, the extra pins are typically duplicate GND, 3V3, and GPIOs 6-11 broken out. Treat GPIO 6-11 as strictly forbidden regardless of board width.
Rows People Get Wrong: Strapping Pins and Flash Memory
The most common bench failures on the DevKit V1 come from ignoring the silicon-level routing of specific GPIOs. If your ESP32 boots into a continuous reset loop or fails to execute your setup() function, you have likely violated one of these rules:
These pins are physically wired to the external SPI flash memory chip on the board. If you attempt to use them as standard digital I/O, or if you attach a peripheral that pulls them LOW during boot, the ESP32 cannot read its own firmware. The chip will halt or crash immediately. Never use these pins.
Input-Only Pins (GPIO 34, 35, 36, 39): These pins lack internal pull-up and pull-down resistors. If you wire a button to GPIO 34 without an external 10kΩ pull-up resistor, the pin will float, generating hundreds of false interrupts per second. Furthermore, they cannot drive an LED or relay.
Strapping Pins (GPIO 0, 2, 5, 12, 15): During the first 10 milliseconds of power-on, the ESP32 samples these pins to determine boot mode (e.g., flash boot vs. serial bootloader).
- GPIO 12: Must be LOW at boot. If you wire a relay or sensor that pulls GPIO 12 HIGH, the ESP32 will misconfigure its flash voltage and fail to boot.
- GPIO 0: Must be HIGH for normal execution. Pulling it LOW at boot forces the chip into UART download mode.
USB Type-C on the DevKit V1: What It Actually Does
The inclusion of a USB Type-C port on modern DevKit V1 boards is frequently misunderstood. It does not support USB Power Delivery (PD) or DisplayPort Alt Mode.
According to the Espressif ESP32 Datasheet, the USB lines route directly to an onboard USB-to-UART bridge (typically a CP2102 or CH340G). The Type-C port is wired strictly for USB 2.0 data (D+ / D-) and default 5V VBUS power.
The USB-C standard requires a 5.1kΩ pull-down resistor on the CC1 and CC2 lines for a device to identify as a "sink" and request 5V from a modern USB-C charger. Most budget DevKit V1 Type-C boards omit these resistors to save $0.02 in manufacturing.
The result: If you plug the board into a modern MacBook, iPad, or USB-C PD wall charger using a C-to-C cable, the charger will not detect the device and will output 0V. The board will appear dead. Always use a USB-A to USB-C cable, or plug it into a legacy USB-A hub, to guarantee 5V delivery.
Safe Interpretation: Reading Faded Silkscreen and Board Variants
Mass-produced DevKit V1 boards often suffer from poor quality control. It is common to receive a board where the silkscreen text is misaligned, faded, or printed upside down. When you cannot trust the labels, use this multimeter-based verification path before applying power to sensitive 3.3V sensors.
Set your multimeter to continuity mode (the diode/beep setting). With the board unpowered and the USB-C port facing UP:
1. Find Ground: Probe the metal shield of the USB-C port. It is tied to GND. Now probe the pins on the headers until you find the 2 or 3 pins that beep. These are your GND pins.
2. Find 5V: Probe the VBUS pin on the USB-C connector (the outermost large pins inside the port). Trace this to the header. It will be the 5V pin.
3. Find 3V3: Locate the large AMS1117-3.3 voltage regulator on the board. The output tab is tied to 3V3. Trace it to the header.
Once you have positively identified GND, 5V, and 3V3, you can reliably count the remaining pins using the reference table above, starting from the top-left (Pin 1: 3V3) and top-right (Pin 19: 5V).
Decision Tree: Choosing the Right Pin for Your Peripheral
Do not assign pins arbitrarily. The ESP32's internal architecture divides ADCs, touch sensors, and high-speed buses in ways that dictate which GPIO you must use. Use this decision matrix to terminate your wiring choices with exact pin numbers.
| If your project needs... | Then use exactly these GPIOs | Why this is the concrete pick |
|---|---|---|
| I2C Sensors (BME280, OLED, MPU6050) | SDA: GPIO 21 SCL: GPIO 22 |
These are the hardware-default I2C pins mapped in the Arduino Wire library and ESP-IDF. Using them avoids software bit-banging overhead. |
| SPI Devices (SD Cards, TFT Displays) | MOSI: 23, MISO: 19 SCK: 18, CS: 5 |
These map to the ESP32's VSPI hardware bus. Routing SPI through other pins forces slower software emulation. |
| Analog Sensors (Potentiometers, Light sensors) | GPIO 32, 33, 34, 35, 36, 39 | These are tied to ADC1. ADC1 remains functional while Wi-Fi is active. ADC2 (GPIO 0, 2, 4, 12-15, 25-27) is disabled the moment Wi-Fi initializes. |
| Hardware UART (GPS modules, RS485) | TX: GPIO 17 RX: GPIO 16 |
UART0 is reserved for the USB debug console (GPIO 1/3). UART2 is tied to the SPI flash on some board variants. UART1 on 16/17 is the only safe, dedicated hardware serial port. |
| Capacitive Touch (TTP223 replacements) | GPIO 4, 13, 14, 15, 27, 32, 33 | These pins are routed to the internal touch sensor controller. Avoid GPIO 0 and 2 for touch, as their strapping requirements interfere with touch baseline calibration. |
For further architectural details on bus routing and peripheral matrices, consult the Espressif ESP-IDF Peripheral API Documentation. Always verify your specific board's USB-to-UART bridge chip (CP2102 vs CH340G) before flashing, as this dictates which COM port driver your operating system requires.






