ESP32 GPIO Reference
ESP32 GPIO Reference
ESP32 GPIO (General Purpose Input/Output) pins provide the electrical interface between the processor and external hardware. Although many GPIO pins can be configured for several functions, some pins may be reserved for flash memory, USB, Ethernet, boot configuration, or other onboard hardware.
GPIO assignments vary significantly between ESP32 processor families and development boards. A pin that is suitable on one ESP32 device may be unavailable, reserved, or used differently on another.
This page serves as the central index for ESP32 GPIO information used in DIY holiday lighting applications.
Before Using a GPIO Pin
Always verify:
- The exact ESP32 processor family
- The exact processor or module
- The development board pinout
- The board schematic
- Firmware GPIO support
- Boot and startup restrictions
- Onboard hardware connected to the pin
Development boards that look nearly identical may use different processors or expose different GPIO pins.
GPIO Reference Pages
| Processor Family | GPIO Reference | Notes |
|---|---|---|
| Original ESP32 | Original ESP32 GPIO Reference | Includes commonly used ESP32-WROOM and ESP32-WROVER based boards. |
| ESP32-S Series | ESP32-S Series GPIO Reference | Covers ESP32-S2, ESP32-S3, and future S Series devices. |
| ESP32-C Series | ESP32-C Series GPIO Reference | Covers ESP32-C2, ESP32-C3, ESP32-C5, and ESP32-C6 devices. |
| ESP32-H Series | ESP32-H Series GPIO Reference | Covers low-power Thread, Zigbee, and IEEE 802.15.4 devices. |
| ESP32-P Series | ESP32-P Series GPIO Reference | Covers high-performance display and multimedia processors. |
GPIO Categories
| Category | Description |
|---|---|
| General Purpose | Suitable for normal digital input and output applications. |
| Input Only | Can be used as an input but cannot drive an output. |
| Boot or Strapping Pin | Read during startup and may affect boot mode or processor configuration. |
| Reserved | Used internally for flash memory, PSRAM, or other essential hardware. |
| Special Function | Shared with USB, Ethernet, JTAG, UART, ADC, DAC, touch sensing, or other peripherals. |
| Board-Specific | Connected to onboard LEDs, buttons, displays, Ethernet hardware, or other components. |
Pixel Output Considerations
For pixel lighting applications, a GPIO pin should normally:
- Support digital output
- Not be reserved for flash memory or PSRAM
- Not interfere with processor startup
- Not be permanently connected to onboard hardware
- Be supported by the selected firmware
- Be physically exposed on the development board
Some boot or serial pins may still be usable after startup, but they should be selected carefully.
Firmware Considerations
Firmware support may place additional restrictions on available GPIO pins.
See:
A GPIO supported by the processor may not necessarily be available as a pixel output in every firmware version.
Development Board Considerations
The processor datasheet shows the GPIO capabilities of the chip, but a development board may not expose every pin.
A development board may also use GPIO pins for:
- USB communication
- Status LEDs
- Boot and reset buttons
- Ethernet
- Displays
- Battery monitoring
- Flash memory
- PSRAM
- Camera interfaces
See ESP32 Development Boards for additional information.