ESP32-C3-DevKitM-1 pinout
Espressif's small ESP32-C3 board with Wi-Fi, Bluetooth LE, a RISC-V core and an RGB LED. Breadboard friendly, 3.3 V logic.
The real app with a simulated ESP32-C3-DevKitM-1, running in your browser. No install, nothing to plug in.
At a glance
- Chip
- ESP32-C3 (ESP32-C3-MINI-1)
- Processor
- Single-core 32-bit RISC-V at 160 MHz, 400 KB SRAM, 4 MB flash in the chip package, Wi-Fi and Bluetooth LE
- Logic level
- 3.3 V. Not 5 V tolerant unless marked below.
- Flashing tool
- esptool
- Arduino board (FQBN)
- esp32:esp32:esp32c3
- Live pin view in BoardPilot
- Yes (diagnostic agent available)
Pins to avoid or use with care
Strapping pins: 2, 9, 8
Their level at reset changes how the board boots. Usually fine after boot.
USB serial: TX (GPIO21), RX (GPIO20)
Used for uploading and the serial monitor. Anything connected here can break uploads.
Good pins for LEDs, buttons and signals
4, 5, 6, 7, 10, 3, 0, 1
Default pins in Arduino
- I2C
- SDA = 8, SCL = 9. Any output-capable pins work with Wire.begin(sda, scl). Any GPIO can be I2C on the ESP32-C3. Arduino's defaults, GPIO 8 (SDA) and GPIO 9 (SCL), are strapping pins and GPIO 8 also drives the RGB LED.
- SPI
- MOSI = 6, MISO = 5, SCK = 4, CS = 7.
- Analog inputs
- 0, 1, 3, 4, 2 (0–3.3 V)
How to flash it
If uploading does not start, hold BOOT, press and release RST, then release BOOT.
All 30 pins
| Pin | GPIO | Chip pin | Functions | Notes |
|---|---|---|---|---|
| GND | — | GND | ||
| 3V3 | — | 3V3 | 3.3 V from the on-board regulator. You can feed 3.3 V in here instead of USB, but never both at once. | |
| 3V3 | — | 3V3 | Same 3.3 V rail as the other 3V3 pin. | |
| 2 | 2 | GPIO, ADC1_CH2, FSPIQ | Strapping pin: should be HIGH at reset. Do not let a part pull it LOW while the board starts. | |
| 3 | 3 | GPIO, ADC1_CH3 | ||
| GND | — | GND | ||
| RST | — | CHIP_PU | Reset. Pulling it LOW restarts the chip (same as the RST button). | |
| GND | — | GND | ||
| 0 | 0 | GPIO, ADC1_CH0, XTAL_32K_P | ||
| 1 | 1 | GPIO, ADC1_CH1, XTAL_32K_N | ||
| 10 | 10 | GPIO, FSPICS0 | ||
| GND | — | GND | ||
| 5V | — | 5V | 5 V from the micro-USB port. You can power the board here with 5 V instead of USB, but never both at once. | |
| 5V | — | 5V | Same 5 V rail as the other 5V pin. | |
| GND | — | GND | ||
| GND | — | GND | ||
| TX | 21 | GPIO21 | GPIO, U0TXD | USB serial TX through the CP2102N. Used for uploading and the serial monitor. |
| RX | 20 | GPIO20 | GPIO, U0RXD | USB serial RX through the CP2102N. Used for uploading and the serial monitor. |
| GND | — | GND | ||
| 9 | 9 | GPIO, I2C_SCL (default) | Strapping pin wired to the BOOT button: LOW at reset starts upload mode instead of your program. Arduino's default I2C SCL. | |
| 8 | 8 | GPIO, RGB_LED, I2C_SDA (default) | Strapping pin and the RGB LED data line. It must be HIGH at reset for uploading to work. Arduino's default I2C SDA. | |
| GND | — | GND | ||
| 7 | 7 | GPIO, FSPID, MTDO, SPI_CS (default) | ||
| 6 | 6 | GPIO, FSPICLK, MTCK, SPI_MOSI (default) | ||
| 5 | 5 | GPIO, ADC2_CH0, FSPIWP, MTDI, SPI_MISO (default) | ADC2 on the ESP32-C3 gives unstable readings (chip errata) and is not supported by ESP-IDF. Use GPIO 0 to 4 for analog. | |
| 4 | 4 | GPIO, ADC1_CH4, FSPIHD, MTMS, SPI_SCK (default) | ||
| GND | — | GND | ||
| 18 | 18 | GPIO, USB_D- | Native USB D- of the chip. This board's micro-USB port does not use it, so it is free, but it starts up in USB mode. | |
| 19 | 19 | GPIO, USB_D+ | Native USB D+ of the chip. This board's micro-USB port does not use it, so it is free, but it has a USB pull-up at start-up. | |
| GND | — | GND |
Questions
Which pins are I2C on the ESP32-C3-DevKitM-1?
SDA is 8 and SCL is 9 (the defaults of the Arduino Wire library). You can move I2C to other pins with Wire.begin(sda, scl).
Which ESP32-C3-DevKitM-1 pins should I avoid?
TX, RX (USB serial link).
Is the ESP32-C3-DevKitM-1 5 V tolerant?
No. The pins take at most 3.3 V. Use a level shifter or a voltage divider for 5 V signals.
Which pins can read analog voltage on the ESP32-C3-DevKitM-1?
0, 1, 3, 4, 2, from 0 to 3.3 V.
How do I upload code to the ESP32-C3-DevKitM-1?
In the Arduino IDE pick the board esp32:esp32:esp32c3 (core esp32:esp32). If uploading does not start, hold BOOT, press and release RST, then release BOOT.
Wiring guides for the ESP32-C3-DevKitM-1
Step-by-step wiring, voltage checks and test code for the most used parts:
BME280 BMP280 DHT22 DHT11 HC-SR04 SSD1306 OLED MPU6050 DS18B20 WS2812B LED strip SG90 servo Relay module HC-SR501 PIR LCD 1602 I2C INA219 VL53L0X BH1750 MAX30102 RC522 RFID NEO-6M GPS Capacitive soil moisture sensor ADS1115 TM1637 28BYJ-48 stepper L298N Potentiometer Push button LED Joystick module SD card module AHT20
Compare
ESP32-C3-DevKitM-1 vs ESP32 DevKit
Learn the basics
Lesson: What is a microcontroller? Lesson: Hardware basics for software developers Lesson: GPIO: pins in and out Pinout GPIO Logic level (HIGH and LOW) esptool
Check your wiring with BoardPilot
BoardPilot shows this board in 3D, flags risky pins as you wire, and flashes it safely with a backup first.
Download BoardPilotSources
- ESP32-C3-DevKitM-1 user guide, Header Block (J1, J3) and footnote on strapping pins GPIO2, 8, 9; Description of Components
- ESP32-C3-DevKitM-1 schematic V1 (2020-09-15), CP2102N-A02 bridge, micro-USB, RGB LED on GPIO8, BOOT on GPIO9
- ESP32-C3-DevKitM-1 dimensions (DXF V1 2020-09-15), Board outline 38.91 x 25.40 mm, header pad centres, component outlines
- ESP32-C3 Series Datasheet v2.4, 3 Boot Configurations (Tables 3-1, 3-3); 2.3 IO pins: GPIO18/19 USB_PU note
- ESP-IDF Programming Guide (ESP32-C3), ADC Oneshot: Hardware Limitations (ADC2 oneshot not supported, results not stable; see ESP32-C3 errata)
- arduino-esp32 variants/esp32c3/pins_arduino.h, SDA 8, SCL 9, SS 7, MOSI 6, MISO 5, SCK 4, TX 21, RX 20, PIN_RGB_LED 8
- Board data file and source notes on GitHub