Espressif ESP32-H2-DevKitM-1
by Espressif
Official ESP32-H2 dev board with 802.15.4 and BLE - perfect for Zigbee, Thread, and secure IoT development.

On this page
Pinout
30 pins · 2.54 mm pitch| Pin | GPIO | Labels | Status | Capabilities | Notes |
|---|---|---|---|---|---|
| 1 | - | 3V33.3V | power | - | 3.3V regulated output |
| 2 | - | RSTEN | control | - | Chip reset (active low) |
| 3 | 0 | IO0 | strapping | pwm | Fast SPI FSPIQ |
| 4 | 1 | IO1A1 | strapping | adc · pwm | ADC1_CH0; FSPICS0 |
| 5 | 2 | IO2A2 | strapping | adc · pwm | ADC1_CH1; JTAG MTMS; FSPIWP |
| 6 | 3 | IO3A3 | strapping | adc · pwm | ADC1_CH2; JTAG MTDO; FSPIHD |
| 7 | 13 | IO13 | safe | pwm | 32.768 kHz crystal XTAL_32K_P |
| 8 | 14 | IO14 | safe | pwm | 32.768 kHz crystal XTAL_32K_N |
| 9 | 4 | IO4A4 | strapping | adc · pwm | ADC1_CH3; JTAG MTCK; FSPICLK |
| 10 | 5 | IO5A5 | strapping | adc · pwm | ADC1_CH4; JTAG MTDI; FSPID |
| 11 | - | NC | - | Not connected | |
| 12 | - | VBAT3V3 | power | - | Battery / RTC 3.3V input |
| 13 | - | GND | ground | - | Ground |
| 14 | - | 5V | power | - | 5V input (from USB) / output |
| 15 | - | GND | ground | - | Ground |
| 16 | - | GND | ground | - | Ground |
| 17 | 24 | IO24TX | uart | uart · pwm | UART0 TX; FSPICS2 |
| 18 | 23 | IO23RX | uart | uart · pwm | UART0 RX; FSPICS1 |
| 19 | 10 | IO10 | safe | pwm | Zero-crossing detector ZCD0 |
| 20 | 11 | IO11 | safe | pwm | Zero-crossing detector ZCD1 |
| 21 | 25 | IO25 | strapping | pwm | Fast SPI FSPICS3 |
| 22 | 12 | IO12 | safe | pwm | General-purpose GPIO |
| 23 | 8 | IO8 | strapping | pwm | Onboard RGB LED; ROM boot log (LOG) |
| 24 | 22 | IO22 | safe | pwm | General-purpose GPIO |
| 25 | - | GND | ground | - | Ground |
| 26 | 9 | IO9 | strapping | pwm | BOOT button |
| 27 | - | GND | ground | - | Ground |
| 28 | 27 | IO27 | uart | pwm | USB D+ (native USB Serial/JTAG); FSPICS5 |
| 29 | 26 | IO26 | uart | pwm | USB D- (native USB Serial/JTAG); FSPICS4 |
| 30 | - | GND | ground | - | Ground |
Start with these
6 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 |
|---|---|---|---|
| IO24 | U0TXD | Often used for boot log output and serial debugging; repurposing it can disable serial output of boot messages and interfere with console debugging. | UART |
| IO23 | U0RXD | Often used for the serial console and bootloader input; repurposing it may conflict with UART communication for programming or debugging. | UART |
| IO25 | GPIO25 | Used during boot to determine the JTAG interface source; this pin has no internal pull-up/down, so it must not be left floating (an external resistor drives it high/low to avoid unintended JTAG mode selection). | Strapping |
| IO8 | GPIO8 | Must be held at the proper logic level on reset to select the correct boot mode and enable/disable bootloader log output. | Strapping |
| IO9 | GPIO9 | Must be pulled high on reset for normal SPI flash boot (pulling it low while GPIO8 is high forces the chip into download/programming mode). | Strapping |
Only if you know the tricks
wired to flash or USB - expect a fight| Pin | Label | What to know | Role |
|---|---|---|---|
| IO0 | GPIO0 | Connected to the external (or in-package) flash memory as a data line; cannot be repurposed without interfering with program storage. | Flash |
| IO1 | GPIO1 | Used to select the SPI flash chip (not brought out on modules with in-package flash); needed for flash access, so it should not be used as a general IO. | Flash |
| IO2 | MTMS | Serves as the flash memory’s write-protect pin and the JTAG TMS line; using it as GPIO can disrupt flash operation or JTAG debugging. | Flash |
| IO3 | MTDO | Serves as the flash HOLD (D3) line and the JTAG TDO output; repurposing it can interfere with flash reads/writes or JTAG debugging. | Flash |
| IO4 | MTCK | Acts as the SPI flash clock line and the JTAG clock; cannot be used as GPIO without halting flash operation or debug capability. | Flash |
| IO5 | MTDI | Functions as the flash data input (D0) line and JTAG TDI input; using it as GPIO will interfere with the flash data bus and JTAG functionality. | Flash |
| IO27 | USB_D+ | By default, this pin is connected to the internal USB Serial/JTAG controller; using it as a general-purpose IO would disable the USB functionality used for debugging/programming. | USB |
| IO26 | USB_D- | By default, this pin is connected to the chip’s internal USB Serial/JTAG peripheral; using it as a general-purpose IO requires disabling or reconfiguring that USB interface. | USB |
Pinout notes Across 30 pins (2.54 mm pitch), the Espressif ESP32-H2-DevKitM-1 exposes 19 GPIO plus 3V3 , VBAT , GND and 5V for power. Peripheral wiring is straightforward:…
Across 30 pins (2.54 mm pitch), the Espressif ESP32-H2-DevKitM-1 exposes 19 GPIO plus 3V3, VBAT, GND and 5V for power.
Peripheral wiring is straightforward: TX/RX on GPIO24 and GPIO23 cover serial logging and flashing.
Beyond plain digital I/O you get 5 ADC-capable pins for sensors and battery monitoring and PWM on every GPIO.
5 of the exposed pins carry boot-time or system duties on the ESP32-H2 (IO24, IO23, IO25 and 2 more) - check the guidance above before wiring anything to them. IO13, IO14, IO10, IO11 and 2 more are free of any such role - the safest first picks.
Getting started
flash your first firmware in ~2 minutesBoard: Esp32 H2 Devkitm 1
Flash Size: 4MB · DIO
Upload Speed: 921600
// blink
pinMode(13, OUTPUT);
digitalWrite(13, LOW); // on (often inverted)[env:esp32-h2-devkitm-1]
platform = espressif32
board = esp32-h2-devkitm-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600esp32:
board: esp32-h2-devkitm-1
variant: esp32_h2_devkitm_1
framework:
type: esp-idf
# blink - GPIO13
output:
- platform: gpio
pin: 13
id: led_out
light:
- platform: binary
name: "LED"
output: led_outesptool.py --chip esp32h2 --port /dev/ttyACM0 \
write_flash 0x0 firmware.binSpecifications
ESP32-H2 · 48.26 × 25.4 mmAbout this board
Inside sits the ESP32-H2 - a Thread/Zigbee-focused RISC-V with no Wi-Fi at all.
Around the module: an addressable RGB LED (GPIO8) and Boot/Reset buttons.
- 802.15.4 radio for Thread, Zigbee and Matter plus Bluetooth 5 (LE); no Wi-Fi
- No PSRAM
Where to buy
prices are typical street prices


