LOLIN S2 Mini (formerly WEMOS) is a D1 mini-sized board with the ESP32-S2 chip and a USB-C connector. The outer rows of pads match the D1 mini, so D1 mini shields fit on it; the inner rows add another 16 pins – 27 GPIO are broken out in total.
The ESP32-S2 has a single core, Wi-Fi and native USB, but no Bluetooth.
Specifications
- ESP32-S2FN4R2: 1 Xtensa LX7 core up to 240 MHz, 4 MB flash and 2 MB PSRAM in the package
- 2.4 GHz Wi-Fi (no Bluetooth)
- 27 GPIO in two double rows, 20 analog inputs (ADC1 and ADC2), 2× DAC (GPIO17, GPIO18)
- UART, I2C, SPI, PWM, I2S, touch inputs (GPIO1–14), USB OTG
- USB-C (native USB), BOOT (0) and RST buttons, LED on GPIO15
- 34.3 × 25.4 mm (D1 mini size)
The diagram shows the component side, with USB at the top. GPIO numbers are printed on the silkscreen only on the bottom side, next to each pair of pads (inner/outer). The labels on both the left and right side alternate from the top: inner and outer row.
The Pin column of the table shows the connector from the WEMOS schematic (J2–J5) and its pin number – pin 1 is at the bottom near the antenna. Both the Arduino and MicroPython consoles run over native USB; UART0 (GPIO43/44) is not routed to the pads.
Pinout and pin table
Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.
| Pin | Name | Direction | UART | I2C | SPI | ADC | DAC | Touch | Note |
|---|---|---|---|---|---|---|---|---|---|
| J2 (right outer) 1 | EN | input | Reset (RST button) – logic 0 holds the chip in reset | ||||||
| J2 (right outer) 2 | GPIO3 | input/output | ADC1_CH2 | T3 | At position A0 on the D1 mini – but in Arduino it is A2 (A0–A19 = GPIO1–20). | ||||
| J2 (right outer) 3 | GPIO5 | input/output | ADC1_CH4 | T5 | |||||
| J2 (right outer) 4 | GPIO7 | input/output | SCK | ADC1_CH6 | T7 | ||||
| J2 (right outer) 5 | GPIO9 | input/output | MISO | ADC1_CH8 | T9 | ||||
| J2 (right outer) 6 | GPIO11 | input/output | MOSI | ADC2_CH0 | T11 | ||||
| J2 (right outer) 7 | GPIO12 | input/output | SS | ADC2_CH1 | T12 | ||||
| J2 (right outer) 8 | 3V3 | output | 3.3 V output from the board's regulator | ||||||
| J3 (left outer) 1 | GPIO39 | input/output | TX | UART TX in Arduino (Serial1) – the console is over USB | |||||
| J3 (left outer) 2 | GPIO37 | input/output | RX | UART RX v Arduinu (Serial1) | |||||
| J3 (left outer) 3 | GPIO35 | input/output | SCL | ||||||
| J3 (left outer) 4 | GPIO33 | input/output | SDA | ||||||
| J3 (left outer) 5 | GPIO18 | input/output | ADC2_CH7 | DAC2 | The board has a 10 kΩ pull-up to 3.3 V – the pin idles at logic 1, affecting the DAC2 output and ADC readings. | ||||
| J3 (left outer) 6 | GPIO16 | input/output | ADC2_CH5 | ||||||
| J3 (left outer) 7 | GND | – | |||||||
| J3 (left outer) 8 | VBUS | input/output | 5 V from USB-C; power input when USB is not connected | ||||||
| J4 (left inner) 1 | GPIO40 | input/output | JTAG MTDO | ||||||
| J4 (left inner) 2 | GPIO38 | input/output | |||||||
| J4 (left inner) 3 | GPIO36 | input/output | |||||||
| J4 (left inner) 4 | GPIO34 | input/output | |||||||
| J4 (left inner) 5 | GPIO21 | input/output | |||||||
| J4 (left inner) 6 | GPIO17 | input/output | ADC2_CH6 | DAC1 | |||||
| J4 (left inner) 7 | GND | – | |||||||
| J4 (left inner) 8 | GPIO15 | input/output | ADC2_CH4 | Onboard LED through 2 kΩ, lit at logic 1. Can also be used as a general-purpose GPIO. | |||||
| J5 (right inner) 1 | GPIO1 | input/output | ADC1_CH0 | T1 | |||||
| J5 (right inner) 2 | GPIO2 | input/output | ADC1_CH1 | T2 | |||||
| J5 (right inner) 3 | GPIO4 | input/output | ADC1_CH3 | T4 | |||||
| J5 (right inner) 4 | GPIO6 | input/output | ADC1_CH5 | T6 | |||||
| J5 (right inner) 5 | GPIO8 | input/output | ADC1_CH7 | T8 | |||||
| J5 (right inner) 6 | GPIO10 | input/output | ADC1_CH9 | T10 | |||||
| J5 (right inner) 7 | GPIO13 | input/output | ADC2_CH2 | T13 | |||||
| J5 (right inner) 8 | GPIO14 | input/output | ADC2_CH3 | T14 |
Pins used on the board
These chip pins are used by parts on the board and are not broken out:
| Pin | Function on the board |
|---|---|
| GPIO0 | BOOT button (0) – strapping pin, logic 0 at boot = download mode |
| GPIO19, 20 | USB D− and D+ (native USB, USB-C connector) |
| GPIO26–32 | Flash and PSRAM in the chip package |
| GPIO43, 44 | UART0 (bootloader output) – not routed to pads, the console goes over USB |
What to watch out for
- The GPIO are not 5V tolerant.
- GPIO0 is only on the BOOT button – when uploading over native USB, holding BOOT and pressing RST often helps.
- GPIO18 has a 10 kΩ pull-up on the board – it idles at logic 1 (affects DAC2 and ADC).
- ADC2 (GPIO11–18) cannot be read reliably while Wi-Fi is on – use GPIO1–10 for analog inputs.
- The A0 position of D1 mini shields is GPIO3 (A2 in Arduino).
- Cheap clones often have a chip without PSRAM.
ESP32-S2 on chiptron.eu/
Projects and guides on chiptron.eu/:
- ESP32 chip comparison – when to choose the S2 (native USB, no Bluetooth) and when another chip
More pinouts
See all pinouts on the Pinouts page.