MakerLab
ESP32Wemos LOLIN S3

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.

Wemos LOLIN S3

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 / SoCEspressif ESP32-S3FN4R2
ArchitectureDual-core Tensilica LX7 with FPU, running up to 240 MHz
Clock speed240 MHz (typically)
Flash / Storage4MB or 8MB SPI Flash (onboard)
RAM / SRAM512KB SRAM (internal, accessible by both cores) + optional external PSRAM (e.g., 2MB or 8MB)
Operating voltage3.3V
Digital I/O pinsUp to 45 GPIOs (depending on board configuration and used peripherals)
Analog / ADC14x 12-bit SAR ADCs
PWMUp to 16 channels
ConnectivityWi-Fi 802.11 b/g/n, Bluetooth 5 (LE)
USBUSB-C (for power and programming, supports USB OTG via ESP32-S3)
Power input5V via USB-C or VIN pin; 3.3V via 3.3V pin
DimensionsApproximately 51.3mm x 25.4mm

Pinout & pin functions

PinFunction
3V33.3V Power Output
GNDGround
ENReset Pin (active low)
BOOTBoot Mode Select (active low, pull low to enter bootloader)
GPIO0General Purpose I/O, also used for boot mode
GPIO1TX0 (UART0 Transmit)
GPIO2RX0 (UART0 Receive)
GPIO3General Purpose I/O
GPIO4General Purpose I/O
GPIO5General Purpose I/O
GPIO6SPI Flash CS (usually not user-accessible)
GPIO7SPI Flash D0 (usually not user-accessible)
GPIO8SPI Flash D1 (usually not user-accessible)
GPIO9SPI Flash D2 (usually not user-accessible)
GPIO10SPI Flash D3 (usually not user-accessible)
GPIO11SPI Flash CLK (usually not user-accessible)
GPIO12General Purpose I/O, ADC2_CH5
GPIO13General Purpose I/O, ADC2_CH4
GPIO14General Purpose I/O, ADC2_CH6
GPIO15General Purpose I/O, ADC2_CH7
GPIO16General Purpose I/O, RX2 (UART2 Receive)
GPIO17General Purpose I/O, TX2 (UART2 Transmit)
GPIO18General Purpose I/O, ADC1_CH0
GPIO19General Purpose I/O, ADC1_CH1
GPIO20General Purpose I/O, ADC1_CH2
GPIO21General Purpose I/O, ADC1_CH3, I2C SDA
GPIO26General Purpose I/O, ADC1_CH8
GPIO27General Purpose I/O, ADC1_CH9
GPIO28General Purpose I/O, ADC1_CH10
GPIO29General Purpose I/O, ADC1_CH11
GPIO30General Purpose I/O, ADC1_CH12
GPIO31General Purpose I/O, ADC1_CH13
GPIO32General Purpose I/O, ADC1_CH14
GPIO33General Purpose I/O, ADC1_CH15
GPIO34General Purpose I/O, ADC1_CH16
GPIO35General Purpose I/O, ADC1_CH17
GPIO36General Purpose I/O, ADC1_CH18
GPIO37General Purpose I/O, ADC1_CH19
GPIO38General Purpose I/O, ADC1_CH20
GPIO39General Purpose I/O, ADC1_CH21
GPIO40General Purpose I/O, I2C SCL
GPIO41General Purpose I/O
GPIO42General Purpose I/O
GPIO43General Purpose I/O
GPIO44General Purpose I/O
GPIO45General Purpose I/O
GPIO46General Purpose I/O
VIN5V 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.

Project ideas

Wi-Fi Connected Weather StationMonitor temperature, humidity, and pressure using sensors like the BME280, and display readings on a web server hosted by the LOLIN S3. This project utilizes I2C for sensor communication and Wi-Fi for data transmission, teaching about embedded web servers and sensor interfacing.
Bluetooth LE BeaconCreate a low-power Bluetooth Low Energy beacon that broadcasts custom data, such as device ID or sensor readings. This project leverages the ESP32-S3's BLE capabilities and is ideal for asset tracking or proximity sensing applications, demonstrating wireless communication protocols.
Voice Controlled Smart Home HubDevelop a simple voice assistant using an external microphone module and an AI model for keyword spotting (e.g., 'lights on'). The ESP32-S3 can then control relays or other smart home devices via Wi-Fi. This project explores AI on embedded devices and IoT integration.
ESP32-S3 Game ControllerBuild a custom wireless game controller using buttons, joysticks, and the ESP32-S3's Wi-Fi or Bluetooth to send input commands to a PC or other device. This project teaches about input handling, wireless communication, and custom peripheral design.
AI-Powered Object DetectionUtilize the ESP32-S3's AI acceleration and an OV2640 camera module to perform simple object detection tasks directly on the device. This project delves into embedded machine learning, camera interfacing, and real-time data processing.
LoRaWAN Sensor NodeCombine the ESP32-S3 with a LoRa module to create a long-range, low-power sensor node for sending data over a LoRaWAN network. This project focuses on advanced wireless communication protocols and battery-powered IoT applications.

Buying tips & gotchas

When purchasing a Wemos LOLIN S3, be aware of potential clones or slightly different revisions that might have minor variations in components or pinouts. Always check the specific product listing and seller reviews. Common pitfalls include accidentally connecting 5V logic to the 3.3V GPIO pins, which can damage the ESP32-S3. Ensure you use level shifters or appropriate resistors when interfacing with 5V components. A common accessory that is highly recommended is a USB-C cable for power and programming. For projects requiring more memory, look for LOLIN S3 variants that explicitly mention onboard PSRAM (e.g., 2MB or 8MB). Also, ensure you have a reliable 5V power supply capable of delivering sufficient current, especially when using Wi-Fi.