Skip to content

ESP32 DevKit V1 (30-pin)

Chip ESP32-WROOM-32
Dimmers, servos & motors 16 PWM channels (a motor takes 2)
LED strips (WS2812) up to 8
Battery no built-in sense; power it from USB or a 5 V supply, or add a two-resistor divider to read a battery (Battery props)
Firmware esp32-devkit-v1, install it from your browser

Pinout of the ESP32 DevKit V1 (30-pin): each GPIO colored green (good), amber (caution) or red (reserved), labeled with what it’s best for

Green pins are good for anything they can do. Amber pins work but have a quirk, so read the note below before putting a relay or motor on one. Red pins are taken by the board itself. Gray pins are power and control (GND, 3V3, EN and so on).

The seller-style pinout with photos: randomnerdtutorials.com.

The console marks these with ★ when you assign pins. They are advice. Any pin that can do a job is allowed.

To connect… Use Why
Servo D25 D26 D27 D13 D4 Quiet at power-up, so nothing twitches while the board boots.
DC motor (H-bridge IN1/IN2) D19 D18 A quiet pair side by side for IN1 / IN2 — a motor never lurches at boot.
Relay / on-off output D23 D22 D21 Quiet at power-up, so a relay never clicks on during boot.
LED strip (WS2812) TX2 RX2 Any output can drive a strip; these keep strips together. Use a 74AHCT-type level shifter for 5 V strips.
LED dimmer (PWM) D14 D12 D5 D2 D15 The boot-quirk pins — a flicker at power-up doesn’t matter for a light, and it keeps the quiet pins free. D2 is the onboard blue LED.
Sensor / button input VP VN D34 D35 D32 D33 Input-only pins don’t use up outputs. VP / VN / D34 / D35 have no pull resistor — fine for PIR and beam sensors, which drive their own output. Buttons go on D32 / D33, which have internal pull-ups.
Pin GPIO Can be Note
VP 36 ✅ good input, analog, wakes from sleep input only, no internal pull — a button here needs an external resistor
VN 39 ✅ good input, analog, wakes from sleep input only, no internal pull — a button here needs an external resistor
D34 34 ✅ good input, analog, wakes from sleep input only, no internal pull — a button here needs an external resistor
D35 35 ✅ good input, analog, wakes from sleep input only, no internal pull — a button here needs an external resistor
D32 32 ✅ good input, output, pull-up, pull-down, analog, wakes from sleep
D33 33 ✅ good input, output, pull-up, pull-down, analog, wakes from sleep
D25 25 ✅ good input, output, pull-up, pull-down, wakes from sleep
D26 26 ✅ good input, output, pull-up, pull-down, wakes from sleep
D27 27 ✅ good input, output, pull-up, pull-down, wakes from sleep
D14 14 ⚠️ caution input, output, pull-up, pull-down, wakes from sleep pulses briefly at power-up — a relay or motor here may twitch on boot
D12 12 ⚠️ caution output STRAPPING: must be LOW at power-up or the board will not boot. Outputs only, and nothing that pulls it high (many relay modules do)
D13 13 ✅ good input, output, pull-up, pull-down, wakes from sleep
D23 23 ✅ good input, output, pull-up, pull-down
D22 22 ✅ good input, output, pull-up, pull-down
TX0 1 ⛔ reserved USB serial — the console and the flasher live here
RX0 3 ⛔ reserved USB serial — the console and the flasher live here
D21 21 ✅ good input, output, pull-up, pull-down
D19 19 ✅ good input, output, pull-up, pull-down
D18 18 ✅ good input, output, pull-up, pull-down
D5 5 ⚠️ caution output STRAPPING: pulled high and pulses at power-up — fine for an LED or strip, not for a relay or motor
TX2 17 ✅ good input, output, pull-up, pull-down
RX2 16 ✅ good input, output, pull-up, pull-down
D4 4 ✅ good input, output, pull-up, pull-down, wakes from sleep
D2 2 ⚠️ caution output STRAPPING + the onboard blue LED. Outputs only; anything holding it high blocks flashing
D15 15 ⚠️ caution output STRAPPING: pulled high and pulses at power-up — fine for an LED or strip, not for a relay or motor