Adafruit QT Py ESP32-S2

Tiny ESP32-S2 board with STEMMA QT and USB-C - ideal for compact, plug-and-play IoT applications.

USB-C Native USB
Adafruit QT Py ESP32-S2 board
21.8 × 17.9 mm
ESP32-S2
MCU
240MHz
clock
4MB
flash
320KB
SRAM
16· 8 ADC
GPIO
Wi-Fi
radio
On this page

Pinout

16 pins · 2.54 mm pitch
View:
Adafruit QT Py ESP32-S2 pinout diagram
PinGPIOLabelsStatusCapabilitiesNotes
15A6TXT5PWMuartadc · touch · uart
26SCLA5T6PWMsafeadc · touch · i2c
37SDAA4T7PWMsafeadc · touch · i2c
48A3T8PWMsafeadc · touch
59A2T9PWMstrappingadc · touch
616A7RXPWMstrappingadc · uart
717A1DAC1PWMsafeadc · dac
818A0DAC2PWMsafeadc · dac
935MOSIPWMstrappingspi
1036SCKPWMstrappingspi
1137MISOPWMstrappingspi
1238NEOPIXEL_POWERPWMstrapping-
1339PIN_NEOPIXELPWMstrapping-
1440SCL1PWMstrapping-
1541SDA1PWMstrapping-
1642SSPWMstrappingspi

Start with these

6 pins with no boot or system involvement
A6TXSCLA5SDAA4A3T8A1DAC1A0DAC2

Freely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.

Fine - with a little care

sampled at boot or shared with debug/serial
PinLabelWhat to knowRole
A7XTAL_32K_NIf using an external 32 kHz crystal, this pin is connected to the crystal and should not be used as general I/O.Other
PIN_NEOPIXELMTCKUsed for JTAG debugging interface; using this pin for other purposes will disable JTAG clock input.Other
SCL1MTDOPart of JTAG interface (TDO); should be avoided as GPIO if JTAG debugging is needed.Other
SDA1MTDIPart of JTAG interface (TDI); avoid using as GPIO to retain ability for JTAG debug.Other
SSMTMSJTAG TMS pin; should not be repurposed if JTAG debugging or programming via JTAG is required.Other

Only if you know the tricks

wired to flash or USB - expect a fight
PinLabelWhat to knowRole
A2FSPIHDTypically used as flash/PSRAM IO line in certain configurations; avoid using as GPIO if flash or PSRAM is present.Flash
MOSIFSPIDUsed by internal flash/PSRAM on some ESP32-S2 variants; avoid using as GPIO to prevent conflicts.Flash
SCKFSPICLKMay be connected to internal flash or used for high-speed SPI; not intended for general GPIO use.Flash
MISOFSPIQUsed for internal flash/PSRAM data in some models; should not be repurposed for GPIO.Flash
NEOPIXEL_POWERFSPIWPReserved for flash/PSRAM in ESP32-S2 modules with internal memory; not recommended for general I/O.Flash
These are recommendations, not hard rules - with the right pull-ups, timing and boot-state awareness most pins can be made to work. When in doubt, start green.
Pinout notes The Adafruit QT Py ESP32-S2 pinout brings out 16 GPIO pins at a 2.54 mm pitch - every one of them usable in your project. For peripherals, I²C is mapped to SDA…

The Adafruit QT Py ESP32-S2 pinout brings out 16 GPIO pins at a 2.54 mm pitch - every one of them usable in your project.

For peripherals, I²C is mapped to SDA on GPIO7 and SCL on GPIO6; the SPI bus (MOSI, MISO, SCK, SS) is broken out in full; TX/RX on GPIO5 and GPIO16 cover serial logging and flashing.

On the analog side there are 8 ADC-capable pins for sensors and battery monitoring, 5 capacitive-touch inputs and 2 true DAC outputs.

If you want zero surprises, A6, SCL, SDA, A3 and 2 more are free of any such role - the safest first picks. 5 of the exposed pins carry boot-time or system duties on the ESP32-S2 (A7, PIN_NEOPIXEL, SCL1 and 2 more).

Getting started

flash your first firmware in ~2 minutes
Tool:
1
Connect over USB
Native USB - shows up as a port right away, no driver needed. Not detected? Hold BOOT while plugging in.
2
Match & flash
Set the Tools options shown, then click Upload.
3
Verify it runs
The onboard LED on GPIO6 blinks - swap the pin if your board's LED differs.
Set these in Tools · leave everything else at default
Arduino IDE 2.x — Tools Copy
Board: "ESP32S2 Dev Module"
USB CDC On Boot: "Enabled"
Flash Size: "4MB (32Mb)"
Flash Mode: "DIO"
PSRAM: "QSPI PSRAM"
Partition Scheme: "Default 4MB with spiffs (1.2MB APP / 1.5MB SPIFFS)" (default)
Upload Speed: "921600"
▸ every other Tools option — leave at default
Board: ESP32S2 Dev Module
USB CDC On Boot: Enabled
Flash Size: 4MB (32Mb)
Flash Mode: DIO
PSRAM: QSPI PSRAM
Partition Scheme: Default 4MB with spiffs (1.2MB APP / 1.5MB SPIFFS)
Upload Speed: 921600
Find it: Tools ▸ Board ▸ ESP32 Arduino ▸ ESP32S2 Dev Module
blink.ino Copy
// blink the onboard LED
void setup() {
  pinMode(6, OUTPUT);
}
void loop() {
  digitalWrite(6, HIGH); delay(500);
  digitalWrite(6, LOW);  delay(500);
}
board to selectesp32-s2-saola-1⧉ copy
platformio.ini Copy
[env:adafruit_qtpy_esp32s2]
platform = espressif32
board = esp32-s2-saola-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600
board_build.arduino.memory_type = qio_qspi
build_flags = -DBOARD_HAS_PSRAM
Find it: PlatformIO Home ▸ Boards, search esp32-s2-saola-1 — or type it after board =.
board to selectesp32-s2-saola-1⧉ copy
device.yaml Copy
esp32:
  board: esp32-s2-saola-1
  variant: adafruit_qtpy_esp32s2
  framework:
    type: esp-idf
psram:
  mode: quad
  speed: 80MHz

# blink - GPIO6
output:
  - platform: gpio
    pin: 6
    id: led_out
light:
  - platform: binary
    name: "LED"
    output: led_out
Find it: search ESPHome's board list for esp32-s2-saola-1 (same ids as PlatformIO).
esptool doesn't pick board settings — a prebuilt .bin already has them baked in. This is just the raw flash command.
terminal Copy
esptool.py --chip esp32s2 --port /dev/ttyACM0 \
  --baud 921600 write_flash 0x0 firmware.bin
--port = your /dev/tty* (macOS/Linux) or COMx (Windows).
Build details: sketch space 1310720 B · data 327680 B · DIO

Specifications

ESP32-S2 · 21.8 × 17.9 mm
Compute
MCU
ESP32-S2
Clock
240 MHz
SRAM · Flash
320 KB · 4MB · 2MB (QSPI) PSRAM
Radio
Wi-Fi
802.11 b/g/n 2.4 GHz
Bluetooth
-
Antenna
PCB
I/O
GPIO · ADC
16 · 8
UART · I²C · SPI
2 · 1 · 4
PWM
8 channels
Power
USB
USB-C
Serial
Native (CDC)
Boot address
0x1000
Flashing
Upload · OTA
esptool_py · esp_ota
Flash · Boot mode
DIO · QIO
Sketch · Data
1.25 MB · 320 KB
17.9 mm21.8 mm
21.8 × 17.9 mm · pin pitch 2.54 mm
The Adafruit QT Py ESP32-S2 uses esptool_py for firmware uploads, esp_ota for over-the-air (OTA) updates. Flash mode is DIO with QIO boot mode. The maximum sketch size is 1.25 MB with 320 KB available for data.

About this board

At 21.8 × 17.9 mm it's the smallest ESP32-S2 board we've measured.

At its core is the ESP32-S2 - a single-core Xtensa with native USB-OTG and no Bluetooth.

Expect to pay about $12.50 - less than the ~$20 most ESP32-S2 boards go for.

The small footprint costs pins: 16 GPIO are broken out, versus 26 or so on a full-size board.

Onboard you'll find 2MB (QSPI) PSRAM, a STEMMA QT connector, an addressable RGB LED (GPIO39) and Reset/Boot buttons.

It flashes over native USB - no serial-converter driver needed, which isn't a given among ESP32-S2 boards.

Where to buy

prices are typical street prices
Adafruit QT Py ESP32-S2
Adafruit QT Py ESP32-S2
$12.50per unit, typical

Resources

Similar boards