ESP32-S3-WROOM

Freenove development board built on the ESP32-S3-WROOM-1 module: a dual-core Wi-Fi and Bluetooth LE MCU board with onboard camera connector, addressable RGB LED, and native USB-C.

ESP32-S3-WROOM: Freenove development board

What is the ESP32-S3-WROOM?

The Freenove ESP32-S3-WROOM is a development board built around Espressif's ESP32-S3-WROOM-1 module. At its core is a dual-core Xtensa LX7 32-bit processor that runs at up to 240 MHz, with integrated 2.4 GHz Wi-Fi (802.11 b/g/n) and Bluetooth 5 (LE). The N16R8 module pairs 16 MB of flash with 8 MB of octal PSRAM and 512 KB of on-chip SRAM, so it has far more headroom than a classic 8-bit Arduino.

Freenove breaks out 36 GPIO across two header rows and adds maker-friendly hardware: a USB-C port for power, programming, and native USB-OTG; an onboard camera connector (OV2640-class); a microSD card slot; and a WS2812 addressable RGB LED on IO48. Nearly every pin is multi-function, exposing 12-bit SAR ADC inputs (20 channels split across ADC1 and ADC2), LEDC PWM, and default hardware I2C, SPI, and UART.

Makers reach for this board for camera streaming and computer-vision demos, Wi-Fi and BLE IoT nodes, and USB HID gadgets. It programs from the Arduino IDE, ESP-IDF, or MicroPython, and the S3's SIMD instruction extensions plus hardware floating-point unit make it capable of lightweight on-device audio and ML workloads.

ESP32-S3-WROOM pin reference

PinFunctionType
3V3 3V3PowerPower out
EN EN (RST)Digital chip enable / active-low resetDigital input
IO4 IO4 (A3)Analog ADC1_CH3 · Digital · PWMBidirectional (GPIO)
IO5 IO5 (A4)Analog ADC1_CH4 · Digital · PWMBidirectional (GPIO)
IO6 IO6 (A5)Analog ADC1_CH5 · Digital · PWMBidirectional (GPIO)
IO7 IO7 (A6)Analog ADC1_CH6 · Digital · PWMBidirectional (GPIO)
IO15 IO15 (A4/CH4)Analog ADC2_CH4 · Digital · PWMBidirectional (GPIO)
IO16 IO16 (A5/CH5)Analog ADC2_CH5 · Digital · PWMBidirectional (GPIO)
IO17 IO17 (A6/CH6)Analog ADC2_CH6 · Digital · PWMBidirectional (GPIO)
IO18 IO18 (A7/CH7)Analog ADC2_CH7 · Digital · PWMBidirectional (GPIO)
IO8 IO8 (SDA)Analog ADC1_CH7 · Digital · PWM · I²C SDA (default)Bidirectional (GPIO)
IO3 IO3Analog ADC1_CH2 · Digital · PWM · Strapping JTAG source select at boot (leave floating for normal boot)Bidirectional (GPIO)
IO46 IO46 (LOG)Digital · PWM · Strapping ROM boot-log enable (HIGH=enabled); keep default at bootBidirectional (GPIO)
IO9 IO9 (SCL)Analog ADC1_CH8 · Digital · PWM · I²C SCL (default)Bidirectional (GPIO)
IO10 IO10 (SS)Analog ADC1_CH9 · Digital · PWM · SPI CS (default FSPI)Bidirectional (GPIO)
IO11 IO11 (MOSI)Analog ADC2_CH0 · Digital · PWM · SPI MOSI (default FSPI)Bidirectional (GPIO)
IO12 IO12 (SCK)Analog ADC2_CH1 · Digital · PWM · SPI SCK (default FSPI)Bidirectional (GPIO)
IO13 IO13 (MISO)Analog ADC2_CH2 · Digital · PWM · SPI MISO (default FSPI)Bidirectional (GPIO)
IO14 IO14Analog ADC2_CH3 · Digital · PWMBidirectional (GPIO)
5V 5V (VBUS)PowerPower in
IO43 IO43 (TX)UART TX (U0TXD) · Digital · PWMBidirectional (GPIO)
IO44 IO44 (RX)UART RX (U0RXD) · Digital · PWMBidirectional (GPIO)
IO1 IO1 (A0)Analog ADC1_CH0 · Digital · PWMBidirectional (GPIO)
IO2 IO2 (LED/A1)Analog ADC1_CH1 · Digital · PWMBidirectional (GPIO)
IO42 IO42 (MTMS)Digital · PWMBidirectional (GPIO)
IO41 IO41 (MTDI)Digital · PWMBidirectional (GPIO)
IO40 IO40 (MTDO)Digital · PWMBidirectional (GPIO)
IO39 IO39 (MTCK)Digital · PWMBidirectional (GPIO)
IO38 IO38Digital · PWMBidirectional (GPIO)
IO37 IO37 (PSRAM*)Digital reserved — octal PSRAM on N16R8, do not useBidirectional (GPIO)
IO36 IO36 (PSRAM*)Digital reserved — octal PSRAM on N16R8, do not useBidirectional (GPIO)
IO35 IO35 (PSRAM*)Digital reserved — octal PSRAM on N16R8, do not useBidirectional (GPIO)
IO0 IO0 (BOOT)Digital · PWM · Strapping BOOT button — hold LOW at reset to enter download modeBidirectional (GPIO)
IO45 IO45 (VSPI)Digital · PWM · Strapping selects flash/PSRAM voltage at boot (default LOW)Bidirectional (GPIO)
IO48 IO48 (RGB)Digital · PWM · 1-Wire onboard WS2812 RGB LEDBidirectional (GPIO)
IO47 IO47Digital · PWMBidirectional (GPIO)
IO21 IO21Digital · PWMBidirectional (GPIO)
IO20 IO20 (D+)Analog ADC2_CH9 · Digital · PWM · Digital USB D+Bidirectional (GPIO)
IO19 IO19 (D-)Analog ADC2_CH8 · Digital · PWM · Digital USB D-Bidirectional (GPIO)
GND GNDPowerPower in

Specifications

Operating voltage
3.3 V (max 5.5 V)
Interface
gpio
Clock speed
240 MHz
Flash
16 MB
RAM
512 KB
GPIO pins
36
ADC
20 channels · 12-bit
PWM channels
8
Dimensions
57.2 × 28.2 × 15 mm

Verified from the Tinkered component library · Freenove.

Circuit requirements

  • Logic level is 3.3V. The GPIO pins are not 5V tolerant, so feeding 5V from a sensor or another board directly into a signal pin can damage the chip. Use a level shifter for 5V logic.
  • Normal power comes from the USB-C connector, which supplies 5V (VBUS); the onboard regulator drops it to 3.3V for the module. The 5V pin exposes that VBUS rail (roughly 5V) and can also accept a regulated 5V input.
  • The 3V3 pin is a regulated output for powering peripherals, not a supply input. Do not feed voltage into it.
  • ADC2 channels are shared with the Wi-Fi radio and cannot be read while Wi-Fi is active. Prefer ADC1 pins (IO1-IO10) for analog reads in any networked sketch.
  • IO35, IO36, and IO37 are reserved for the octal PSRAM on the N16R8 module and must be left unused.
  • IO0 (BOOT), IO3, IO45, and IO46 are strapping pins that set boot behavior. Avoid holding them at the wrong level during reset. Hold IO0 (BOOT) LOW at reset if you need to force download mode.
  • The onboard WS2812 RGB LED is wired to IO48; driving that pin will also blink the onboard LED.

Common ESP32-S3-WROOM mistakes

Assuming the GPIOs are 5V tolerant

The ESP32-S3 runs on 3.3V logic and its pins are not 5V tolerant. Wiring a 5V output straight into a GPIO can permanently damage the input. Use a logic level shifter or a voltage divider for 5V signals.

Reading ADC2 pins while Wi-Fi is on

ADC2 is used internally by the Wi-Fi radio, so analogRead on an ADC2 channel returns garbage or fails once Wi-Fi is initialized. Move analog sensors to ADC1 pins (IO1-IO10) for any project that also uses the network.

Using the PSRAM-reserved pins

On the N16R8 module, IO35, IO36, and IO37 are dedicated to the octal PSRAM interface. Connecting anything to them causes crashes or boot loops. Treat them as unavailable.

Failing to enter download mode

If auto-reset uploading fails, the board never enters the bootloader. Hold the BOOT button (IO0 LOW) while tapping reset, then release, to force download mode before flashing.

Back-feeding the 3V3 pin or double-powering

The 3V3 pin is a regulator output, not an input, and powering the board from USB and the 5V pin at the same time can create supply conflicts. Pick one power source and only draw 3.3V from the 3V3 pin.

ESP32-S3-WROOM datasheet

Official ESP32-S3-WROOM datasheetFreenove

Popular ESP32-S3-WROOM projects

Wi-Fi camera streamer

Use the onboard camera connector and 2.4 GHz Wi-Fi to serve a live MJPEG video stream or snapshot web page, the classic ESP32-CAM style project with more flash and PSRAM to spare.

IoT sensor node with web dashboard

Read temperature, humidity, or light sensors over I2C and publish readings to a built-in web server or an MQTT broker for a home dashboard.

Bluetooth LE peripheral

Advertise as a BLE beacon, heart-rate monitor, or wireless gamepad using the integrated Bluetooth 5 (LE) radio.

Addressable RGB LED animations

Drive the onboard WS2812 on IO48 plus external LED strips for status indicators, ambient lighting, or reactive effects.

USB HID gadget

Take advantage of native USB-OTG on the USB-C port to emulate a keyboard, mouse, or MIDI device without an extra USB chip.

Data logger with microSD

Combine the SD card slot with the ADC and Wi-Fi to log sensor data locally and sync or download it over the network.

Build with the ESP32-S3-WROOM.

Drop the ESP32-S3-WROOM into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.