ESP32 Development Boards
The ESP32 is a powerful dual-core Wi-Fi and Bluetooth microcontroller ideal for a wide range of IoT applications. With its fast processing, low-power modes, and extensive GPIO capabilities, it is widely used in smart home devices, wearables, robotics, and sensor networks.
It supports Bluetooth Classic and BLE, along with 802.11 b/g/n Wi-Fi. Developers can use the Arduino IDE, ESP-IDF, or MicroPython. Common variants include the ESP32-WROOM-32 and ESP32-WROVER (with PSRAM).
Specifications
Datasheet ↗Compute
Connectivity
Peripherals
Strapping & reserved pins
24 pins to knowSome pins are reserved for boot strapping, JTAG, USB and flash - misusing them can cause boot failures or programming issues. The category colours below match the table.
| Pin | Label | Why avoid | Category |
|---|---|---|---|
| IO0 | GPIO0 | Must be HIGH during boot for normal startup; if held LOW on reset, forces flash programming mode. | Strapping |
| IO1 | 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 |
| IO2 | GPIO2 | If driven HIGH on reset (while IO0 is LOW), selects an unsupported SDIO boot mode, causing boot failure. | Strapping |
| IO3 | 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 |
| IO4 | GPIO4 | Sampled at reset for boot config; should not be driven at boot (affects boot mode timing). | Strapping |
| IO5 | GPIO5 | Must be HIGH during boot; if pulled LOW at reset, alters SDIO slave timing and may prevent normal boot. | Strapping |
| IO6 | GPIO6 (Flash SCK) | Used for internal flash/PSRAM communication; not available for general GPIO. | Flash |
| IO7 | GPIO7 (Flash SD0) | Used for internal flash/PSRAM data; not available for general GPIO. | Flash |
| IO8 | GPIO8 (Flash SD1) | Used for internal flash/PSRAM data; not available for general GPIO. | Flash |
| IO9 | GPIO9 (Flash SD2) | Used by internal flash/PSRAM; typically not exposed on modules, avoid using as GPIO. | Flash |
| IO10 | GPIO10 (Flash SD3) | Used by internal flash/PSRAM; typically not exposed on modules, avoid using as GPIO. | Flash |
| IO11 | GPIO11 (Flash CMD) | Used by internal flash (chip select/command); not available for general use. | Flash |
| IO12 | 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 |
| IO13 | MTCK (GPIO13) | Used for JTAG debugging (TCK); avoid using as GPIO if JTAG is needed. | Other |
| IO14 | MTMS (GPIO14) | Used for JTAG debugging (TMS); driving it as GPIO may interfere with JTAG or produce spurious signals at boot. | Other |
| IO15 | MTDO (GPIO15) | Keep HIGH during boot (internal PU); if LOW on reset, bootloader log is silenced and boot mode may change. | Strapping |
| IO16 | GPIO16 | Connected to internal PSRAM on PSRAM-enabled modules; not usable as GPIO on those modules. | Flash |
| IO17 | GPIO17 | Connected to internal PSRAM on PSRAM-enabled modules; not usable as GPIO on those modules. | Flash |
| IO34 | GPIO34 | Cannot be used as output (no drive capability); only suitable for analog/digital input. | Other |
| IO35 | GPIO35 | Cannot be used as output; only suitable for input. | Other |
| IO36 | GPIO36 (SENSOR_VP) | Cannot be used as output; only suitable for input (e.g., analog read). | Other |
| IO37 | GPIO37 (SENSOR_CAPP) | Cannot be used as output; only suitable for input. | Other |
| IO38 | GPIO38 (SENSOR_CAPN) | Cannot be used as output; only suitable for input. | Other |
| IO39 | GPIO39 (SENSOR_VN) | Cannot be used as output; only suitable for input. | Other |
ESP32 modules & revisions
19 variants


















ESP32 boards
145 boards
















































































































































