Reference
ESP8685-WROOM-03 Pinout
The complete pin reference for the ESP8685-WROOM-03: 11 castellated pads, 8 GPIOs, six test points, Wi-Fi and Bluetooth LE in 15.0 x 17.3 mm.
- Single-core RISC-V
- Wi-Fi + Bluetooth LE
- 8 GPIOs
- 11 castellated pads
Overview
The ESP8685-WROOM-03 is a very small Wi-Fi and Bluetooth LE module from Espressif: 15.0 x 17.3 x 2.8 mm, with a PCB antenna, 4 MB of flash and 11 castellated pads. It is built around the ESP8685 chip, a smaller sibling of the ESP32-C3 with the same 160 MHz RISC-V core and 400 KB of SRAM, but with only 8 GPIOs. This guide covers the bare module, not a development board, so you wire it up yourself.
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.
Chip and module
The ESP8685 has a 32-bit single-core RISC-V processor at up to 160 MHz, 384 KB of ROM, 400 KB of SRAM (16 KB of it cache), 2.4 GHz Wi-Fi 4 (802.11 b/g/n, up to 150 Mbps) and Bluetooth 5 LE with Bluetooth mesh. Its data sheet refers to the ESP32-C3 technical reference manual for the peripherals, which include UART, I2C, SPI, I2S, a 12-bit ADC, an LED PWM controller and a USB Serial/JTAG controller (the USB pins are not on the module).
| Part | What it does |
|---|---|
| ESP8685H4 chip | The processor, with 4 MB of quad SPI flash in the package |
| 40 MHz crystal | The clock of the chip, inside the shield can |
| PCB antenna | The Wi-Fi and Bluetooth antenna in the copper at the top of the module. Keep the area around it free of metal |
| RF shield can | Metal cover over the chip and the RF parts |
| 11 castellated pads | Pins 1 to 5 on one edge and pins 6 to 11 on the other, 2.0 mm pitch |
| Six test points | EN, TX, RX, GND, 3V3 and IO9 on the bottom, for programming without a carrier board |
| Exposed ground pad (EPAD) | The ground pad in the middle of the bottom, to be soldered to ground |
The module has no voltage regulator and no USB chip. You give it a clean 3.3 V and a serial connection yourself.
Getting started
The bare module is usually soldered to your own board or wired up directly, so you need a USB-to-serial adapter (3.3 V logic) and a way to pull GPIO9 low while the module resets.
idf.py flash.Hello World: blink an LED
The microcontroller equivalent of “Hello World”: GPIO1 toggles once a second, shown here in two environments. Wire an LED (with a resistor) to IO1. It has no JTAG or UART role, which makes it a calm pin to start with.
ESP-IDF (stable v6.1)
#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));
}
}
Arduino IDE
#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
Specifications for the ESP8685-WROOM-03-H4, from the Espressif data sheet v1.5.
Compute
| Chip | ESP8685H4 |
| CPU | Single-core 32-bit RISC-V, up to 160 MHz |
| ROM and SRAM | 384 KB and 400 KB (16 KB cache), 8 KB RTC SRAM |
| Flash | 4 MB quad SPI, in the chip package |
Radio
| Wi-Fi | 802.11 b/g/n, 2.4 GHz, 20 and 40 MHz, up to 150 Mbps |
| Bluetooth | 5 LE and Bluetooth mesh |
| Antenna | PCB antenna |
| Security | Secure boot, flash encryption |
Physical
| Supply voltage | 3.0 V to 3.6 V (typical 3.3 V), at least 0.5 A available |
| Temperature | -40 to 105 degrees Celsius |
| Size | 15.0 x 17.3 x 2.8 mm |
| Pins | 11 castellated pads, 6 test points and an exposed ground pad |
| GPIOs | Up to 8 (on the pads) |
| ADC | 12-bit: ADC1 on IO1, IO3 and IO4, ADC2 on IO5 |
Current consumption
| Wi-Fi transmit, 802.11b at 20 dBm | 340 mA peak |
| Wi-Fi receive | 84 to 86 mA |
| Modem-sleep, CPU running at 160 MHz | 23 mA typical |
| Light-sleep | 130 µA typical |
| Deep-sleep | 5 µA typical |
| Power off (EN low) | 1 µA typical |
Dimensions
The module is 15.0 mm wide, 17.3 mm long and 2.8 mm high. The pads sit on a narrower tab of 11.8 mm at the lower edge, five pads on the top side and six on the bottom side.
Source: the Espressif ESP8685-WROOM-03 data sheet, Module Dimensions. The pad pitch of 2.0 mm and the position of the shield can are read from the drawing of the module.
Pinout diagram
The module has 11 pads: five on the edge of the top side (pins 1 to 5) and six on the edge of the bottom side (pins 6 to 11). The pin numbers and names are those of the Espressif data sheet.
Bottom view
The bottom view shows pins 6 to 11, the six test points for programming and the exposed ground pad.
GPIO map at a glance
The same pins grouped by what they can do. Only eight GPIOs are on the pads, so the choice is small.
Power and reset
| Pin | Use |
|---|---|
| 3V3 (pin 6) | The only supply: 3.0 V to 3.6 V. The module has no regulator, so use a good 3.3 V supply that delivers at least 0.5 A |
| GND (pin 7) and EPAD | Ground. Solder the exposed ground pad to ground as well |
| EN (pin 1) | High turns the chip on, low turns it off. It is pulled up inside the module |
Espressif advises an RC delay on the EN pin for a stable power-up, typically 10 kΩ and 1 µF. That circuit is already built into the module, so only adjust it if your own power-up timing needs it.
The Wi-Fi transmitter draws up to 340 mA in short bursts. Put a capacitor of at least 10 µF close to the 3V3 pin, otherwise the module can reset when it transmits.
Boot mode and flashing
Three pins decide how the chip starts: GPIO2, GPIO8 and GPIO9. GPIO2 and GPIO8 are not on the module, so only GPIO9 (the test point IO9) is yours to use.
| Boot mode | GPIO2 | GPIO8 | GPIO9 |
|---|---|---|---|
| SPI boot (normal start) | 1 | any | 1 |
| Joint download boot (flashing) | 1 | 1 | 0 |
GPIO9 has a weak pull-up inside the chip, so it is high by default. To flash: pull IO9 to ground, reset the module with EN, release IO9, and upload over the serial pins. The same serial pins give the serial monitor.
| Function | Pin | Description |
|---|---|---|
| TXD0 | TX (GPIO21) | Module to PC (output) |
| RXD0 | RX (GPIO20) | PC to module (input) |
| EN | EN | Resets the chip |
| IO9 | IO9 test point (GPIO9) | Hold low at reset to enter download mode |
ADC and the missing DAC and touch
The chip has a 12-bit SAR ADC, no DAC and no touch pads.
| Feature | Pins | Notes |
|---|---|---|
| ADC1 | IO1 (ADC1_CH1), IO3 (ADC1_CH3), IO4 (ADC1_CH4) | Use these for analog sensors |
| ADC2 | IO5 (ADC2_CH0) | Espressif notes that ADC2 of some chip revisions is not operable, see the ESP32-C3 errata. Prefer ADC1 |
| DAC and touch | none | Use PWM and a filter for an analog output |
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
- EN switches the chip on and off. Do not leave it floating in your own design if you remove the internal pull-up logic.
- IO9 (GPIO9) is a strapping pin and only on the test point. Do not hold it low at power-up unless you want download mode.
- IO4, IO5, IO6 and IO7 are the default JTAG pins (MTMS, MTDI, MTCK, MTDO). They work as normal pins, but you lose them when you debug with an external JTAG probe.
- IO1 can be the pin for an optional 32 kHz crystal (XTAL_32K_N). It is a normal pin if you do not add one.
- RX and TX (GPIO20 and GPIO21) are UART0, used for flashing and the serial monitor. You can use them as normal pins, but not while you need the serial monitor.
- IO3, IO4, IO5, IO6 and IO7 have LED PWM, which is useful for dimming and RGB control.
GPIO quick reference
The GPIOs you can reach. None of them is input-only. Every pin is bidirectional digital I/O.
| GPIO | Special function | ADC | LED PWM | Boot state |
|---|---|---|---|---|
| 1 | GPIO1, XTAL_32K_N | ADC1_CH1 | – | Free |
| 3 | GPIO3 | ADC1_CH3 | Yes | Free |
| 4 | GPIO4, FSPIHD, MTMS | ADC1_CH4 | Yes | Free |
| 5 | GPIO5, FSPIWP, MTDI | ADC2_CH0 | Yes | Free |
| 6 | GPIO6, FSPICLK, MTCK | – | Yes | Free |
| 7 | GPIO7, FSPID, MTDO | – | Yes | Free |
| 9 (test point) | GPIO9, BOOT | – | – | Strapping |
| 20 (RX) | UART0 RX | – | – | Free |
| 21 (TX) | UART0 TX | – | – | Free |
Programming
Arduino IDE, PlatformIO and ESP-IDF all work. The data sheet of the module points to the ESP32-C3 manuals, so use the ESP32-C3 target: in the Arduino IDE choose ESP32C3 Dev Module, in ESP-IDF run idf.py set-target esp32c3. Set the flash size to 4 MB.
Read an analog sensor
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println(analogRead(3)); // IO3 is ADC1_CH3
delay(200);
}
I²C on two free pins
#include <Wire.h>
void setup() {
Serial.begin(115200);
Wire.begin(6, 7); // SDA = IO6, SCL = IO7
}
void loop() {}
I did not run these sketches on a module, they follow the Arduino ESP32 API. The board profile and flash size are my reading of the data sheet: check them against your own build.
Tips
- Use ADC1 for sensors. IO1, IO3 and IO4 are the reliable analog pins.
- Plan the pins early. Eight GPIOs go fast: UART for flashing, two for I²C, one for a button and one for an LED leaves little.
- Keep the antenna area free. No copper, ground pour or components under or next to the PCB antenna.
- Solder the exposed ground pad. It is the main ground and helps the module to stay cool.
- Add a program header. Bring out EN, IO9, TX, RX, 3V3 and GND on your own board, then you can flash it later.
Real gotchas
- It is a bare module. No regulator, no USB chip, no buttons. You need an adapter and a clean 3.3 V supply.
- GPIO9 is only on a test point. You cannot reach it from the edge pads, so plan a pad or a wire for it.
- Only 8 GPIOs. It has far fewer pins than an ESP32-C3-MINI-1.
- No Thread or Zigbee. There is no 802.15.4 radio.
- Supply spikes. A weak supply makes the module reset when Wi-Fi transmits. Add a capacitor of at least 10 µF close to 3V3.
- 3.3 V logic. All pins are 3.3 V only. Do not connect 5 V signals directly.
- Ordering code. The module in this guide is the H4 version with 4 MB of flash.
Compared with other modules
Common versions of these modules, with the facts that matter when you choose.
| ESP8685-WROOM-03 | ESP32-C3-MINI-1 | ESP32-WROOM-32D | |
|---|---|---|---|
| CPU | 1 x RISC-V, 160 MHz | 1 x RISC-V, 160 MHz | 2 x Xtensa LX6, up to 240 MHz |
| Wireless | Wi-Fi 4 and Bluetooth 5 LE | Wi-Fi 4 and Bluetooth 5 LE | Wi-Fi 4 and Bluetooth (Classic and LE) |
| GPIOs on the pads | 8 | 15 | up to 34 |
| Size | 15.0 x 17.3 x 2.8 mm | 13.2 x 16.6 x 2.4 mm | 18.0 x 25.5 x 3.1 mm |
Take the ESP8685-WROOM-03 for a very small, cheap module with only a few pins. For more pins see the ESP32-C3-MINI-1, for a dual-core module with Classic Bluetooth the ESP32-WROOM-32D.
What to build with it
- A small Wi-Fi or Bluetooth LE sensor that sleeps between readings.
- A wireless switch or relay controller on one of the pads.
- A battery-powered tracker or beacon that lives on deep sleep.
- A tiny RGB LED controller with the LED PWM pins.
Safety notes
Before you wire anything up
- Never go above 3.6 V on the 3V3 pin: that damages the chip.
- GPIO9 (IO9) is a strapping pin, check its state at power-up before you connect anything to it.
- This module runs at 3.3 V logic, a 5 V signal on any pin can damage the chip.
- Connect the exposed ground pad and the GND pad to the same ground as your adapter.
Conclusion
The ESP8685-WROOM-03 is a very small module with Wi-Fi, Bluetooth LE and a very low sleep current, at the price of only eight GPIOs and no help from a carrier board. Give it a clean 3.3 V, keep IO9 reachable for flashing, use ADC1 for sensors and keep the antenna area free. For the family overview see the ESP32 family explained.
Sources: the Espressif ESP8685-WROOM-03 data sheet v1.5 for the pins, the electrical values and the dimensions, and the drawing of the module for the pad layout and the test points. The Arduino and ESP-IDF target is my reading of the data sheet, which refers to the ESP32-C3 manuals.
More guides
Keep building.
From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.
All guides

