THE ULTIMATE GUIDE TO THE S2 MINI PINOUT

The Wemos S2 Mini is a compact ESP32-S2 development board tailored for modern USB-powered IoT applications. With a small footprint, native USB, and full GPIO breakout, this purple powerhouse offers just the right balance between functionality and minimalism. In this guide, we’ll take a deep dive into the S2 Mini pinout, helping you master every feature of this efficient board. It is also ideal for developing on of my homekit accessory.

What is the S2 Mini?

System-on-Chip (SoC):

At its core, the ESP32-S2 is a single-core 32-bit Xtensa LX7 chip running at 240 MHz, developed by Espressif. It includes native USB, Wi-Fi 802.11 b/g/n, a 43-GPIO matrix, touch sensing, ADC, and secure boot, making it ideal for smart sensors, USB gadgets, and low-power IoT nodes.

Module:

The S2 Mini integrates the ESP32-S2 directly on the PCB with onboard flash and USB connectivity. It’s manufactured by WEMOS/Lolin, known for their clean, efficient board designs.

Development Board (DevKit):

The S2 Mini offers USB-C, a reset button, 3.3V regulator, and 29 accessible GPIOs across clearly labeled headers — all in a tiny footprint perfect for breadboards or embedded projects.

Designed for Compact Power

With onboard USB and modern features, the S2 Mini provides:

  • 240 MHz single-core Xtensa LX7 CPU
  • Wi-Fi 802.11 b/g/n
  • 43 total GPIOs (29 broken out)
  • 14 capacitive touch sensors
  • Native USB 1.1 (Device and Host)
  • 2 × 12-bit ADCs
  • 20 PWM channels
  • SPI, I2C, UART, I2S, RMT, DAC
  • On-chip temperature sensor
  • 4 MB flash (varies by revision)

** The ESP32 pinout is available for download at the end of this post in high resolution – for free!

S2 Mini Pinout – GPIO Fundamentals

The S2 Mini breaks out 29 GPIOs on 2 rows of headers. Every pin supports digital I/O, and most are multiplexed for other functions like I2C, SPI, UART, ADC, or touch sensing.

Touch Sensing

The ESP32-S2 includes 14 capacitive touch sensors, ideal for buttonless interaction or gesture sensing.

  • Touch GPIOs: GPIO1–14

Applications: Touch sliders, buttons, motion detection, etc.

Analog Input (ADC)

Two ADCs provide up to 20 channels with 12-bit resolution.

  • ADC1 Channels: GPIO1–10
  • ADC2 Channels: GPIO11–20

Tip: Use ADC1 for analog reads when Wi-Fi is active (ADC2 shares Wi-Fi resources).

PWM (Pulse Width Modulation)

Up to 20 PWM channels are available. All GPIO’s on the S2 Mini support PWM, so you can use any pin for dimming LED’s, servo motors, or sound generation. But not every pin on the module is equally suitable for PWM due to overlap with other functions (such as USB, bootstraps, etc.).

I2C and SPI Communication

I2C

Software-assignable, but common default:

  • SDA – GPIO8
  • SCL – GPIO9

Use Wire.begin(SDA, SCL); to customize.

SPI

Software-assignable, typical config:

  • MOSI – GPIO35
  • MISO – GPIO37
  • SCLK – GPIO36
  • CS – GPIO34

S2 Mini GPIO Quick Reference Table

GPIOSpecial FunctionADCDACTouchRTCBoot State / Notes
0Boot, StrappingNoNoNoYesPull LOW to enter bootloader
1Touch, ADC1ADC1_0NoYesYes
2Touch, ADC1ADC1_1NoYesYes
3Touch, ADC1ADC1_2NoYesYes
4Touch, ADC1ADC1_3NoYesYes
5Touch, ADC1ADC1_4NoYesYes
6Touch, ADC1ADC1_5NoYesYes
7Touch, ADC1ADC1_6NoYesYes
8Touch, ADC1, I2C SDAADC1_7NoYesYesCommon default: I2C SDA
9Touch, ADC1, I2C SCLADC1_8NoYesYesCommon default: I2C SCL
10Touch, ADC2ADC2_0NoYesYes
11Touch, ADC2ADC2_1NoYesYes
12Touch, ADC2ADC2_2NoYesYes
13Touch, ADC2ADC2_3NoYesYes
14Touch, ADC2ADC2_4NoYesYes
15XTAL_32K_P, LEDNoNoNoNoOnboard LED
16XTAL_32K_NNoNoNoNo
17DAC1, ADC2ADC2_6YesNoNo
18DAC2, ADC2ADC2_7YesNoNo
19ADC2ADC2_8NoNoNoNot USB D+
20ADC2ADC2_9NoNoNoNot USB D−
21General I/ONoNoNoNo
33General I/ONoNoNoNo
34SPI CSNoNoNoNoSPI default CS
35SPI MOSINoNoNoNoSPI default MOSI
36SPI CLKNoNoNoNoSPI default CLK
37SPI MISONoNoNoNoSPI default MISO
38General I/ONoNoNoNo
39JTAG MTCKNoNoNoNoDebug function
40JTAG MTDONoNoNoNoDebug function
43UART0 TX (not broken out)NoNoNoNoAvailable internally only
44UART0 RX (not broken out)NoNoNoNoAvailable internally only

Best Practices and Common Mistakes

  • Don’t pull GPIO0 HIGH during boot if you want to flash firmware.
  • Avoid using ADC2 for analog reads while Wi-Fi is active.
  • Use pull-up/down resistors for floating inputs.
  • Keep current draw below 12mA per GPIO.
  • Make sure to debounce any mechanical buttons.

How to Program the S2 Mini

Development Environments

Flashing and Programming

FunctionPinDescription
ENEN pinReset the board
IO0GPIO0Hold LOW to enter bootloader

Steps:

  1. Connect the USB-C cable.
  2. Select ESP32-S2 Dev Module in Arduino/PlatformIO.
  3. Click upload. Hold BOOT if needed during flashing.

Conclusion: Tiny, Modern, and USB-Ready

The  S2 Mini is a minimal but mighty development board. With native USB, full GPIO access, and a no-nonsense design, it’s ideal for compact IoT projects, wearable devices, and USB-powered tools. Mastering its pinout gives you the confidence to build faster and better.

Happy Building! 

Download the ESP32- S2 pinout here in high resolution – for free*!

Free to use under the MIT license — attribution is required.

Scroll to Top