Guide
ESP8685-WROOM-03 Pinout
The complete pin reference for the ESP8685-WROOM-03 module: Espressif’s enhanced ESP32-C2-family chip in an 11-pin package, and the exact pins you can safely reuse.
- Single-core RISC-V
- Wi-Fi + Bluetooth LE + Mesh
- 6 exposed GPIOs
- 4 MB flash
Overview
The ESP8685-WROOM-03 is built around the ESP8685 chip, an enhanced version of the ESP8684 used in the ESPC2-02 guide, both are marketed by Espressif as “ESP32-C2” family parts. This module packs the chip, flash, and RF components into an 11-pin package with an exposed ground pad underneath.
No 802.15.4 radio on this chip, so Thread and Zigbee aren’t possible here.
Getting started
This module is usually wired up directly rather than plugged into a ready-made development board, so you’ll need a USB-to-serial adapter (3.3V) and a way to pull GPIO9 low for flashing.
Hello World: blink an LED
The microcontroller equivalent of “Hello World”: GPIO1 toggles once a second. Wire an LED (with a resistor) to GPIO1, the only exposed pin here with no PWM/JTAG/ADC role competing for it.
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#define LED_PIN GPIO_NUM_1
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));
}
}
#define LED_PIN 1
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
delay(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 specifications for the ESP8685-WROOM-03 module.
Compute
| Chip | ESP8685 |
| CPU | Single-core RISC-V, up to 160 MHz |
| ROM / SRAM | 384 KB / 400 KB |
| Flash | 4 MB, embedded in the module package |
Radio
| Wi-Fi | 802.11 b/g/n, 2.4 GHz, up to 150 Mbps |
| Bluetooth | 5 LE + Mesh |
| ADC | 12-bit, 5 channels on ADC1, 1 on ADC2 |
Physical
| Operating voltage | 3.0V – 3.6V |
| Dimensions | 15 × 17.3 × 2.8 mm |
| GPIOs | Up to 8 on the chip, 6 exposed on this module |
Pinout diagram
The 11-pin layout of the ESP8685-WROOM-03 module.
GPIO quick reference
| GPIO | Special function | Boot state |
|---|---|---|
| 1 | ADC1_CH1, XTAL_32K_N | Free |
| 3 | ADC1_CH3, onboard LED PWM | Free |
| 4 | ADC1_CH4, SPI FSPIHD, JTAG MTMS, onboard LED PWM | Free |
| 5 | ADC2_CH0, SPI FSPIWP, JTAG MTDI, onboard LED PWM | Free |
| 6 | SPI FSPICLK, JTAG MTCK, onboard LED PWM | Free |
| 7 | SPI FSPID, JTAG MTDO, onboard LED PWM | Free |
| 9 | — | Strapping (boot mode) |
| 20 | UART0 RX (default) | Free |
| 21 | UART0 TX (default) | Free |
Flashing pins (UART0)
Used by a USB-to-serial adapter to upload firmware, this module has no onboard one.
| Function | Pin | Description |
|---|---|---|
| TXD0 | GPIO21 | ESP8685 → PC (output) |
| RXD0 | GPIO20 | PC → ESP8685 (input) |
| EN | EN pin | Resets the chip |
| GPIO9 | — | Boot mode strap, LOW = flash mode (Joint 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.
- Wi-Fi transmit bursts can draw ~340 mA peak, undersized power regulation is the most common cause of random resets.
- This module runs at 3.3V logic, a 5V signal on any pin can damage the chip.
More guides
Keep building.
From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.
All guides