Wemos LOLIN S3: Your Gateway to Advanced ESP32 Projects
The Wemos LOLIN S3 is a compact development board featuring the powerful ESP32-S3 microcontroller, ideal for makers seeking Wi-Fi, Bluetooth, and ample GPIO for complex embedded applications.
The Wemos LOLIN S3 is a popular development board from Lolin (formerly Wemos), designed around the Espressif ESP32-S3 System-on-Chip (SoC). This board offers a robust platform for hobbyists, students, and professional engineers looking to build connected IoT devices, sensor networks, and interactive electronics. Its compact form factor and accessible pinout make it a versatile choice for both breadboarding and custom PCB designs.
At its heart, the ESP32-S3 is a dual-core Tensilica LX7 microprocessor, clocked at up to 240 MHz. It boasts significant improvements over its predecessors, including native USB OTG support, a dedicated AI acceleration instruction set, and a larger SRAM capacity. The inclusion of Wi-Fi (802.11 b/g/n) and Bluetooth 5 (LE) connectivity makes it a powerful choice for wireless communication projects, enabling seamless integration with smartphones, cloud services, and other IoT devices.
The LOLIN S3 specifically integrates this powerful chip onto a convenient breakout board, typically featuring a USB-C connector for power and programming, a reset button, and a boot button. It often includes an onboard SPI flash memory chip (commonly 4MB or 8MB) and sometimes an external PSRAM chip for expanded memory. The board's pinout is designed for ease of use, exposing a generous number of General Purpose Input/Output (GPIO) pins that can be configured for a wide array of functions, including analog-to-digital conversion, Pulse Width Modulation (PWM), and various communication protocols.
This board is particularly well-suited for makers who have outgrown basic microcontrollers and are ready to explore more advanced features. Its AI capabilities open doors to on-device machine learning tasks like keyword spotting or simple image recognition, while its robust connectivity options are perfect for creating sophisticated smart home devices, robotics controllers, or data logging systems. The ESP32-S3's dual-core architecture and extensive peripherals provide ample processing power and flexibility for complex projects.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Espressif ESP32-S3FN4R2 |
| Architecture | Dual-core Tensilica LX7 with FPU, running up to 240 MHz |
| Clock speed | 240 MHz (typically) |
| Flash / Storage | 4MB or 8MB SPI Flash (onboard) |
| RAM / SRAM | 512KB SRAM (internal, accessible by both cores) + optional external PSRAM (e.g., 2MB or 8MB) |
| Operating voltage | 3.3V |
| Digital I/O pins | Up to 45 GPIOs (depending on board configuration and used peripherals) |
| Analog / ADC | 14x 12-bit SAR ADCs |
| PWM | Up to 16 channels |
| Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth 5 (LE) |
| USB | USB-C (for power and programming, supports USB OTG via ESP32-S3) |
| Power input | 5V via USB-C or VIN pin; 3.3V via 3.3V pin |
| Dimensions | Approximately 51.3mm x 25.4mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | 3.3V Power Output |
| GND | Ground |
| EN | Reset Pin (active low) |
| BOOT | Boot Mode Select (active low, pull low to enter bootloader) |
| GPIO0 | General Purpose I/O, also used for boot mode |
| GPIO1 | TX0 (UART0 Transmit) |
| GPIO2 | RX0 (UART0 Receive) |
| GPIO3 | General Purpose I/O |
| GPIO4 | General Purpose I/O |
| GPIO5 | General Purpose I/O |
| GPIO6 | SPI Flash CS (usually not user-accessible) |
| GPIO7 | SPI Flash D0 (usually not user-accessible) |
| GPIO8 | SPI Flash D1 (usually not user-accessible) |
| GPIO9 | SPI Flash D2 (usually not user-accessible) |
| GPIO10 | SPI Flash D3 (usually not user-accessible) |
| GPIO11 | SPI Flash CLK (usually not user-accessible) |
| GPIO12 | General Purpose I/O, ADC2_CH5 |
| GPIO13 | General Purpose I/O, ADC2_CH4 |
| GPIO14 | General Purpose I/O, ADC2_CH6 |
| GPIO15 | General Purpose I/O, ADC2_CH7 |
| GPIO16 | General Purpose I/O, RX2 (UART2 Receive) |
| GPIO17 | General Purpose I/O, TX2 (UART2 Transmit) |
| GPIO18 | General Purpose I/O, ADC1_CH0 |
| GPIO19 | General Purpose I/O, ADC1_CH1 |
| GPIO20 | General Purpose I/O, ADC1_CH2 |
| GPIO21 | General Purpose I/O, ADC1_CH3, I2C SDA |
| GPIO26 | General Purpose I/O, ADC1_CH8 |
| GPIO27 | General Purpose I/O, ADC1_CH9 |
| GPIO28 | General Purpose I/O, ADC1_CH10 |
| GPIO29 | General Purpose I/O, ADC1_CH11 |
| GPIO30 | General Purpose I/O, ADC1_CH12 |
| GPIO31 | General Purpose I/O, ADC1_CH13 |
| GPIO32 | General Purpose I/O, ADC1_CH14 |
| GPIO33 | General Purpose I/O, ADC1_CH15 |
| GPIO34 | General Purpose I/O, ADC1_CH16 |
| GPIO35 | General Purpose I/O, ADC1_CH17 |
| GPIO36 | General Purpose I/O, ADC1_CH18 |
| GPIO37 | General Purpose I/O, ADC1_CH19 |
| GPIO38 | General Purpose I/O, ADC1_CH20 |
| GPIO39 | General Purpose I/O, ADC1_CH21 |
| GPIO40 | General Purpose I/O, I2C SCL |
| GPIO41 | General Purpose I/O |
| GPIO42 | General Purpose I/O |
| GPIO43 | General Purpose I/O |
| GPIO44 | General Purpose I/O |
| GPIO45 | General Purpose I/O |
| GPIO46 | General Purpose I/O |
| VIN | 5V Power Input (connects to onboard regulator) |
| USB D- | USB Data Negative |
| USB D+ | USB Data Positive |
Wiring & circuit basics
Powering the Wemos LOLIN S3 is straightforward. You can supply 5V power through the USB-C port or the VIN pin. The board features an onboard 3.3V voltage regulator, which will provide a stable 3.3V output on the 3V3 pin and power the ESP32-S3 chip. Avoid powering the board directly via the 3V3 pin unless you are certain your external supply is stable and precisely regulated at 3.3V, as this bypasses the onboard regulator and can damage the chip if over-volted. The typical current draw can vary significantly based on Wi-Fi/Bluetooth usage and peripheral load, but a stable 5V supply capable of at least 1A is recommended for most projects.
All GPIO pins on the LOLIN S3 operate at 3.3V logic levels. This is crucial when interfacing with external components. Connecting a 5V device directly to a GPIO pin can permanently damage the ESP32-S3. For components that use 5V logic, you will need a level shifter. Conversely, if you are connecting a 3.3V sensor or module to a 5V microcontroller (like an Arduino Uno), you would need a level shifter to increase the voltage. When connecting an LED, always use a current-limiting resistor (typically 220-470 ohms for standard LEDs with 3.3V) in series with the LED to prevent excessive current draw and protect both the LED and the GPIO pin. Connect the other end of the resistor to the GPIO pin and the LED's anode to the resistor, with the cathode connected to a GND pin.
For I2C communication, the ESP32-S3 typically uses GPIO21 for SDA and GPIO40 for SCL. When connecting an I2C sensor, ensure you connect its VCC to the 3V3 pin, its GND to a GND pin, its SDA to GPIO21, and its SCL to GPIO40. Remember that I2C communication requires pull-up resistors on both the SDA and SCL lines. While some sensors have these built-in, it's common practice to add external pull-up resistors (e.g., 4.7k ohm) from each line (SDA and SCL) to the 3.3V rail. The LOLIN S3 board might include onboard pull-ups, but check the specific board's documentation or schematic if unsure.
Programming & getting started
The Wemos LOLIN S3 can be programmed using a variety of popular toolchains. The Arduino IDE is a common choice for its ease of use and extensive library support. To use it, you'll need to install the ESP32 board definitions via the Board Manager. MicroPython and CircuitPython also offer excellent support, allowing you to program the board using Python, which can be faster for rapid prototyping. For more advanced applications and direct hardware control, the Espressif IoT Development Framework (ESP-IDF) provides a powerful C/C++ based SDK. PlatformIO, an integrated development environment for IoT development, also offers robust support for the ESP32-S3 within VS Code.
To upload your first program using the Arduino IDE: 1. Install the Arduino IDE. 2. Go to File > Preferences and add `https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json` to the Additional Board Manager URLs. 3. Go to Tools > Board > Boards Manager, search for 'esp32' and install the package by Espressif Systems. 4. Select the correct board (e.g., 'LOLIN S3' or a generic ESP32-S3 Dev Module) from Tools > Board. 5. Connect the LOLIN S3 to your computer via USB. Ensure the BOOT button is held down while plugging it in if it doesn't show up, then release it. 6. Select the correct COM port from Tools > Port. 7. Write your code (e.g., a simple Blink sketch) and click the Upload button.