ESP32-SOLO-1: The Compact Wi-Fi and Bluetooth Microcontroller for Makers
Explore the capabilities of the ESP32-SOLO-1, a single-core Wi-Fi and Bluetooth module ideal for space-constrained embedded projects.

The ESP32-SOLO-1 is a compact and cost-effective module based on Espressif's ESP32 system-on-chip (SoC). It features a single-core Tensilica LX6 processor, integrated Wi-Fi and Bluetooth connectivity, and a rich set of peripherals, making it a versatile choice for a wide range of IoT applications. Designed for makers, students, and embedded engineers, it offers a balance of performance, power efficiency, and affordability.
At its heart is the ESP32-S0WD chip, a single-core variant of the popular ESP32 family. While the dual-core ESP32 is known for its processing power, the SOLO-1 leverages the same core architecture but focuses on applications where a single core is sufficient, leading to potential power savings and reduced cost. It maintains the ESP32's strong suit in wireless communication, supporting 2.4 GHz Wi-Fi (802.11 b/g/n) and Bluetooth 4.2 BR/EDR and BLE.
Released as part of the broader ESP32 ecosystem, the ESP32-SOLO-1 targets applications where size and power consumption are critical. It's particularly well-suited for small wearables, smart home devices, remote sensors, and educational projects. Its integrated nature reduces the need for external components, simplifying PCB design and assembly, which is a significant advantage for rapid prototyping and small-scale production.
This module is an excellent entry point into the world of connected embedded systems. For those familiar with microcontrollers like the Arduino Uno, the ESP32-SOLO-1 offers a significant leap in capability with built-in wireless networking. It's ideal for makers looking to add smart features to their projects without the complexity of external Wi-Fi or Bluetooth modules, and for engineers seeking a reliable and affordable solution for IoT product development.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | ESP32-S0WD |
| Architecture | Tensilica Xtensa LX6 single-core |
| Clock speed | Up to 160 MHz |
| Flash / Storage | Typically 4MB (external SPI flash) |
| RAM / SRAM | 520 KB SRAM |
| Operating voltage | 3.0V - 3.6V |
| Digital I/O pins | Up to 26 (configurable) |
| Analog / ADC | Up to 12-bit ADC (18 channels) |
| PWM | Up to 16 channels |
| Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth 4.2 BR/EDR and BLE |
| USB | None directly on module (requires external USB-to-Serial converter for programming) |
| Power input | 3.0V - 3.6V via VIN pin or 5V via USB (requires onboard regulator) |
| Dimensions | 24.5mm x 16mm x 3.7mm (module itself) |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | Power supply (3.3V) |
| GND | Ground |
| EN | Enable pin (active high) |
| GPIO0 | Boot mode selection (pull low to enter flash mode) |
| GPIO2 | General purpose I/O, also connected to onboard LED |
| GPIO4 | General purpose I/O |
| GPIO5 | General purpose I/O, SPI CS0 |
| GPIO12 | General purpose I/O, SPI MISO, also MTDI |
| GPIO13 | General purpose I/O, SPI MOSI, also MTMS |
| GPIO14 | General purpose I/O, SPI SCK, also MTDO |
| GPIO15 | General purpose I/O, SPI HD |
| GPIO16 | General purpose I/O, RXD2 |
| GPIO17 | General purpose I/O, TXD2 |
| GPIO18 | General purpose I/O, SCK |
| GPIO19 | General purpose I/O, MISO |
| GPIO21 | General purpose I/O, SDA (I2C) |
| GPIO22 | General purpose I/O, SCL (I2C) |
| GPIO23 | General purpose I/O, MOSI |
| GPIO25 | General purpose I/O, DAC1, ADC1_CH8 |
| GPIO26 | General purpose I/O, DAC2, ADC1_CH9 |
| GPIO27 | General purpose I/O, ADC1_CH7 |
| GPIO32 | General purpose I/O, ADC1_CH4 |
| GPIO33 | General purpose I/O, ADC1_CH2 |
| GPIO34 | Input only, ADC1_CH6 |
| GPIO35 | Input only, ADC1_CH4 |
| GPIO36 | Input only, ADC1_CH0 |
| GPIO39 | Input only, ADC1_CH3 |
Wiring & circuit basics
Powering the ESP32-SOLO-1 requires careful attention to voltage levels. The module itself operates at 3.3V. Most development boards that include the ESP32-SOLO-1 module will have an onboard 5V to 3.3V voltage regulator and a USB connector. If powering directly, ensure a stable 3.0V to 3.6V supply is provided to the 3V3 pin. Avoid exceeding 3.6V, as this can damage the chip. When connecting external components, remember that the ESP32-SOLO-1's GPIO pins operate at 3.3V logic levels. Connecting a 5V device directly to a GPIO pin can cause damage. Use a level shifter if interfacing with 5V systems.
A common beginner project involves blinking an LED. Connect the anode (longer leg) of an LED to a GPIO pin, such as GPIO2 (which often has an onboard LED connected). Connect the cathode (shorter leg) of the LED through a current-limiting resistor (typically 220-330 ohms) to a GND pin. The resistor prevents the LED from drawing too much current and damaging the ESP32. The GPIO pin will then be used to toggle the LED on and off.
For more advanced projects, interfacing with sensors is crucial. For example, connecting an I2C sensor like a BME280 (temperature, humidity, pressure) involves connecting the sensor's VCC to the ESP32's 3V3 pin, GND to GND, SDA to GPIO21, and SCL to GPIO22. The ESP32's built-in I2C peripheral handles the communication protocol, allowing you to read sensor data over these two pins.
Programming & getting started
The ESP32-SOLO-1 can be programmed using various toolchains. The most popular for beginners is the Arduino IDE, which requires installing the ESP32 board support package. This allows you to write C++ code using familiar Arduino functions. For more advanced users or those preferring Python, MicroPython or CircuitPython offer a Pythonic way to program the ESP32. For professional embedded development, Espressif's official ESP-IDF (Espressif IoT Development Framework) provides the most comprehensive control and features, typically used with C/C++ and CMake.
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 Boards Manager URLs. 3. Go to Tools > Board > Boards Manager, search for 'esp32', and install it. 4. Select your ESP32-SOLO-1 board from Tools > Board. 5. Connect the ESP32-SOLO-1 to your computer via a USB-to-Serial adapter (e.g., FTDI or CP2102) connected to the appropriate TX/RX pins and ensure GPIO0 is pulled low during reset to enter bootloader mode if needed. 6. Select the correct COM port under Tools > Port. 7. Upload your sketch (e.g., the Blink example).