ESP32 38-Pin DevKit (Generic Clone)
by Generic
Universal guide for identifying and using generic 38-pin ESP32 DevKit clones (NodeMCU-32S style).

Pinout
38 pins| Pin | GPIO | Labels | Status | Capabilities | Notes |
|---|---|---|---|---|---|
| 1 | - | 3V33.3V | power | - | 3.3V regulated output (~600mA max) |
| 2 | - | EN | control | - | Chip enable / reset (active LOW) |
| 3 | 36 | VPGPIO36A0 | strapping | adc | SENSOR_VP, ADC1_CH0, input only, no pull resistors |
| 4 | 39 | VNGPIO39A3 | strapping | adc | SENSOR_VN, ADC1_CH3, input only, no pull resistors |
| 5 | 34 | D34GPIO34A6 | strapping | adc | ADC1_CH6, input only, no pull resistors |
| 6 | 35 | D35GPIO35A7 | strapping | adc | ADC1_CH7, input only, no pull resistors |
| 7 | 32 | D32GPIO32A4 | safe | adc · touch | ADC1_CH4, Touch9 |
| 8 | 33 | D33GPIO33A5 | safe | adc · touch | ADC1_CH5, Touch8 |
| 9 | 25 | D25GPIO25A18 | safe | adc · dac | DAC1, ADC2_CH8 |
| 10 | 26 | D26GPIO26A19 | safe | adc · dac | DAC2, ADC2_CH9 |
| 11 | 27 | D27GPIO27A17 | safe | adc · touch | ADC2_CH7, Touch7 |
| 12 | 14 | D14GPIO14A16 | strapping | adc · touch · spi | ADC2_CH6, Touch6, HSPI_CLK |
| 13 | 12 | D12GPIO12A15 | strapping | adc · touch · spi | ADC2_CH5, Touch5, HSPI_MISO, Strapping pin (flash voltage) |
| 14 | - | GND | ground | - | Ground |
| 15 | 13 | D13GPIO13A14 | strapping | adc · touch · spi | ADC2_CH4, Touch4, HSPI_MOSI |
| 16 | 9 | SD2GPIO9 | strapping | - | Internal SPI flash (SD_DATA2) - not usable |
| 17 | 10 | SD3GPIO10 | strapping | - | Internal SPI flash (SD_DATA3) - not usable |
| 18 | 11 | CMDGPIO11 | strapping | - | Internal SPI flash (SD_CMD) - not usable |
| 19 | - | VIN5V | power | - | 5V input to onboard regulator |
| 20 | - | GND | ground | - | Ground |
| 21 | 23 | D23GPIO23 | safe | spi | VSPI_MOSI |
| 22 | 22 | D22GPIO22 | safe | i2c | I2C_SCL (default) |
| 23 | 1 | TX0GPIO1 | uart | uart | UART0 TX (USB serial) |
| 24 | 3 | RX0GPIO3 | uart | uart | UART0 RX (USB serial) |
| 25 | 21 | D21GPIO21 | safe | i2c | I2C_SDA (default) |
| 26 | - | GND | ground | - | Ground |
| 27 | 19 | D19GPIO19 | safe | spi | VSPI_MISO |
| 28 | 18 | D18GPIO18 | safe | spi | VSPI_CLK |
| 29 | 5 | D5GPIO5 | strapping | spi | VSPI_CS, Strapping pin |
| 30 | 17 | TX2GPIO17 | strapping | uart | UART2 TX |
| 31 | 16 | RX2GPIO16 | strapping | uart | UART2 RX |
| 32 | 4 | D4GPIO4A10 | strapping | adc · touch | ADC2_CH0, Touch0 |
| 33 | 0 | D0GPIO0A11 | strapping | adc · touch | ADC2_CH1, Touch1, Boot button (strapping pin) |
| 34 | 2 | D2GPIO2A12 | strapping | adc · touch | ADC2_CH2, Touch2, on-board LED, Strapping pin |
| 35 | 15 | D15GPIO15A13 | strapping | adc · touch · spi | ADC2_CH3, Touch3, HSPI_CS, Strapping pin |
| 36 | 8 | SD1GPIO8 | strapping | - | Internal SPI flash (SD_DATA1) - not usable |
| 37 | 7 | SD0GPIO7 | strapping | - | Internal SPI flash (SD_DATA0) - not usable |
| 38 | 6 | CLKGPIO6 | strapping | - | Internal SPI flash (SD_CLK) - not usable |
Start with these
10 pins with no boot or system involvementFreely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.
Fine - with a little care
sampled at boot or shared with debug/serial| Pin | Label | What to know | Role |
|---|---|---|---|
| VP | GPIO36 (SENSOR_VP) | Cannot be used as output; only suitable for input (e.g., analog read). | Other |
| VN | GPIO39 (SENSOR_VN) | Cannot be used as output; only suitable for input. | Other |
| D34 | GPIO34 | Cannot be used as output (no drive capability); only suitable for analog/digital input. | Other |
| D35 | GPIO35 | Cannot be used as output; only suitable for input. | Other |
| D14 | MTMS (GPIO14) | Used for JTAG debugging (TMS); driving it as GPIO may interfere with JTAG or produce spurious signals at boot. | Other |
| D12 | MTDI (GPIO12) | Keep LOW during boot (internal PD); pulling HIGH at reset selects 1.8V flash mode, causing flash brownout if 3.3V flash is used. | Strapping |
| D13 | MTCK (GPIO13) | Used for JTAG debugging (TCK); avoid using as GPIO if JTAG is needed. | Other |
| D5 | GPIO5 | Must be HIGH during boot; if pulled LOW at reset, alters SDIO slave timing and may prevent normal boot. | Strapping |
| D4 | GPIO4 | Sampled at reset for boot config; should not be driven at boot (affects boot mode timing). | Strapping |
| D0 | GPIO0 | Must be HIGH during boot for normal startup; if held LOW on reset, forces flash programming mode. | Strapping |
| D2 | GPIO2 | If driven HIGH on reset (while IO0 is LOW), selects an unsupported SDIO boot mode, causing boot failure. | Strapping |
| D15 | MTDO (GPIO15) | Keep HIGH during boot (internal PU); if LOW on reset, bootloader log is silenced and boot mode may change. | Strapping |
Only if you know the tricks
wired to flash or USB - expect a fight| Pin | Label | What to know | Role |
|---|---|---|---|
| SD2 | GPIO9 (Flash SD2) | Used by internal flash/PSRAM; typically not exposed on modules, avoid using as GPIO. | Flash |
| SD3 | GPIO10 (Flash SD3) | Used by internal flash/PSRAM; typically not exposed on modules, avoid using as GPIO. | Flash |
| CMD | GPIO11 (Flash CMD) | Used by internal flash (chip select/command); not available for general use. | Flash |
| TX0 | U0TXD (GPIO1) | Connected to on-board USB-UART for uploading and logs; drives serial output at boot, so using as GPIO can disrupt programming or console. | USB |
| RX0 | U0RXD (GPIO3) | Used for receiving data from USB-UART (programming); also pulled HIGH at boot for console communication, so using as GPIO can disrupt uploads. | USB |
| TX2 | GPIO17 | Connected to internal PSRAM on PSRAM-enabled modules; not usable as GPIO on those modules. | Flash |
| RX2 | GPIO16 | Connected to internal PSRAM on PSRAM-enabled modules; not usable as GPIO on those modules. | Flash |
| SD1 | GPIO8 (Flash SD1) | Used for internal flash/PSRAM data; not available for general GPIO. | Flash |
| SD0 | GPIO7 (Flash SD0) | Used for internal flash/PSRAM data; not available for general GPIO. | Flash |
| CLK | GPIO6 (Flash SCK) | Used for internal flash/PSRAM communication; not available for general GPIO. | Flash |
Pinout notes The ESP32 38-Pin DevKit (Generic Clone) breaks out 38 pins in total: 32 GPIO for your project, with 3V3 , GND and VIN handling power. On the analog side there…
The ESP32 38-Pin DevKit (Generic Clone) breaks out 38 pins in total: 32 GPIO for your project, with 3V3, GND and VIN handling power.
On the analog side there are 16 ADC-capable pins for sensors and battery monitoring, 10 capacitive-touch inputs and 2 true DAC outputs.
If you want zero surprises, D32, D33, D25, D26 and 6 more are free of any such role - the safest first picks. 12 of the exposed pins carry boot-time or system duties on the ESP32 (VP, VN, D34 and 9 more).
Universal 38-Pin Layout (NodeMCU-32S Style)
This pinout matches most 38-pin ESP32 development boards, including NodeMCU-32S and wider ESP32 DevKit clones.
Critical Boot Pins (Strapping Pins):
- GPIO0 - Boot mode: HIGH = normal boot, LOW = download/flash mode
- GPIO2 - Must be LOW or floating during boot (has onboard LED)
- GPIO12 - Flash voltage: LOW = 3.3V (default), HIGH = 1.8V
- GPIO15 - Debug output: LOW = normal (HIGH can cause boot failure)
Power
- VIN: 5V input (powers regulator)
- USB: 5V Micro-USB
- 3V3 Out: ~600mA max
- GPIO: 40mA/pin max
Serial
- UART0: TX=GPIO1, RX=GPIO3
USB programming - UART1: TX=GPIO10, RX=GPIO9
Flash pins - avoid - UART2: TX=GPIO17, RX=GPIO16
Available for sensors
I2C & SPI
- I2C: SDA=GPIO21, SCL=GPIO22
Software configurable - VSPI: MOSI=23, MISO=19, CLK=18, CS=5
- HSPI: MOSI=13, MISO=12, CLK=14, CS=15
Analog & Touch Capabilities
Use these when WiFi is active
Not reliable with WiFi
8-bit digital-to-analog
No external components needed
Do NOT Use These Pins:
- GPIO6-11: Connected to internal SPI flash - will cause boot failure
- These pins are exposed on 38-pin boards but should never be used in your projects
Pro Tips:
- Always use
ADC1channels (GPIO32-39) if WiFi is active - Never use GPIO6-11 - they're connected to flash memory
- GPIO34-39 are input-only (no internal pull-up/down resistors)
- Use external pull-up resistors on I2C lines (4.7kΩ typical)
- Most 38-pin boards have an onboard LED on GPIO2
- VIN pin allows powering the board from external 5V without USB
Getting started
flash your first firmware in ~2 minutesBoard: Esp32 Dev
Flash Size: 4MB · DIO
Upload Speed: 921600
// blink
pinMode(32, OUTPUT);
digitalWrite(32, LOW); // on (often inverted)[env:esp32-38pin-devkit-generic]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_speed = 921600esp32:
board: esp32dev
variant: esp32
framework:
type: esp-idf
# blink - GPIO32
output:
- platform: gpio
pin: 32
id: led_out
light:
- platform: binary
name: "LED"
output: led_outesptool.py --chip esp32 --port /dev/ttyACM0 \
write_flash 0x0 firmware.binSpecifications
ESP32 · 55 × 28 mmAbout this board
At its core is the ESP32 - a dual-core Xtensa with both Bluetooth Classic and BLE.
Expect to pay about $4.00 - less than the ~$20 most ESP32 boards go for.
32 GPIO are broken out - more than most ESP32 boards, so the pin budget is rarely the constraint.
Onboard you'll find EN/Boot buttons.
The ESP32 38-Pin DevKit is a wider variant of the ESP32 development board commonly found on AliExpress, eBay, and Amazon. These boards typically have "NodeMCU-32S" or "ESP32-WROOM-32" silkscreen labels and offer more exposed GPIO pins compared to the 30-pin variant.
How to Identify Which Board You Have
1. Check the USB-to-Serial ChipLook near the USB port for a square or rectangle IC with one of these labels:
- CH340C / CH340G → Most common on cheap clones. Rectangle chip. {% image "images/ch340c.png", "CH340C on ESP32 30pin Development Board", [500], "auto", "rounded-lg my-4", "max-width: 500px; width: 100%; height: auto;", true, true %}
- CP2102 → Common on mid-range boards. Square chip. {% image "images/cp2102-nodemcu-32s.png", "CP2102 on ESP32 30pin Development Board", [500], "auto", "rounded-lg my-4", "max-width: 500px; width: 100%; height: auto;", true, true %}
- CH9102F → Newer chip, similar to CP2102. Square chip. {% image "images/cp2102-vs-ch9102.png", "CP2102 vs CH9102 on ESP32 30pin Development Board", [500], "auto", "rounded-lg my-4", "max-width: 500px; width: 100%; height: auto;", true, true %}
- FT232RL → Less common but still found. Rectangle chip.
If you want to know more about USB-to-Serial chips, check out this detailed guide.
2. Count the Pins38-pin boards are wider "NodeMCU-32S" style boards with 19 pins per side.
If you have 30 pins, check out the 30-pin variant guide instead.
- AMS1117 → Older clones (gets hot under load)
- Usually comes in a larger SOT-223 package with a flat metal tab (heatsinkable)
- Often has "AMS1117" or "1117/3.3" printed directly on the chip
- If you see a chunky 3-lead component with a metal tab near the USB port, it's likely AMS1117
- ME6211 / HT7333 → Newer low-dropout regulators (better efficiency)
- Typically comes in small SOT-89 or SOT-23 packages (much smaller than SOT-223)
- If it's a tiny 3-pin SMD component next to the input capacitors, it's likely HT7333
- May have short marking codes that are harder to read
Tip: Some boards print the regulator type on the silkscreen (check the board's underside or near the regulator for labels like "AMS1117" or "HT7333").
4. Look for Common LabelsMany 38-pin boards are labeled as:
- NodeMCU-32S → Very common CP2102-based boards
- ESP32 DevKit V1 → Generic label, various USB chips
- ESP-WROOM-32 → Refers to the WiFi module, not the board itself
Key Advantages Over 30-Pin Boards
- More GPIOs exposed: 38 pins vs 30 pins means access to GPIO6-11 (though still not recommended for general use)
- VIN pin exposed: Can power from external 5V source without USB
- Better breadboard compatibility: Wider spacing works better with some breadboards
- More ground pins: Better for power distribution in complex projects
Important Notes
- 38 pins total → More GPIOs than 30-pin variant, but still avoid GPIO6-11 (flash pins)
- Some boards label ADC pins as
VP,VN,SVP,SVNinstead of GPIO numbers - Driver installation required for CH340 chips (automatic on most modern systems)
- Strapping pins (GPIO0, GPIO2, GPIO12, GPIO15) must be in correct state during boot
- Wider board requires more breadboard space (may not fit standard 400-point breadboards)
Where to buy
prices are typical street prices
Resources
Similar boards




