Skip to content
My Account

Reference

NodeMCU-ESP32-C2 Pinout

The complete pin reference for the NodeMCU-ESP32-C2: an ESP8684-WROOM-02 board with a USB-C port and CH340C, 13 usable GPIOs, Wi-Fi and Bluetooth LE.

  • Single-core RISC-V
  • Wi-Fi + Bluetooth LE
  • 13 GPIOs
  • USB-C with CH340C
No ratings yet, be the first.

Overview

The NodeMCU-ESP32-C2 is a NodeMCU-style development board on a purple PCB, built around the ESP8684-WROOM-02 module with 4 MB of flash. It has a USB-C port with a CH340C USB-to-serial chip, an AMS1117 3.3 V regulator, EN and IO9 buttons and two rows of 15 pins, 22.86 mm apart. It is a different and larger module than the bare ESPC2-02 module in the ESP32-C2 guide: the same chip underneath, but with more pins broken out and a complete programming circuit on the board.

No 802.15.4 radio on this chip, so Thread and Zigbee are not possible here: that needs an ESP32-C6 or H2 instead. Only badges for what this exact chip supports are shown.

Low cost, low powerA single-core RISC-V chip at up to 120 MHz with 272 KB of SRAM: fine for sensors, switches and other simple connected devices, not for anything heavy.
Programmer on the boardThe CH340C USB-to-serial chip means one USB-C cable is enough to flash and to read the serial monitor.
13 pins to useThe chip has 14 GPIOs and 13 are on the header. GPIO8 is not broken out.

System-on-chip and board

The ESP32-C2 (marketed name for the ESP8684) is Espressif’s low-cost single-core 32-bit RISC-V chip, up to 120 MHz, with 2.4 GHz Wi-Fi 4 (802.11 b/g/n) and Bluetooth 5 LE. It has 272 KB of SRAM, a 12-bit ADC with up to five channels, secure boot and flash encryption. It has no USB controller, no touch pads and no DAC, which is why the board needs a USB-to-serial chip.

PartWhat it does
ESP8684-WROOM-02Module with the chip, 4 MB flash, crystal and PCB antenna in one shielded package
CH340CUSB-to-serial chip, connected to UART0 (GPIO20 TX, GPIO19 RX). Printed WCH CH340C
AMS1117 (3.3 V)Linear regulator that makes 3.3 V from the 5 V of USB or the VIN pin
USB-C connectorPower, flashing and the serial monitor
EN buttonPulls the EN pin low and resets the chip
IO9 buttonPulls GPIO9 low: the BOOT button for download mode
Two pin rows15 pins per row at 2.54 mm pitch: 13 GPIOs, EN, VIN, two 3V3, an NC pin, the CH340C RX and TX and several GND pins
Four mounting holesAbout 2.9 mm, in the corners of the board

Getting started

The CH340C needs a driver on some systems (mainly older Windows versions). If the board does not show up as a serial port, install the CH340 driver before anything else.

1. What you needA USB-C cable that carries data and a computer. No extra power supply needed, USB power is enough.
2. Install the softwareInstall the free Arduino IDE, then add ESP32 support via Boards Manager (search “esp32”, by Espressif Systems). Choose ESP32C2 Dev Module as the board.
3. Upload your first sketchPick the port and click Upload. If it hangs on “Connecting…”, hold the IO9 button, tap EN, then release IO9.

Specifications

Specifications for the NodeMCU-ESP32-C2 board and its ESP8684 chip.

Compute

ChipESP32-C2 (ESP8684)
CPUSingle-core 32-bit RISC-V, up to 120 MHz
SRAM272 KB (16 KB of it is cache)
Flash4 MB, in the module

Radio

Wi-Fi802.11 b/g/n, 2.4 GHz
Bluetooth5 LE
USBNone on the chip, the CH340C does USB to serial
SecuritySecure boot, flash encryption

Physical

Operating voltage3.3 V
Board sizeabout 25.4 x 48.1 mm (read from the drawing)
GPIOs14 on the chip, 13 on the header
ADC12-bit, 5 channels on GPIO0 to GPIO4
Touch and DACNone

Dimensions

The two pin rows are 22.86 mm apart and each has 15 pins on a 2.54 mm pitch, 35.56 mm from the first to the last pin. The board is about 25.4 x 48.1 mm with a mounting hole in each corner.

NodeMCU-ESP32-C2 dimensions: about 25.4 by 48.1 mm, two rows of 15 pins 22.86 mm apart, four mounting holes

These sizes are read from the drawing of the board, using the 2.54 mm pin pitch as the scale, and not measured on a board. Check them with a caliper before you design an enclosure.

Pinout diagram

The component side with every header pin, its GPIO number and its functions: ADC channel, JTAG, the default SPI pins of the Arduino core, UART0 and the lines of the CH340C. The pin names are as printed on the board.

NodeMCU-ESP32-C2 pinout diagram, component side, with the GPIO, ADC, JTAG, SPI and UART functions of every header pin

Underside

The underside is the same board seen from the other side. The left and right rows are mirrored compared with the component side.

Underside of the NodeMCU-ESP32-C2 with the function of every pin

The default SPI pins (SS 7, MOSI 6, MISO 5, SCK 4) and the UART pins (TX 20, RX 19) come from the ESP32C2 variant in the Arduino ESP32 core. The ADC, JTAG and strapping functions come from the ESP8684 data sheet.

GPIO map at a glance

The same pins grouped by what they can do. Only GPIO9 (BOOT button) needs care at power-up on this board, GPIO8 is not on the header.

NodeMCU-ESP32-C2 GPIO map grouped by ADC, strapping, JTAG and SPI, UART0 and free pins

Power

The board runs from the USB-C port. The AMS1117 regulator makes 3.3 V from the 5 V.

PinUse
VIN5 V input to the regulator. Use it to power the board without a USB cable, or as a 5 V output while USB is connected
3V3The 3.3 V rail for the chip and for sensors. Two pins, one on each row. Do not feed them while the board is also powered from USB or VIN
GNDSeveral ground pins on both rows
ENThe reset input of the chip, also wired to the EN button
NCNot connected. Do not wire anything to it

Use only one power source at a time: the USB-C port, the VIN pin or the 3V3 pins. A linear regulator wastes the voltage difference as heat, so do not run motors, servos or LED strips from the board’s 3.3 V. Give them their own supply with a shared ground.

USB-C, flashing and reset

The ESP32-C2 has no USB controller, so the single USB-C port goes to a CH340C USB-to-serial chip. That chip is connected to UART0.

FunctionPinDescription
UART0 TXGPIO20 (TX0)Chip to CH340C, to your PC
UART0 RXGPIO19 (RX0)From the CH340C, from your PC
IO9 buttonGPIO9Hold low at reset to enter download mode
EN buttonENReset the chip
CH340C RX and TXHeader pins RX and TXThe serial lines of the CH340C itself, brought out next to the chip

If the upload does not start: hold the IO9 button, tap EN, then release IO9. Do not hold IO9 low outside flashing: it forces the board back into the bootloader instead of running your program.

ADC and the missing DAC and touch

The ESP32-C2 has one 12-bit ADC with five channels, no DAC and no touch pads.

FeaturePinsNotes
ADC1GPIO0 to GPIO4Five channels (ADC1_CH0 to CH4). Use these for analog sensors
DACnoneUse PWM and a filter for an analog output
TouchnoneUse a dedicated touch IC or another chip (ESP32-S2 or S3) for capacitive touch

The ADC input range is small with the default attenuation. Use a voltage divider for signals above the range and never put more than 3.3 V on any pin.

Pins with a second job

  • GPIO9 is a strapping pin and the BOOT button (printed IO9). Do not pull it low at power-up unless you want download mode.
  • GPIO8 is the second strapping pin of the chip and the Arduino default for I²C SDA, but it is not on this header. Choose other pins for I²C, for example GPIO6 and GPIO7.
  • GPIO4, GPIO5, GPIO6 and GPIO7 are the default JTAG pins (MTMS, MTDI, MTCK, MTDO) and the default SPI pins (SCK, MISO, MOSI, SS) of the Arduino core. They work as normal pins, but you lose them when you debug with an external JTAG probe.
  • GPIO19 and GPIO20 are UART0 RX and TX, used by the CH340C and the serial monitor. You can use them as normal pins, but not while you need the serial monitor.
  • GPIO10 and GPIO18 have no other job on this board.

GPIO quick reference

The 13 GPIOs on the header. GPIO8 and the flash pins are not available. None of the GPIOs is input-only.

GPIOSpecial functionADCBoot state
0–ADC1_CH0Free
1–ADC1_CH1Free
2FSPIQADC1_CH2Free
3–ADC1_CH3Free
4JTAG MTMS, SPI SCK (Arduino default)ADC1_CH4Free
5JTAG MTDI, SPI MISO (Arduino default)–Free
6JTAG MTCK, SPI MOSI (Arduino default)–Free
7JTAG MTDO, SPI SS (Arduino default)–Free
9BOOT button, strapping–Strapping
10FSPICS0–Free
18––Free
19UART0 RX (CH340C)–Free
20UART0 TX (CH340C)–Free

Flashing pins

Used by the onboard CH340C USB-to-serial chip to upload firmware. In case you connect your own adapter, these are the pins involved.

FunctionPinDescription
TXD0GPIO20Board to PC (output)
RXD0GPIO19PC to board (input)
ENEN buttonResets the chip
IO9GPIO9 (IO9 button)Hold low at reset to enter download mode

Programming

Arduino IDE, PlatformIO and ESP-IDF all work. In the Arduino IDE choose ESP32C2 Dev Module. In ESP-IDF set the target to esp32c2.

I²C scan on GPIO6 and GPIO7

#include <Wire.h>

void setup() {
  Serial.begin(115200);
  Wire.begin(6, 7);        // SDA = GPIO6, SCL = GPIO7 (GPIO8, the Arduino default SDA, is not on the header)
  delay(2000);
  for (uint8_t a = 1; a < 127; a++) {
    Wire.beginTransmission(a);
    if (Wire.endTransmission() == 0) Serial.printf("Found 0x%02Xn", a);
  }
}

void loop() {}

Read an analog sensor

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println(analogRead(1));   // GPIO1 is ADC1_CH1
  delay(200);
}

I did not run these two sketches on a board, they follow the Arduino ESP32 API. Start with the blink sketch: it needs only an LED.

Tips

  • Use ADC1 for sensors. GPIO0 to GPIO4 are the analog pins.
  • Move I²C away from the Arduino default. GPIO8 is not on the header, use GPIO6 and GPIO7 or other free pins.
  • Keep GPIO9 free. Do not wire anything to the IO9 button pin that pulls it low at power-up.
  • Check the fit before you use a breadboard. The pin rows are 22.86 mm apart, the same as other NodeMCU boards, but check how many holes remain next to the pins.
  • Keep it simple. This is a small chip, use it for sensors and switches and not for heavy processing.

Real gotchas

  • GPIO8 is not on the header. The Arduino default for I²C SDA is GPIO8, so Wire.begin() without arguments does not reach a pin.
  • No USB on the chip. All serial traffic goes through the CH340C and UART0. The chip itself has no native USB.
  • Two pairs of RX and TX. TX0 and RX0 are the chip’s UART0 pins, RX and TX next to the CH340C are the lines of the USB chip. Do not mix them up.
  • No touch pads and no DAC. The ESP32-C2 has neither.
  • No Thread or Zigbee. There is no 802.15.4 radio.
  • Driver on older Windows. The CH340C may need a driver.
  • 3.3 V logic. All GPIOs are 3.3 V only. Do not connect 5 V signals directly, and keep the VIN pin away from the GPIOs.
  • Linear regulator. The AMS1117 gets warm when you draw a lot of current. Power motors, servos and strips from their own supply.

Compared with other boards

Common versions of these chips, with the facts that matter when you choose.

ESP32-C2 (this board)ESP32-C3ESP32-S3ESP8266
CPU1 x RISC-V, 120 MHz1 x RISC-V, 160 MHz2 x Xtensa LX7, 240 MHz1 x Tensilica L106, 80 MHz
WirelessWi-Fi 4 and Bluetooth 5 LEWi-Fi 4 and Bluetooth 5 LEWi-Fi 4 and Bluetooth 5 LEWi-Fi 4
Native USBNo (CH340C on the board)USB Serial/JTAGOTGNo
GPIOs on the chip14224517

Take this board for the cheapest ESP32 with Wi-Fi and Bluetooth LE and the NodeMCU footprint. For more pins, memory and a native USB port see the AI-C3 or the AI-S3.

What to build with it

  • A Wi-Fi or Bluetooth LE sensor node with an analog or I²C sensor.
  • A wireless switch or relay controller on a spare GPIO.
  • A battery-friendly sensor that sleeps between readings.
  • A learning board for the NodeMCU footprint with a cheap RISC-V chip.

Safety notes

Before you wire anything up

  • GPIO9 (the IO9 button) is a strapping pin, check its boot-time state before using it as an output.
  • GPIO19 and GPIO20 are UART0, used by the CH340C: avoid reassigning them while you need the serial monitor.
  • This board runs at 3.3 V logic, a 5 V signal on any pin can damage the chip.
  • Use only one power source at a time: the USB-C port, the VIN pin or the 3V3 pins.

Conclusion

The NodeMCU-ESP32-C2 is a small, cheap board with 13 usable GPIOs, Wi-Fi and Bluetooth LE and a complete USB-C programming circuit. Keep analog sensors on GPIO0 to GPIO4, move I²C to GPIO6 and GPIO7 and use the IO9 and EN buttons when an upload does not start. For the family overview see the ESP32 family explained.

Sources: the pin names and layout from the drawing of the board, the ESP8684 data sheet, the ESP32C2 variant in the Arduino ESP32 core and the ESP-IDF documentation. The board size is read from the drawing, the flash size (4 MB) and the roles of the two serial pin sets are as given by the owner of the board.

Advertisement
All guides

More guides

Keep building.

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

All guides