ESP32-C3-DevKitC-02 Pinout & GPIO Reference

(Safe pins, ADC, IยฒC, SPI, UART, LED)

The ESP32-C3-DevKitC-02 is Espressifโ€™s small RISC-V dev board based on the ESP32-C3-WROOM-02 module (4 MB flash, Wi-Fi + BLE). Almost all useful GPIOs are broken out on the two headers J1 and J3.

This guide focuses on which pins you can safely use, and how to wire ADC, IยฒC, SPI, UART and the onboard RGB LED.


1. Board overview

Key features (DevKitC-02):

  • MCU: ESP32-C3 (32-bit single-core RISC-V @ up to 160 MHz)
  • Wireless: 2.4 GHz Wi-Fi (b/g/n) + BLE 5
  • Flash: 4 MB (SPI)
  • Power:
    • via Micro-USB
    • or 5 V pin
    • or 3V3 pin
  • Onboard USB-to-UART bridge (CP2102/CH340-type, depends on revision)
  • BOOT button (GPIO9) + RESET button (EN/CHIP_PU)
  • Onboard RGB LED on GPIO8

โš ๏ธ All I/O is 3.3 V only. Pins are not 5 V tolerant โ€“ only the 5 V pin is meant to see 5 V (goes to the regulator).


2. Pinout summary (J1 / J3 headers)

Left header (J1)

From bottom (USB side) to top (module side):

J1 PinNameDescription / Functions (main ones)
1GNDGround
23V33.3 V output (from on-board LDO)
33V33.3 V output (same rail)
4RSTEN / CHIP_PU โ€“ reset input (active HIGH enable)
5GNDGround
6GPIO4ADC1_CH4, FSPIHD, MTMS โ€“ good GPIO/ADC
7GPIO5ADC2_CH0, FSPIWP, MTDI โ€“ GPIO/ADC2 (Wi-Fi caveat)
8GPIO6FSPICLK, MTCK โ€“ good GPIO/SPI SCLK
9GPIO7FSPID, MTDO โ€“ good GPIO/SPI MOSI/CS
10GNDGround
11GPIO8Onboard RGB LED data, also strapping pin
12GPIO9BOOT button, strapping pin
135V5 V from USB (or input if powering externally)
145VSame 5 V rail
15GNDGround

Right header (J3)

From bottom (USB side) to top:

J3 PinNameDescription / Functions (main ones)
1GNDGround
2GPIO0ADC1_CH0, XTAL_32K_P โ€“ GPIO/ADC, also RTC 32 kHz
3GPIO1ADC1_CH1, XTAL_32K_N โ€“ GPIO/ADC, also RTC 32 kHz
4GPIO2ADC1_CH2, FSPIQ โ€“ GPIO/ADC, strapping
5GPIO3ADC1_CH3 โ€“ GPIO/ADC
6GNDGround
7GPIO10FSPICS0 โ€“ good GPIO / SPI CS
8GNDGround

3. Safe GPIOs (quick reference)

Safest general-purpose digital pins (no special boot quirks, broken out, not tied to buttons/LED):

GPIO0, GPIO1, GPIO3, GPIO4, GPIO6, GPIO7, GPIO10

They are perfect for: buttons, relays, MOSFET gates, SPI/IยฒC/UART signals, etc.

Pins that are usable but need care

  • GPIO2, GPIO8, GPIO9 โ€“ strapping pins
    • Their level at reset controls boot configuration.
    • On this board:
      • GPIO8 also drives the onboard RGB LED.
      • GPIO9 is wired to the BOOT button (pulled up, button to GND).
    • You can use them after boot, but avoid:
      • heavy loads
      • large capacitors
      • strong external pull-downs that might hold the pin low during reset.
  • GPIO5 (ADC2_CH0) โ€“ the only ADC2 pin.
    • ADC2 is shared with Wi-Fi; reading it while Wi-Fi is active can fail.
    • Best used for slow sensors or when Wi-Fi traffic is light.

Pins you should not use

  • RST / EN (CHIP_PU) โ€“ reset only, donโ€™t use as a GPIO.
  • 5V / 3V3 / GND โ€“ power pins only.
  • Internal flash pins (GPIO12โ€“17) and USB Dยฑ pins (18,19) are not broken out on this dev board.

4. ADC pins (analog inputs)

ESP32-C3 integrates two 12-bit SAR ADCs with 6 total channels:

  • ADC1 (recommended):
    • GPIO0, GPIO1, GPIO2, GPIO3, GPIO4
  • ADC2:
    • GPIO5

Tips:

  • Use GPIO0โ€“4 wherever possible, especially in Wi-Fi projects.
  • ADC is 12-bit (0โ€“4095). Max voltage depends on attenuation (up to ~2.5 V at 11 dB).
  • Add a small capacitor (e.g. 100 nF) from the ADC pin to GND for more stable readings.

Example โ€“ read a potentiometer on GPIO3 (ADC1_CH3):

const int ADC_PIN = 3; // GPIO3

void setup() {
  Serial.begin(115200);
  analogReadResolution(12);       // 0โ€“4095
}

void loop() {
  int raw = analogRead(ADC_PIN);
  float volts = raw * 3.3 / 4095.0;  // approx, depends on attenuation
  Serial.printf("ADC raw=%d  V=%.2f\n", raw, volts);
  delay(500);
}

5. Onboard RGB LED (GPIO8)

The DevKitC-02 includes a single addressable RGB LED (WS2812-style) on GPIO8.

  • Powered from 3.3 V.
  • Use a NeoPixel / FastLED library and set data pin = 8.
  • Remember: GPIO8 is also a strapping pin, but the onboard circuitry is designed not to break boot.

Example โ€“ blink the onboard LED (as plain digital, not RGB):

Some Arduino cores let you treat it as a normal output:

const int LED_PIN = 8;

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

For full RGB control, use Adafruit_NeoPixel or FastLED with 1 pixel on pin 8.


6. IยฒC pins (SDA / SCL)

The ESP32-C3โ€™s IยฒC peripheral is fully remappable using the GPIO matrix โ€“ you can use almost any free GPIO.

On this board, a safe and convenient IยฒC pair is:

  • SDA = GPIO4 (J1-6)
  • SCL = GPIO5 or GPIO6 (J1-7 or J1-8)

Avoid using GPIO9 as SCL (strapping + BOOT button) unless you really know what youโ€™re doing.

Example Arduino IยฒC setup:

#include <Wire.h>

#define SDA_PIN 4
#define SCL_PIN 6

void setup() {
  Wire.begin(SDA_PIN, SCL_PIN);
  Serial.begin(115200);
  Serial.println("I2C started on GPIO4 (SDA) / GPIO6 (SCL)");
}

7. SPI pins

ESP32-C3 has one general-purpose SPI controller (SPI2) in addition to the flash SPI. Pins can be remapped, but the FSPI-labelled pins are convenient defaults.

Recommended SPI mapping on DevKitC-02:

  • SCLK = GPIO6 (J1-8)
  • MOSI = GPIO7 (J1-9)
  • MISO = GPIO4 (J1-6)
  • CS = GPIO10 (J3-7)

This keeps all SPI signals on the left/right mid-section and avoids strapping pins.


8. UART (serial) pins

  • The main USB-serial connection uses the ESP32-C3โ€™s UART0 internally (TX/RX pins arenโ€™t broken out โ€“ they go straight to the USB-UART bridge).
  • For an extra UART (e.g. Serial1 in Arduino) you can map TX/RX to any free GPIO.

Typical mapping for a second UART:

  • TX = GPIO7
  • RX = GPIO6

9. Deep-sleep & wake-up notes

  • Any GPIO can generate interrupts while the chip is running.
  • For deep-sleep, ESP32-C3 uses specific RTC-capable pins (several of GPIO0โ€“5 can be used depending on mode). Details are in the ESP32-C3 datasheet, but a practical rule:
    • GPIO0โ€“5 are the best candidates for wake-up sources.

10. โ€œCheat sheetโ€ โ€“ what to use for what

  • Digital outputs / inputs (safe):
    • GPIO0, 1, 3, 4, 6, 7, 10
  • ADC inputs:
    • Best: GPIO0โ€“4
    • Extra (Wi-Fi-sensitive): GPIO5 (ADC2)
  • Onboard LED:
    • GPIO8 (WS2812 RGB)
  • IยฒC (suggested):
    • SDA: GPIO4
    • SCL: GPIO6 (or 5)
  • SPI (suggested):
    • SCLK: GPIO6, MOSI: GPIO7, MISO: GPIO4, CS: GPIO10
  • Boot-sensitive (be gentle):
    • GPIO2, GPIO8, GPIO9

Share your love