- All products
- Development Boards
- ESP32
- ESP32 S WiFi BLE SOC Module
- ESP32
The module supports WiFi 802.11 b/g/n and Bluetooth 4.2, making it suitable for a wide range of networking applications. It also includes integrated peripherals such as UART, SPI, I2C, PWM, ADC, and DAC interfaces, enabling easy connectivity with sensors, displays, and other electronic components. The ESP32-S can be programmed using several development environments, including Arduino IDE, MicroPython, and Lua, enabling fast prototyping and flexible development for IoT devices. With ultra-low power consumption and powerful processing capability, the ESP32-S is ideal for smart home devices, industrial wireless control systems, and modern IoT hardware products. Its SMD-38 package allows it to be easily integrated into PCB designs using standard SMT manufacturing processes, making it suitable for both prototyping and mass production.
Features:
- Compact ESP32 WiFi + Bluetooth SoC module
- Supports WiFi 802.11 b/g/n and Bluetooth 4.2
- 32-bit low power CPU with clock speed up to 160 MHz
- Processing performance up to 600 DMIPS
- Built-in 520 KB SRAM
- Integrated 32 Mbit Flash memory
- Supports UART, SPI, I2C, PWM, ADC, and DAC interfaces
- SMD-38 package for easy PCB soldering
- Onboard PCB antenna for wireless communication
- Integrated metal shielding for signal stability
- Deep sleep current as low as 6.5 μA
- Supports OpenOCD debugging interface
- Supports STA / AP / STA+AP WiFi modes
- Supports SmartConfig and AirKiss WiFi configuration
- Supports firmware upgrade via serial or OTA (FOTA)
Principle of Work:
The ESP32-S module integrates a dual-mode wireless system and a powerful microcontroller into a single chip. The internal CPU processes data from connected sensors and peripherals while managing wireless communication through WiFi or Bluetooth.
The module connects to other devices through multiple communication interfaces such as UART, SPI, and I2C. These interfaces allow it to interact with external hardware including displays, sensors, relays, and actuators.
When programmed using environments such as Arduino IDE or MicroPython, the ESP32-S executes user applications that control connected hardware and communicate with cloud services or local networks. Its built-in FreeRTOS operating system allows efficient multitasking, enabling simultaneous network communication and device control.
Pinout of the Module:

- VCC: Power supply input (3.3V)
- GND: Ground connection
- EN: Chip enable pin
- GPIO Pins: General purpose digital input/output pins
- TX / RX: UART communication pins
- SDA / SCL: I2C communication pins
- MOSI / MISO / SCK: SPI communication interface
- ADC Pins: Analog input pins for sensor readings
- DAC Pins: Analog output pins
Applications:
- Smart home automation systems
- Intelligent building control
- Industrial wireless automation
- Wearable electronics devices
- Wireless sensor networks
- IP cameras and monitoring devices
- Smart agriculture systems
- IoT connected devices
Circuit:
The Ai-Thinker ESP32-S is a barebones ESP32 module, so to upload code you only need a few essential connections. The ESP32 uses UART (serial) programming and requires the chip to be placed in download mode.
| ESP32-S Pin | Connect To | Purpose |
|---|---|---|
| 3V3 | 3.3V Power | Power supply |
| GND | GND | Ground |
| TXD0 (GPIO1) | RX of USB-TTL | Serial transmit |
| RXD0 (GPIO3) | TX of USB-TTL | Serial receive |
| EN | 3.3V through 10k resistor | Chip enable |
| GPIO0 | GND (only during flashing) | Bootloader mode |
Connecting with Arduino First Time
- Install the Arduino IDE on your computer.
- Open Arduino IDE and go to File → Preferences.
- Add the ESP32 board manager URL:
https://dl.espressif.com/dl/package_esp32_index.json
- Go to Tools → Board → Boards Manager.
- Search for ESP32 and install the ESP32 board package.
- Select ESP32 Dev Module from the board list.
- Connect the ESP32 board through USB-to-Serial adapter.
- Select the correct COM port and upload your program.
Upload Procedure
- Connect the circuit above.
- Hold GPIO0 to GND.
- Press reset (EN) or power the board.
- Upload code from Arduino IDE
- After uploading, disconnect GPIO0 from GND and reset the board.
Code:
The following example connects the ESP32 to a WiFi network and prints the assigned IP address in the Serial Monitor.
#include <WiFi.h>
const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi Connected");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
}
Technical Details:
- Chipset: ESP32
- Wireless Connectivity: WiFi 802.11 b/g/n + Bluetooth 4.2
- CPU: 32-bit processor up to 160 MHz
- Processing Performance: Up to 600 DMIPS
- SRAM: 520 KB
- Flash Memory: 32 Mbit
- Interfaces: UART, SPI, I2C, PWM, ADC, DAC
- Operating Voltage: 3.3V
- Deep Sleep Current: ~6.5 μA
- Package Type: SMD-38
Resources:
Comparisons:
Compared with earlier WiFi modules such as ESP8266, the ESP32-S provides significantly improved performance and functionality:
- Dual Wireless Capability: Supports both WiFi and Bluetooth communication.
- Higher Processing Power: Faster CPU and greater computational performance.
- More GPIO Interfaces: Supports more peripherals and hardware connections.
- Lower Power Modes: Ultra-low deep-sleep current, suitable for battery-powered devices.
- Advanced Development Support: Compatible with Arduino IDE, MicroPython, and FreeRTOS environments.
The module supports WiFi 802.11 b/g/n and Bluetooth 4.2, making it suitable for a wide range of networking applications. It also includes integrated peripherals such as UART, SPI, I2C, PWM, ADC, and DAC interfaces, enabling easy connectivity with sensors, displays, and other electronic components. The ESP32-S can be programmed using several development environments, including Arduino IDE, MicroPython, and Lua, enabling fast prototyping and flexible development for IoT devices. With ultra-low power consumption and powerful processing capability, the ESP32-S is ideal for smart home devices, industrial wireless control systems, and modern IoT hardware products. Its SMD-38 package allows it to be easily integrated into PCB designs using standard SMT manufacturing processes, making it suitable for both prototyping and mass production.
Features:
- Compact ESP32 WiFi + Bluetooth SoC module
- Supports WiFi 802.11 b/g/n and Bluetooth 4.2
- 32-bit low power CPU with clock speed up to 160 MHz
- Processing performance up to 600 DMIPS
- Built-in 520 KB SRAM
- Integrated 32 Mbit Flash memory
- Supports UART, SPI, I2C, PWM, ADC, and DAC interfaces
- SMD-38 package for easy PCB soldering
- Onboard PCB antenna for wireless communication
- Integrated metal shielding for signal stability
- Deep sleep current as low as 6.5 μA
- Supports OpenOCD debugging interface
- Supports STA / AP / STA+AP WiFi modes
- Supports SmartConfig and AirKiss WiFi configuration
- Supports firmware upgrade via serial or OTA (FOTA)
Principle of Work:
The ESP32-S module integrates a dual-mode wireless system and a powerful microcontroller into a single chip. The internal CPU processes data from connected sensors and peripherals while managing wireless communication through WiFi or Bluetooth.
The module connects to other devices through multiple communication interfaces such as UART, SPI, and I2C. These interfaces allow it to interact with external hardware including displays, sensors, relays, and actuators.
When programmed using environments such as Arduino IDE or MicroPython, the ESP32-S executes user applications that control connected hardware and communicate with cloud services or local networks. Its built-in FreeRTOS operating system allows efficient multitasking, enabling simultaneous network communication and device control.
Pinout of the Module:

- VCC: Power supply input (3.3V)
- GND: Ground connection
- EN: Chip enable pin
- GPIO Pins: General purpose digital input/output pins
- TX / RX: UART communication pins
- SDA / SCL: I2C communication pins
- MOSI / MISO / SCK: SPI communication interface
- ADC Pins: Analog input pins for sensor readings
- DAC Pins: Analog output pins
Applications:
- Smart home automation systems
- Intelligent building control
- Industrial wireless automation
- Wearable electronics devices
- Wireless sensor networks
- IP cameras and monitoring devices
- Smart agriculture systems
- IoT connected devices
Circuit:
The Ai-Thinker ESP32-S is a barebones ESP32 module, so to upload code you only need a few essential connections. The ESP32 uses UART (serial) programming and requires the chip to be placed in download mode.
| ESP32-S Pin | Connect To | Purpose |
|---|---|---|
| 3V3 | 3.3V Power | Power supply |
| GND | GND | Ground |
| TXD0 (GPIO1) | RX of USB-TTL | Serial transmit |
| RXD0 (GPIO3) | TX of USB-TTL | Serial receive |
| EN | 3.3V through 10k resistor | Chip enable |
| GPIO0 | GND (only during flashing) | Bootloader mode |
Connecting with Arduino First Time
- Install the Arduino IDE on your computer.
- Open Arduino IDE and go to File → Preferences.
- Add the ESP32 board manager URL:
https://dl.espressif.com/dl/package_esp32_index.json
- Go to Tools → Board → Boards Manager.
- Search for ESP32 and install the ESP32 board package.
- Select ESP32 Dev Module from the board list.
- Connect the ESP32 board through USB-to-Serial adapter.
- Select the correct COM port and upload your program.
Upload Procedure
- Connect the circuit above.
- Hold GPIO0 to GND.
- Press reset (EN) or power the board.
- Upload code from Arduino IDE
- After uploading, disconnect GPIO0 from GND and reset the board.
Code:
The following example connects the ESP32 to a WiFi network and prints the assigned IP address in the Serial Monitor.
#include <WiFi.h>
const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi Connected");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
}
Technical Details:
- Chipset: ESP32
- Wireless Connectivity: WiFi 802.11 b/g/n + Bluetooth 4.2
- CPU: 32-bit processor up to 160 MHz
- Processing Performance: Up to 600 DMIPS
- SRAM: 520 KB
- Flash Memory: 32 Mbit
- Interfaces: UART, SPI, I2C, PWM, ADC, DAC
- Operating Voltage: 3.3V
- Deep Sleep Current: ~6.5 μA
- Package Type: SMD-38
Resources:
Comparisons:
Compared with earlier WiFi modules such as ESP8266, the ESP32-S provides significantly improved performance and functionality:
- Dual Wireless Capability: Supports both WiFi and Bluetooth communication.
- Higher Processing Power: Faster CPU and greater computational performance.
- More GPIO Interfaces: Supports more peripherals and hardware connections.
- Lower Power Modes: Ultra-low deep-sleep current, suitable for battery-powered devices.
- Advanced Development Support: Compatible with Arduino IDE, MicroPython, and FreeRTOS environments.

