Hardware
ESP32
Dual-core WiFi + BT/BLE SoC at €-tier price
ESP32
Xtensa LX6 dual-core SoC 240 MHz · WiFi+BT/BLE · 520 KB RAM · 4 MB flash typical · ~€3-€5
Executive summary
- ESP32 is the family of SoCs (System-on-Chip) from Espressif Systems that combines a microcontroller, Wi-Fi, Bluetooth Classic/BLE, and optionally Zigbee/Thread/Matter on a single chip—starting at ~3 USD. It is the entry-level hardware par excellence for anyone exploring what IoT is and wanting to move from theory to their first prototypes.
- The successor to the ESP8266 (Wi-Fi only). Current families: classic ESP32 (Xtensa LX6 dual-core), ESP32-S3 (Xtensa LX7 + AI acceleration), ESP32-C3/C6 (RISC-V single-core), ESP32-H2 (RISC-V + 802.15.4 for Matter/Thread).
- The leader in consumer, maker, and many commercial IoTITermIoT (Internet of Things)The IoT (Internet of Things) is the network of physical objects with sensors, software and connectivity that collect and exchange data and act autonomously.View profile products (Sonoff, Shelly, Tasmota).
- Frameworks: Arduino, ESP-IDF (official), PlatformIO, MicroPython, CircuitPython, Espruino.
- When NOT to use it: applications with strict industrial certification requirements (STM32 with certification is better), ultra-low-power projects (BLEBTermBluetooth Low Energy (BLE)Bluetooth Low Energy (BLE) is the low-power variant of Bluetooth, for sending small amounts of data intermittently with minimal battery. It dominates wearables and proximity. Maintained by the Bluetooth SIG.View profile-only is better on the nRF52), LoRa-only projects (STM32WLSTermSTM32WLThe STM32WL is an STMicroelectronics microcontroller with a sub-GHz LoRa radio integrated on the same chip, designed for LoRaWAN nodes.View profile is better).
Families and differences
| Variant | CPU | Wi-Fi | BT/BLE | Other radios | Typical use cases |
|---|---|---|---|---|---|
| **ESP32** (classic) | Xtensa LX6 dual-core @240 MHz | 2.4 GHz b/g/n | BT Classic + BLE 4.2 | — | Generic, 7 years on the market |
| **ESP32-S2** | Xtensa LX7 single @240 MHz | 2.4 GHz | ❌ | USB OTG | USB-host devices |
| **ESP32-S3** | Xtensa LX7 dual @240 MHz | 2.4 GHz | BLE 5.0 | USB OTG, AI accel | Edge AI, audio |
| **ESP32-C3** | RISC-V single @160 MHz | 2.4 GHz | BLE 5.0 | — | Low-cost ESP8266 replacement |
| **ESP32-C6** | RISC-V single @160 MHz | 2.4 + 6 GHz (Wi-Fi 6) | BLE 5.0 | 802.15.4 (Thread/Zigbee) | Matter, Thread |
| **ESP32-H2** | RISC-V single @96 MHz | ❌ (2.4 GHz radio only) | BLE 5.0 | 802.15.4 | Matter/Thread without Wi-Fi |
Quick takeaway: for Matter, choose the ESP32-C6 or H2. For a modern general-purpose chip, the C3 or S3. The classic ESP32 is still relevant but already 7 years on the market.
The logic behind this fragmentation is deliberate. Espressif migrated from the Xtensa architecture (proprietary, licensed from Cadence) to RISC-V (open) in the C and H families to cut the core's licensing cost and gain control over its own silicon. For someone designing a product, the practical consequence is direct: an ESP32-C3 delivers performance equivalent to the old ESP8266 at a similar price but with BLE included, while the C6 and H2 families open the door to Matter and Thread without changing vendors or toolchains. Choosing a variant, then, is not a matter of raw power but of which radios the project demands and how many years of SDK support you'll need to maintain.
Technical specifications (classic ESP32 — reference)
| Aspect | Value |
|---|---|
| CPU | Xtensa LX6 32-bit dual-core up to 240 MHz |
| RAM | 520 KB SRAM (of which ~320 KB available to the app) |
| Flash | External, typically 4-16 MB |
| Wi-Fi | 802.11 b/g/n 2.4 GHz, STA/AP/mixed mode |
| Bluetooth | Classic + BLE 4.2 |
| GPIOs | 34 (of which 6 input-only) |
| ADC | 18 channels, 12-bit |
| DAC | 2 channels, 8-bit |
| PWM | LEDC (16 hardware channels) |
| SPI / I2C / I2S / UART | multiple buses |
| Sleep current | ~10 μA deep sleep, ~2.5 mA modem sleep |
| Active current | ~80 mA Wi-Fi TX, ~200 mA peak |
| Temperature | -40 to +85 °C industrial |
| Price | ~3 USD chip, ~5 USD module, ~10 USD dev board |
These figures hide the design decisions that most affect a real product. The ~320 KB of RAM available to the application looks generous next to an 8-bit MCU, but it runs out fast once TLS, a display buffer, and an MQTTProtocolMQTTThe standard pub/sub protocol of IoTView profile stack coexist at the same time: sizing memory is the first bottleneck in serious projects. The ~80 mA draw during Wi-Fi transmission dooms any battery design that doesn't manage deep sleep well, and the ADC's well-known non-linearity makes calibration mandatory whenever you measure analog signals with precision. Reading the table isn't enough; you have to translate each row into a concrete design constraint before committing to the chip.
Real-world use cases
| Sector | Product / project |
|---|---|
| **Consumer smart home** | Sonoff, Shelly (1, 2.5, Plus, Pro), Tasmota, Athom |
| **DIY home automation** | Home Assistant + ESP32 with ESPHome or Tasmota |
| **Wearables** | M5Stack, T-Watch, various prototypes |
| **Educational robotics** | BalaC, ESP-Now mesh between robots |
| **Low-cost [Industry 4.0](/en/use-cases/industria-4-0)** | Data acquisition on machines, IoT retrofit with low-cost [IoT sensors](/en/hardware/sensores-iot) |
| **Audio** | Bluetooth speakers, internet radio, mp3 players |
| **IoT cameras** | ESP32-CAM, ESP-EYE |
| **POS / kiosks** | Hardware with a TFT touchscreen |
Frameworks and development environments
Arduino IDE (easy entry point)
The following example connects the ESP32 to an MQTT broker using PubSubClient:
#include <WiFi.h>
#include <PubSubClient.h>
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
WiFi.begin("ssid", "pass");
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer("broker.local", 1883);
client.connect("esp32-01");
client.publish("home/livingroom/temp", "22.5");
}
void loop() {
client.loop();
}ESP-IDF (official Espressif, production)
C / C++ with FreeRTOS, maximum control. CMake build system. A steeper curve, but access to every feature.
#include "esp_wifi.h"
#include "mqtt_client.h"
void app_main() {
esp_wifi_init(...);
esp_mqtt_client_handle_t client = esp_mqtt_client_init(...);
esp_mqtt_client_publish(client, "home/livingroom/temp", "22.5", 0, 1, 0);
}PlatformIO (Arduino IDE alternative)
A modern CLI, dependency management, multi-board profiles. Recommended for serious projects without going to pure ESP-IDF.
MicroPython / CircuitPython
For rapid prototyping without compiling:
import network, time
from umqtt.simple import MQTTClient
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("ssid", "pass")
client = MQTTClient("esp32-01", "broker.local")
client.connect()
client.publish(b"home/livingroom/temp", b"22.5")Connectivity: how it connects to the internet
The ESP32 handles an internal TCP/IP stack (LwIP). One of its most common production combinations is connecting to cloud IoT platforms such as AWS IoT Core over MQTT. It natively supports:
- Simultaneous Wi-Fi STA + AP ("AP+STA" mode)
- HTTP/HTTPS server and client (esp_http_server, esp_http_client)
- MQTT 3.1.1/5 (esp_mqtt_client)
- WebSocket
- mDNS (local discovery)
- ESP-NOW (proprietary peer-to-peer 2.4 GHz protocol, no Wi-Fi)
- OTA updates (over-the-air firmware)
ESP32 vs the alternatives
| MCU | Advantage vs ESP32 | Disadvantage vs ESP32 |
|---|---|---|
| **ESP8266** | Cheaper | No BLE, single-core only, less RAM |
| **[nRF52840](/en/hardware/nrf52840)** (Nordic) | Better BLE/Thread/Matter, ultra-low-power | No Wi-Fi, smaller ecosystem |
| **[STM32WL](/en/hardware/stm32wl)** | Integrated LoRa, industrial certification | No Wi-Fi/BT, more expensive |
| **[Raspberry Pi Pico W](/en/hardware/raspberry-pi-iot)** | Programmable in Python/C, Raspberry Pi community | Wi-Fi only (no BT on the standard Pico W), fewer radio features |
| **NXP / Microchip / TI MCUs** | Industrial certification, enterprise support | Much more expensive, less maker-oriented ecosystem |
The conclusion of this comparison is not that the ESP32 always wins, but that it wins on the price-versatility-community axis. When the deciding factor is extreme battery life, the nRF52840 clearly beats it; when it's kilometer-scale range, the STM32WL with integrated LoRa has no rival in its class; and when strict industrial certification is required, MCUs from NXP or ST with enterprise support justify their premium. The ESP32 is the reasonable default for most prototyping and consumer-production projects precisely because it isn't the best at any single extreme, but it is very capable across all of them at once.
Pros and cons
Pros
- Unbeatable price: 3 USD for an ESP32-C3 chip, ~10 USD for a complete dev board
- Huge ecosystem: Arduino
CompanyArduinoOpen source hardware and software platform for makersView profile libraries, frameworks, an active Spanish-speaking community - Multi-radio: Wi-Fi + BT/BLE + (C6/H2) Thread/Zigbee
ProtocolZigbeeVeteran 2.4 GHz mesh — backbone of many smart home hubsView profile on a single chip
- Good documentation: the ESP-IDF docs are solid
- Active Espressif: new chips every year, the classic ESP32 still supported
- OTA updates out of the box
- Matter ready: official ESP32-C6/H2 with the ESP-Matter SDK
Cons
- Power consumption: the classic ESP32 is not a low-power leader (vs the nRF52, which is better for BLE-only)
- Variable module quality: cheap Chinese modules can have inconsistent components
- Certification: for CE/FCC you need a pre-certified module (don't use a bare chip)
- GPIO ADC noise: the classic ESP32's ADC has known non-linearity—always calibrate
- No industrial spec: it isn't a chip for -40 to +125 °C automotive environments
- Security: the ESP32 has secure boot and flash encryption, but you have to enable them explicitly. Review the IoT security guide for best practices before taking any project to production.
Getting started: your first project
Hardware
- Recommended dev board: ESP32-DevKit-C-32 or LilyGO TTGO T-Display (with a screen)
- Programming: USB-C cable
- Power: USB from the PC during development
Software
- Install Arduino IDE 2.x or VSCode + PlatformIO
- Add the board manager:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Select the "ESP32 Dev Module" board
- Load the
WiFi > WiFiScanexample
Hello World: Wi-Fi + LED
#include <WiFi.h>
const int LED = 2; // On-board LED
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200);
WiFi.begin("ssid", "pass");
while (WiFi.status() != WL_CONNECTED) {
digitalWrite(LED, !digitalRead(LED));
delay(500);
}
digitalWrite(LED, HIGH);
Serial.println(WiFi.localIP());
}
void loop() {}Primary sources
- Espressif ESP32 product page (accessed: 2026-05)
- ESP-IDF docs (accessed: 2026-05)
- Arduino-ESP32 GitHub
- ESPHome — for Home AssistantHTermHome AssistantHome Assistant is an open-source home automation platform focused on local control and privacy, with broad integration support.View profile
- PlatformIO
- Random Nerd Tutorials (EN maker-community reference)
Frequently asked questions
ESP32 vs ESP8266?+
The ESP32 has BLE, a dual core, more RAM (520 KB vs 80 KB), more GPIOs, and more peripherals. The ESP8266 is still relevant for super-low-cost Wi-Fi-only projects (the ESP8266EX exists at ~1 USD). For new projects: the ESP32 (classic) or the ESP32-C3 replace the ESP8266.
Which ESP32 should I choose in 2026?+
General-purpose + consumer smart home: classic ESP32 or ESP32-S3 (better on-device AI) Cost-optimized Wi-Fi+BLE: ESP32-C3 (RISC-V, ~2 USD) Matter / Thread / Zigbee: ESP32-C6 (newer) or ESP32-H2 (radio only, no Wi-Fi) Native Wi-Fi 6: ESP32-C6
Is the ESP32 suitable for commercial production?+
Yes. Thousands of products use it (Sonoff, Shelly, Tasmota, Athom). For production, use pre-certified FCC/CE modules from Espressif (ESP32-WROOM-32, ESP32-WROVER) or from certified manufacturers, not bare chips.
Which framework: Arduino, ESP-IDF, MicroPython?+
Arduino: rapid prototyping, a massive library ecosystem, enough for many things ESP-IDF: serious production, full control, performance, certification MicroPython: education, quick scripting, not serious production
Is the ESP32 good for low-power IoT (battery for years)?+
With care: yes, but it's not the king. ESP32 deep sleep ~10 μA, modem sleep 2.5 mA. For a battery that lasts years with TX once an hour, the ESP32 works. For a battery lasting 5+ years with more frequent TX, the nRF52840 (BLE only) or the STM32WL (LoRa) are superior.
Programming: C/C++ or Python?+
C/C++ with ESP-IDF or Arduino for anything going to production or needing performance. MicroPython only for rapid prototyping, educational scripts, or internal tools. CircuitPython is similar.