ESP32-S2-Saola-1: Your Gateway to the Xtensa LX7 World
The ESP32-S2-Saola-1 is a compact development board featuring Espressif's Wi-Fi-only ESP32-S2 microcontroller, ideal for IoT projects requiring robust connectivity and a single-core processor.
The ESP32-S2-Saola-1 is a popular development board designed by Espressif Systems, serving as an accessible platform for exploring the capabilities of their ESP32-S2 System-on-Chip (SoC). This board is particularly well-suited for makers, students, and engineers who need a reliable Wi-Fi enabled microcontroller for Internet of Things (IoT) applications. It strips away the Bluetooth functionality found in its predecessors, focusing solely on Wi-Fi connectivity, which can simplify development and reduce power consumption in certain scenarios.
At the heart of the ESP32-S2-Saola-1 is the ESP32-S2 chip, a powerful and versatile microcontroller built on a single-core 32-bit Xtensa LX7 processor. This architecture offers a significant upgrade in performance and security features compared to earlier ESP32 variants. The ESP32-S2 boasts a higher clock speed, improved peripheral set, and enhanced security mechanisms like hardware acceleration for AES and SHA, making it a robust choice for connected devices that need to be secure and responsive.
Positioned within the ESP32 family, the ESP32-S2 represents a distinct evolution, prioritizing Wi-Fi connectivity and a single-core design for efficiency and cost-effectiveness. Unlike the dual-core original ESP32 which includes Bluetooth, the ESP32-S2 focuses on delivering a strong Wi-Fi experience. This makes it an excellent choice for projects where Bluetooth is not a requirement, such as smart home sensors, remote monitoring systems, or simple web-connected gadgets. Its release around 2020 brought a modern, secure, and capable Wi-Fi microcontroller to the maker community.
The ESP32-S2-Saola-1 board is designed for ease of use, featuring a standard USB-C connector for power and programming, and readily accessible GPIO pins. This makes it straightforward to prototype with, whether you're using the Arduino IDE, MicroPython, CircuitPython, or Espressif's own ESP-IDF. It's an ideal platform for learning about embedded systems, wireless communication, and IoT development, offering a balance of power, connectivity, and affordability for a wide range of projects.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | ESP32-S2 (ESP32-S2FN4R2) |
| Architecture | Single-core 32-bit Xtensa LX7 |
| Clock speed | Up to 240 MHz |
| Flash / Storage | 4MB SPI Flash (onboard) |
| RAM / SRAM | 512 KB SRAM (internal) |
| Operating voltage | 3.3V |
| Digital I/O pins | 21 (configurable) |
| Analog / ADC | 14x 12-bit SAR ADCs |
| PWM | Yes (up to 8 channels, configurable GPIOs) |
| Connectivity | 2.4 GHz Wi-Fi (802.11 b/g/n) |
| USB | USB-to-UART bridge (CP2102 or CH340), native USB OTG (on ESP32-S2 chip) |
| Power input | 5V via USB-C or 5V pin, 3.3V via 3.3V pin |
| Dimensions | Approx. 51.1mm x 24.1mm x 3.7mm (PCB only) |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | 3.3V Power Output |
| GND | Ground |
| EN | Enable (Reset) |
| BOOT | Boot Mode Select (Low for bootloader, High for normal boot) |
| GPIO0 | General Purpose Input/Output, also used for Boot Mode |
| GPIO1 | General Purpose Input/Output, UART0 TXD |
| GPIO2 | General Purpose Input/Output, UART0 RXD |
| GPIO3 | General Purpose Input/Output, ADC1_CH0, Touch Sensor 0 |
| GPIO4 | General Purpose Input/Output, ADC1_CH2, Touch Sensor 1 |
| GPIO5 | General Purpose Input/Output, SPI2 CS0 |
| GPIO6 | General Purpose Input/Output, SPI2 SCK |
| GPIO7 | General Purpose Input/Output, SPI2 MISO |
| GPIO8 | General Purpose Input/Output, SPI2 MOSI |
| GPIO9 | General Purpose Input/Output, ADC1_CH3, Touch Sensor 2 |
| GPIO10 | General Purpose Input/Output, ADC1_CH4, Touch Sensor 3 |
| GPIO11 | General Purpose Input/Output, ADC1_CH5, Touch Sensor 4 |
| GPIO12 | General Purpose Input/Output, ADC1_CH6, Touch Sensor 5 |
| GPIO13 | General Purpose Input/Output, ADC1_CH7, Touch Sensor 6 |
| GPIO14 | General Purpose Input/Output, ADC1_CH8, Touch Sensor 7 |
| GPIO15 | General Purpose Input/Output, ADC1_CH9, Touch Sensor 8 |
| GPIO16 | General Purpose Input/Output, ADC1_CH10, Touch Sensor 9 |
| GPIO17 | General Purpose Input/Output, ADC1_CH11, Touch Sensor 10 |
| GPIO18 | General Purpose Input/Output, ADC1_CH12, Touch Sensor 11 |
| GPIO19 | General Purpose Input/Output, ADC1_CH13, Touch Sensor 12 |
| GPIO20 | General Purpose Input/Output, ADC1_CH14, Touch Sensor 13 |
| GPIO21 | General Purpose Input/Output, ADC1_CH15, Touch Sensor 14 |
| GPIO33 | General Purpose Input/Output, ADC2_CH4, Touch Sensor 14 |
| GPIO34 | General Purpose Input/Output, ADC2_CH5, Touch Sensor 13 |
| GPIO35 | General Purpose Input/Output, ADC2_CH6, Touch Sensor 12 |
| GPIO36 | General Purpose Input/Output, ADC2_CH7, Touch Sensor 11 |
| GPIO37 | General Purpose Input/Output, ADC2_CH8, Touch Sensor 10 |
| GPIO38 | General Purpose Input/Output, ADC2_CH9, Touch Sensor 9 |
| GPIO39 | General Purpose Input/Output, ADC2_CH10, Touch Sensor 8 |
| GPIO40 | General Purpose Input/Output, ADC2_CH11, Touch Sensor 7 |
| GPIO41 | General Purpose Input/Output, ADC2_CH12, Touch Sensor 6 |
| GPIO42 | General Purpose Input/Output, ADC2_CH13, Touch Sensor 5 |
| GPIO43 | General Purpose Input/Output, ADC2_CH14, Touch Sensor 4 |
| GPIO44 | General Purpose Input/Output, ADC2_CH15, Touch Sensor 3 |
| GPIO45 | General Purpose Input/Output, ADC2_CH16, Touch Sensor 2 |
| GPIO46 | General Purpose Input/Output, ADC2_CH17, Touch Sensor 1 |
| USB D- | USB Data Minus |
| USB D+ | USB Data Plus |
Wiring & circuit basics
The ESP32-S2-Saola-1 operates at a logic level of 3.3V. Connecting 5V devices directly to its GPIO pins can cause permanent damage. If you need to interface with 5V components, use a logic level shifter or a voltage divider for inputs. Powering the board is typically done via the USB-C connector, which supplies 5V. This 5V is then regulated down to 3.3V by an onboard regulator to power the ESP32-S2 chip and its peripherals. You can also power the board by applying 5V to the '5V' pin or a regulated 3.3V to the '3V3' pin, but be cautious not to exceed the voltage limits.
When connecting external components, always ensure they are compatible with 3.3V logic. For example, to blink an LED, connect a current-limiting resistor (typically 220-330 ohms) in series with the LED, and then connect this series combination between a chosen GPIO pin and GND. To read a sensor, ensure its operating voltage and logic levels are 3.3V. For I2C communication, the ESP32-S2 has dedicated pins (often GPIO33 for SDA and GPIO34 for SCL, though this can vary and should be checked on the specific board silkscreen or documentation). Connect the sensor's VCC to 3V3, GND to GND, SDA to the ESP32-S2's SDA pin, and SCL to the ESP32-S2's SCL pin. Remember to include pull-up resistors on the SDA and SCL lines if your sensor doesn't have them built-in.
For more complex peripherals like SPI devices, ensure you connect the MOSI, MISO, SCK, and CS (Chip Select) pins correctly to the corresponding SPI pins on the ESP32-S2. Always refer to the specific pinout diagram for your ESP32-S2-Saola-1 board to identify the available GPIOs and their alternate functions. Using the onboard USB-to-UART chip simplifies programming as it handles the serial communication needed to flash new code onto the device.
Programming & getting started
The ESP32-S2-Saola-1 is well-supported by several popular development environments. For beginners and those familiar with Arduino, the Arduino IDE with the ESP32 board package installed is an excellent choice. You'll need to install the ESP32 core via the Board Manager. For those who prefer Python, MicroPython and CircuitPython offer a more abstracted, high-level programming experience. The official Espressif IoT Development Framework (ESP-IDF) provides the most control and access to the chip's full capabilities, ideal for professional development. PlatformIO, an extension for VS Code, also offers robust support for the ESP32-S2.
To upload your first program using the Arduino IDE: 1. Install the ESP32 board support in the Arduino IDE via the Board Manager. 2. Select the correct board (e.g., 'ESP32-S2 Dev Module' or a specific Saola board if available) and the corresponding COM port. 3. Write your sketch, for example, a simple 'Blink' sketch. 4. Connect the ESP32-S2-Saola-1 to your computer via USB. Ensure the BOOT and EN pins are in their default state (usually high). 5. Click the Upload button. The IDE will compile the code and flash it to the board. You may need to manually put the board into bootloader mode by pressing and holding the BOOT button while pressing and releasing the EN button, then releasing BOOT, just before or as the upload starts, depending on your board's configuration and USB-to-UART chip.