MakerLab
ESP32ESP32-SOLO-1

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.

ESP32-SOLO-1

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 / SoCESP32-S0WD
ArchitectureTensilica Xtensa LX6 single-core
Clock speedUp to 160 MHz
Flash / StorageTypically 4MB (external SPI flash)
RAM / SRAM520 KB SRAM
Operating voltage3.0V - 3.6V
Digital I/O pinsUp to 26 (configurable)
Analog / ADCUp to 12-bit ADC (18 channels)
PWMUp to 16 channels
ConnectivityWi-Fi 802.11 b/g/n, Bluetooth 4.2 BR/EDR and BLE
USBNone directly on module (requires external USB-to-Serial converter for programming)
Power input3.0V - 3.6V via VIN pin or 5V via USB (requires onboard regulator)
Dimensions24.5mm x 16mm x 3.7mm (module itself)

Pinout & pin functions

PinFunction
3V3Power supply (3.3V)
GNDGround
ENEnable pin (active high)
GPIO0Boot mode selection (pull low to enter flash mode)
GPIO2General purpose I/O, also connected to onboard LED
GPIO4General purpose I/O
GPIO5General purpose I/O, SPI CS0
GPIO12General purpose I/O, SPI MISO, also MTDI
GPIO13General purpose I/O, SPI MOSI, also MTMS
GPIO14General purpose I/O, SPI SCK, also MTDO
GPIO15General purpose I/O, SPI HD
GPIO16General purpose I/O, RXD2
GPIO17General purpose I/O, TXD2
GPIO18General purpose I/O, SCK
GPIO19General purpose I/O, MISO
GPIO21General purpose I/O, SDA (I2C)
GPIO22General purpose I/O, SCL (I2C)
GPIO23General purpose I/O, MOSI
GPIO25General purpose I/O, DAC1, ADC1_CH8
GPIO26General purpose I/O, DAC2, ADC1_CH9
GPIO27General purpose I/O, ADC1_CH7
GPIO32General purpose I/O, ADC1_CH4
GPIO33General purpose I/O, ADC1_CH2
GPIO34Input only, ADC1_CH6
GPIO35Input only, ADC1_CH4
GPIO36Input only, ADC1_CH0
GPIO39Input 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).

Project ideas

Smart Weather StationBuild a compact weather station that measures temperature, humidity, and pressure using an I2C sensor. It will transmit data wirelessly via Wi-Fi to a cloud service or a local dashboard, utilizing GPIOs for the sensor and Wi-Fi for connectivity. This project teaches sensor interfacing and IoT data transmission.
Bluetooth Low Energy (BLE) BeaconCreate a BLE beacon that broadcasts sensor readings or device status. This is useful for proximity detection or simple asset tracking. It primarily uses the BLE capabilities of the ESP32-SOLO-1 and requires minimal GPIO interaction.
Wi-Fi Connected LED ControllerDevelop a web server on the ESP32-SOLO-1 that allows you to control an LED remotely via a web browser on your local network. This project uses Wi-Fi connectivity and GPIOs for LED control, teaching web server implementation on microcontrollers.
Low-Power Environmental MonitorDesign a battery-powered sensor node that periodically wakes up, takes readings (e.g., temperature), and sends them over Wi-Fi before going back to deep sleep. This project focuses on power management techniques and utilizes ADC for sensors and Wi-Fi for communication.
I2C Scanner and Device DiscoveryWrite a program that scans the I2C bus connected to GPIO21 (SDA) and GPIO22 (SCL) and identifies all connected I2C devices by their addresses. This is a fundamental debugging tool for any project involving multiple I2C components.
Simple Voice Command AssistantIntegrate a basic voice recognition module or use cloud-based speech-to-text services via Wi-Fi to control a device, such as turning on a light or relay. This project combines Wi-Fi, potentially I2S for audio input, and GPIO control.

Buying tips & gotchas

When purchasing an ESP32-SOLO-1, be aware that it's a module, not a development board. You'll likely need a carrier board or to integrate it into your own PCB design, which requires careful soldering and understanding of its pinout. Ensure you have a USB-to-serial adapter for programming, as there's no built-in USB. Watch out for generic ESP32 development boards that might use different ESP32 variants (e.g., dual-core) if you specifically need the single-core, lower-power characteristics of the SOLO-1. Recommended accessories include a 3.3V power supply, a USB-to-serial converter (like CP2102 or FTDI), and jumper wires for prototyping.