Skip to content
My Account

Guide

ESP32-C2 (ESPC2-02) Pinout

The complete pin reference for the ESPC2-02 module: Espressif’s smallest, lowest-cost Wi-Fi and Bluetooth chip, and the exact pins you can safely reuse.

  • Single-core RISC-V
  • Wi-Fi + Bluetooth LE
  • 9 exposed GPIOs
  • 2–4 MB flash
ESP32-C2 (ESP8684) chip, top marking
No ratings yet, be the first.

Overview

This guide covers the ESPC2-02 module, built around Espressif’s ESP32-C2 chip. The chip itself is manufactured and marked as ESP8684, ESP32-C2 is Espressif’s marketing name for the same silicon. It’s Espressif’s smallest and lowest-cost Wi-Fi chip, aimed at simple connected devices rather than complex projects, so this compact module only exposes a subset of the chip’s GPIOs.

No 802.15.4 radio on this chip, so Thread and Zigbee aren’t possible here. (Only badges for protocols this exact chip actually supports are shown, no Wi-Fi 6/7 either: this is 802.11 b/g/n.)

Only nine pins exposed The bare chip has 14 usable GPIOs, this compact module only breaks out 9 of them plus a separate BOOT pad.
One ADC pin only Of the pins broken out here, only GPIO4 doubles as an analog input (ADC1_CH4).
Flash built in The flash memory is embedded inside the chip package, so no GPIOs are reserved for an external flash bus.

Getting started

This module is usually wired up directly rather than plugged into a ready-made development board, so the three steps below assume you have a USB-to-serial adapter (or a carrier board that includes one). See “Flashing pins” further down for exactly which pins that adapter needs.

1. What you need A USB-to-serial adapter (3.3V), a computer, and a pull-down button or jumper wire to pull GPIO9 low at reset for flashing.
2. Install the software Install the free Arduino IDE, then add ESP32 support via Boards Manager (search “esp32”, by Espressif Systems), or install ESP-IDF for the full toolchain.
3. Upload your first sketch Select a generic ESP32-C2 board, pull GPIO9 low, tap EN to reset into download mode, then click Upload.

Hello World: blink an LED

The microcontroller equivalent of “Hello World”: GPIO18 toggles once a second, shown here in two different environments. Wire an LED (with a resistor) to GPIO18, a plain general-purpose pin with no other job on this module.

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"

#define LED_PIN GPIO_NUM_18

void app_main(void)
{
    gpio_reset_pin(LED_PIN);
    gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);

    while (1) {
        gpio_set_level(LED_PIN, 1);
        vTaskDelay(pdMS_TO_TICKS(1000));
        gpio_set_level(LED_PIN, 0);
        vTaskDelay(pdMS_TO_TICKS(1000));
    }
}

ESP-IDF: build and flash with idf.py build flash monitor. Arduino IDE: install ESP32 board support first, see “Getting started” above.

Specifications

Official Espressif specifications for the ESP32-C2 (ESP8684) chip.

Compute

ChipESP8684 (ESP32-C2)
CPUSingle-core RISC-V, up to 120 MHz
SRAM272 KB (16 KB reserved for cache)
Flash2 or 4 MB, embedded in the chip package

Radio

Wi-Fi802.11 b/g/n, 2.4 GHz
Bluetooth5.3 LE
AntennaOn-board PCB (module-dependent)

Physical

Operating voltage3.0V – 3.6V
Module size15.0 × 17.3 × 2.8 mm
Operating temperature−40°C – +105°C
GPIOs14 on the chip, 9 exposed on this module
ESP32-C2 module dimensioned front, side and bottom view: 15.0 by 17.3 mm, 2.8 mm thick, PCB antenna, RF shield can, 11 castellated pads and a boot pad
The generic ESP32-C2 module footprint: 15.0 × 17.3 × 2.8 mm with 11 castellated pads. Same size as the ESP8684-WROOM-03 and ESP8685-WROOM-03.

Pinout diagram

The 12-pad layout of the ESPC2-02 module. This is a compact breakout, not every GPIO on the underlying chip is brought out to a pad.

ESPC2-02 pinout diagram

GPIO quick reference

This chip only has ADC1, no ADC2, DAC or capacitive touch peripheral.

GPIO Special function ADC Boot state
4 JTAG MTMS, ADC1_4, SPI FSPIHD ADC1 Free
5 JTAG MTDI, SPI FSPIWP Free
6 JTAG MTCK, SPI FSPICLK Free
7 JTAG MTDO, SPI FSPID Free
9 Strapping
10 SPI FSPICS0 Free
18 Free
19 UART0 RX (default) Free
20 UART0 TX (default) Free
Strapping pins GPIO8 (not exposed), GPIO9
JTAG (shared) MTMS: GPIO4, MTDI: GPIO5, MTCK: GPIO6, MTDO: GPIO7
Default UART TX: GPIO20, RX: GPIO19
Only analog input GPIO4 (ADC1_CH4)

Flashing pins (UART0)

Used by a USB-to-serial adapter to upload firmware, this module has no onboard one.

Function Pin Description
TXD0 GPIO20 ESP32-C2 → PC (output)
RXD0 GPIO19 PC → ESP32-C2 (input)
EN EN pin Resets the chip
BOOT GPIO9 Hold low at reset to enter UART download mode

Safety notes

Before you wire anything up

  • GPIO9 is a strapping pin that sets the boot mode, check its state before using it as an output.
  • GPIO4–GPIO7 double as the JTAG interface, fine to use as plain GPIOs, but avoid them if you ever need hardware debugging.
  • The flash memory is embedded inside the chip package, none of the exposed GPIOs are reserved for it.
  • This module runs at 3.3V logic, a 5V signal on any pin can damage the chip.
Advertisement

More guides

Keep building.

From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.

All guides