π ESP32 Pinout Cheat Sheet
Quick reference card for ESP32 GPIO, peripherals, and specifications. Print this or save as PDF.
β Safe
β Caution
β Avoid
Note: All pins are 3.3V. NOT 5V tolerant.
π GPIO Pin Reference
| GPIO | Function | Safe? |
|---|---|---|
| 0 | Touch T1, XCLK | Strapping |
| 1 | UART TX | Safe |
| 2 | Touch T2, LED | Strapping |
| 3 | UART RX | Safe |
| 4 | Touch T0 | Safe |
| 5 | VSPI SS | Strapping |
| 12 | Touch T5, JTAG | Strapping |
| 13 | Touch T4 | Safe |
| 14 | Touch T6 | Safe |
| 15 | Touch T3 | Strapping |
| 16 | UART2 RX | Safe |
| 17 | UART2 TX | Safe |
| 18 | VSPI CLK | Safe |
| 19 | VSPI MISO | Safe |
| 21 | I2C SDA | Safe |
| 22 | I2C SCL | Safe |
| 23 | VSPI MOSI | Safe |
| 25 | DAC1 | Safe |
| 26 | DAC2 | Safe |
| 27 | Touch T7 | Safe |
| 32 | Touch T9, RTC | Safe |
| 33 | Touch T8, RTC | Safe |
| 34 | ADC1_CH6 | Input only |
| 35 | ADC1_CH7 | Input only |
| 36 | ADC1_CH0 | Input only |
| 37 | ADC1_CH1 | Input only |
| 38 | ADC1_CH2 | Input only |
| 39 | ADC1_CH3 | Input only |
π ADC Channels
| ADC | Channels | Pins |
|---|---|---|
| ADC1 | 8 (CH0βCH7) | GPIO36,37,38,39,32,33,34,35 |
| ADC2 | 10 (CH0βCH9) | GPIO4,0,2,15,13,12,14,27,25,26 |
β οΈ ADC2 conflicts with Wi-Fi. Use ADC1 when Wi-Fi is active.
π Communication Buses
| Bus | Default Pins |
|---|---|
| I2C | SDA=21, SCL=22 |
| VSPI | MOSI=23, MISO=19, CLK=18, SS=5 |
| HSPI | MOSI=13, MISO=12, CLK=14, SS=15 |
| UART0 | TX=1, RX=3 |
| UART2 | TX=17, RX=16 |
ποΈ Touch Sensors
| Channel | GPIO |
|---|---|
| T0βT9 | 4,0,2,15,13,12,14,27,33,32 |
π΅ DAC & PWM
| Feature | Details |
|---|---|
| DAC | 2 Γ 8-bit on GPIO25, GPIO26 |
| PWM | 16 channels, any GPIO, 1β40 MHz, 1β16 bit |
β‘ Power Specs
| Metric | Value |
|---|---|
| VCC | 2.3β3.6V (3.3V nominal) |
| Max GPIO current | 40 mA per pin (total 200 mA) |
| Active current | 75β160 mA |
| Deep Sleep | ~5 Β΅A |
β οΈ Strapping Pins β Critical!
These pins determine boot mode. Connecting them incorrectly can prevent the ESP32 from booting.
| Pin | Function | Boot Mode |
|---|---|---|
| GPIO0 | Boot mode select | HIGH = normal, LOW = flash download |
| GPIO2 | Boot mode confirm | Must be LOW (or floating) during boot |
| GPIO5 | CS of VDD_SDIO | Determines flash voltage (3.3V vs 1.8V!) |
| GPIO12 | VDD_SDIO voltage | HIGH = 1.8V flash (β οΈ can damage 3.3V flash) |
| GPIO15 | JTAG + boot | Must be HIGH for normal boot |
π Deep Sleep & RTC GPIO
Wake Sources
- Timer β Wake after N microseconds
- ext0 β Wake on 1 RTC GPIO level
- ext1 β Wake on any of 8 RTC GPIO
- Touch β Wake on capacitive touch
- ULP β Wake via co-processor condition
RTC GPIO Pins (active in sleep)
| RTC GPIO | GPIO |
|---|---|
| RTC_GPIO0β5 | 36,37,38,39,34,35 |
| RTC_GPIO6β17 | 25,26,33,32,4,0,2,15,13,12,14,27 |
π‘ ESP32 Variants Quick Specs
| Model | CPU | GPIO | ADC | Wireless | Unique Feature |
|---|---|---|---|---|---|
| ESP32 | 2Γ Xtensa LX6 @ 240 MHz | 34 | 18ch 12-bit | Wi-Fi + BT 4.2 | Touch, DAC, CAN, Hall |
| ESP32-S3 | 2Γ Xtensa LX7 @ 240 MHz | 45 | 20ch 12-bit | Wi-Fi + BT 5.0 | USB OTG, AI accelerator |
| ESP32-C3 | 1Γ RISC-V @ 160 MHz | 22 | 6ch 12-bit | Wi-Fi + BT 5.0 | Lowest cost, RISC-V |
| ESP32-S2 | 1Γ Xtensa LX7 @ 240 MHz | 43 | 20ch 12-bit | Wi-Fi only | USB OTG, no BT |
| ESP32-C6 | 1Γ RISC-V @ 160 MHz | 30 | 8ch 12-bit | Wi-Fi 6 + BT 5.0 + 802.15.4 | Matter, Thread, Zigbee |
| ESP32-H2 | 1Γ RISC-V @ 96 MHz | 26 | 8ch 12-bit | BT 5.0 + 802.15.4 | Ultra-low-power, no Wi-Fi |
π Useful Math & Constants
| Calculation | Formula |
|---|---|
| ADC to voltage (0 dB atten) | V = (raw / 4095) Γ 1.1V |
| ADC to voltage (11 dB atten) | V = (raw / 4095) Γ 3.3V |
| PWM frequency | f = 80,000,000 / (2^resolution Γ divider) |
| PWM duty (percent) | duty = (percent / 100) Γ (2^resolution) |
| UART baud rate | Typical: 9600, 57600, 115200, 921600 |
π§ Interactive ESP32 Pinout Tool
Search and filter all 38 GPIO pins with real-time conflict warnings.
Open Interactive Pinout