Espressif's ESP32 line has expanded far beyond the original dual-core Wi-Fi/Bluetooth chip that first popularised low-cost IoT. What started as a chip ubiquitous in smart home technology has grown to be something so much more than that, building out an entire ecosystem of small, low-cost microcontrollers that anyone can use to do, well, basically anything. Today, the name covers several unrelated silicon "series" that share the same ESP-IDF toolchain but differ in CPU architecture, wireless mix, memory size, and peripheral blocks. We'll break down the major differences between all of them, as there's a lot to know if you're looking to invest in one of these to ensure you make the right choice.
What is an ESP32? What can it be used for?
It's a catch-all term
At its core, "ESP32" is a catch-all label for a family of single-chip microcontrollers from Espressif, packing a CPU, radio front-end, hardware crypto, and I/O into a small board. Depending on the series you pick, that radio can be anything from classic Wi-Fi 4 plus Bluetooth Classic (the original 32-Series) to dual-band Wi-Fi 6 with Thread, Zigbee, and Bluetooth LE 5.4 (such as in the newer C and H-series parts) or even no wireless at all in the powerhouse P-series.
An ESP32 board usually needs little more than power to be useful, and a vanilla ESP32 without any additional parts can be great in a Home Assistant setup as a Bluetooth proxy. That extreme integration, plus Espressif’s free ESP-IDF SDK and the community-maintained Arduino core, makes the parts almost frictionless to prototype with and incredibly cheap to purchase. Makers flash firmware over USB, and factories panelise certified WROOM or MINI modules and put them in anything from smart lamps to smart plugs, to thermostats, to even point-of-sale readers without any recertification process required.
In fact, if you own a bunch of smart devices, chances are that you likely have some variant of an ESP32 inside your home already. Many smart devices will pack an ESP32 or the even cheaper ESP8266 inside, which just goes to show how prevalent these little chips are.
6 smart home devices anyone can build with a cheap ESP32 and an even cheaper sensor
These are some great DIY projects that you can do for cheap.
How to identify an ESP32
The naming conventions can be confusing
First and foremost, technically speaking, an ESP32 series (for example, the ESP32-S3), specifically refers to the System-on-Chip, or SoC, and anything built around it is referred to as an ESP32 module. To give you an idea, the ESP32-WROOM-32E is a module rather than a full board, meaning that it's the chip in a form that can be connected to a board, and it includes the passive components required by the SoC, such as the crystal oscillator for timekeeping or the antenna. In the above photo, you can see "ESP32-WROOM-32" printed on the module. The module is what a lot of people think of when purchasing an ESP32 for home automation and testing purposes, though they're still not really what you're purchasing when you buy an ESP32.
What you purchase when buying an ESP32 is typically a board with a module pre-installed, as these boards break out the I/O pins from the module to the pin headers and make it easy to interface with. To give you an idea, one example of a board with an ESP32 module pre-installed is the ESP32-DevKitC V4 from Espressif, which can incorporate many of the different ESP32 modules, such as the ESP32-WROOM-32E. These modules come in the following forms:
- MINI: A compact form factor, hence the name. Only available with smaller flash sizes, such as 4MB or 8MB.
- WROOM: A larger module capable of incorporating more flash and pseudo-static RAM, also known as PSRAM. "WROOM," when referring to the ESP32 and ESP32-S2, does not include PSRAM.
- WROVER (legacy): A legacy module used only for the ESP32 and ESP32-S2, denoting the inclusion of 8MB of PSRAM. This is no longer used as WROOM modules support both flash and PSRAM.
As for the actual part numbers, this is where it can be especially easy to get confused by the sheer volume of options available. An "ESP32" doesn't just refer to one SoC, and instead, refers to an entire family of chips. For chips such as the ESP32-D0WDR2-V3, you can identify the following:
- D: Dual-core
- 0: 0MB embedded flash
- WD: Connection, referring to Wi-Fi and Bluetooth dual mode
- R2: 2MB in-package PSRAM
- V3: Chip revision 3.0 or newer
ESP32 part numbers typically follow this structure:
ESP32-(family)[F(temp)(flash)][R(psram)][extra]
- Family: Refers to devices like the P4, S3, H6, and so on
- F: Indicates presence of onboard flash
- Temp: Operating temperature denoted by "N" or "H", meaning normal or high
- R: Followed by PSRAM amount
- Extra: Chip-specific, found on the datasheet
As an example of the "extra" parameter, when it comes to the ESP32-D0WDQ6-V3, "Q6" would fall under the "extra" category and, in this instance, refers to the packaging type being used. This nomenclature can change between chips, and it's always recommended to read the official datasheets to understand what you're buying first. These are available on Espressif's website. Having said that, Espressif has been quite good at largely keeping things consistent over the years after the original ESP32.
Finally, these naming conventions also apply to modules. The ESP32-S3-WROOM-1-N16R8 refers to an ESP32 S3 WROOM module that can operate under normal temperatures, packs 16MB of flash, and has 8MB of PSRAM. Keep in mind that ROM and internal RAM are consistent across the entire series for each SoC family, so those are not declared in the part number but can be found in the official datasheet.
Finally, aside from the original ESP32, the series is split into four main series.
- C: Cost-optimized RISC-V cores with many connectivity options
- S: High-performance SoCs with additional features
- H: BLE and 802.15.4 compatible SoCs without a Wi-Fi radio
- P: High-performance SoCs without wireless connectivity, aimed at both Human Machine Interfaces (HMIs), such as displays and cameras, or edge processing applications
With all of that explanation out of the way, we'll break down all of the main ESP32 modules and highlight the main advantages of each.
Different types of ESP32
Classic ESP32
- Wi-Fi
- Classic Bluetooth
- BLE 4.2
- Matter over Wi-Fi
- Dual-core LX6 Xtensa at 240 MHz
The original ESP32 is actually on the more powerful end of the scale when it comes to these microcontrollers. It couples up to two 240 MHz LX6 Xtensa processor cores with 2.4 GHz 802.11 b/g/n Wi-Fi support, a full Bluetooth and BLE 4.2 radio, and Ethernet support. "Xtensa" also has its own ISA, so like RISC-V, Arm, x86_64, and others, Xtensa is yet another option in the field. It's a user-customizable 32-bit ISA, and the base ISA uses Reduced Instruction Set Computer (RISC) instructions.
With 520 KB of on-chip SRAM and optional external PSRAM, it remains the only member that can stream Bluetooth audio while maintaining Wi-Fi traffic, which makes it popular for connected speakers, gateways, and dual-core FreeRTOS projects. For example, Squeezelite-esp32 can turn your ESP32 into a media server that can stream audio to a Bluetooth speaker. This is all made possible by the external QSPI interface, which can stream PSRAM at 133 MHz, fast enough to sustain Bluetooth Classic A2DP audio. Everything else is Bluetooth Low Energy, so for "classic" Bluetooth, the original ESP32 should be your go-to.
One other beloved aspect of the ESP32 is its DAC, packing two 8-bit DACs which allow you to generate analog signals on two separate channels. The only other ESP32 that has this is the ESP32-S2. This is a pretty easy "difficulty" to overcome, though, as you can bring your own DAC to any ESP32 (except for the C2) to enable audio support thanks to Inter-IC Sound, also known as I2S. It even supports Matter over Wi-Fi.
ESP32-S2
- Wi-Fi
- No Bluetooth at all
- Single-core LX6 Xtensa at 240 MHz
The ESP32-S2 keeps the 240 MHz Xtensa pipeline but drops one of the two cores and culls Bluetooth altogether to shave both the power and die area. The freed silicon resurfaces as a full-speed USB-OTG PHY and an ADC matrix twice the size of the classic ESP32, while the SRAM drops to 320 KB. Vector FPU instructions added to the ISA improve single-core DSP throughput, and its USB-OTG device/host block is unique, matched only by its S3 successor and the ESP32-P4, which we'll get to.
The ESP32-S2 is a Wi-Fi-only MCU that can enumerate as an HID, CDC, or M-SC device without an external bridge, making it attractive for USB gadgets, mass-market cameras, and low-budget IoT nodes that don't need any Bluetooth capabilities at all. It's a great, low-cost, low-footprint ESP32 for specific applications. It also has support for an RGB display, a camera interface, and touch input. It has 43 GPIO pins.
ESP32-S3
- Wi-Fi
- BLE 5.0
- Matter over Wi-Fi
- WPA3 support
- Dual-core LX6 Xtensa at 240 MHz
Restoring dual-core capabilities and Bluetooth Low Energy support, the S3 bumps on-chip SRAM to 512 KB, adds LP-SRAM, and grafts AI vector extensions onto the Xtensa pipeline, though it retains the same 240 MHz clock speed. This device is a lot closer to the classic ESP32 in many ways, packing both Wi-Fi 4 and Bluetooth again, though only Bluetooth Low Energy 5.0 rather than classic Bluetooth. The entire radio has essentially been refreshed (though it stays in the 2.4 GHz band), packing 2 Mbit/s streaming over Bluetooth with direction finding and long-range options.
There are a handful of other changes too, including USB support, adding AI and FPU extension support, and a new low-power 17.5 MHz RISC-V CPU. Plus, it gets Matter support over Wi-Fi, and it adds an extra couple of GPIO pins over the S2, bringing it up to 45.
ESP32-C2
- Wi-Fi
- BLE 5.0
- Matter over Wi-Fi
- WPA3 support
- Single-core RISC-V at 120 MHz
As the entry point to the cost-optimised C-series, the ESP32-C2 is built around a single-core 32-bit RISC-V CPU clocked at up to 120 MHz. 272 KB of SRAM (but no PSRAM support) leaves just enough head-room for an RTOS, a basic web server, or a BLE provisioning stack, which is exactly what this part is meant for: low-traffic, high-volume devices (smart bulbs, sockets, sensors) that may have once used something like an ESP8266 but now need Matter or BLE onboarding.
2.4 GHz Wi-Fi 4 and Bluetooth LE 5.0 share the same radio, and the recent 2.0 version of the C2 even adds approximately 20 KB of SRAM when used with ESP-IDF and an additional 100KB or so of flash. Hardware TLS acceleration (such as AES, ECC, and SHA) is available, and there are 14 GPIO pins available.
ESP32-C3
- Wi-Fi
- BLE 5.0
- BLE Mesh
- Matter over Wi-Fi
- WPA3 support
- Single-core RISC-V at 160 MHz
Think of the C3 as a mid-point between the price-conscious C family of SoCs and the more powerful P family. It has 400 KB on-chip SRAM, the same single-core 160 MHz RISC-V, and adds digital signature RSA support on top of either 22 or 16 GPIO pins, an increase from the 14 of the C2. This is the ESP32 model that powers my Seeed Studio ePaper Panel, and without implementing deep sleep mode, it can still last a couple of days on the 2000 mAh battery.
The C3 has Wi-Fi 4, Bluetooth LE 5.0 (2 Mbit/s, Long Range, Direction Finding), and it's an ideal chip for battery-powered sensors and lighting controllers. With up to 22 GPIO pins, it's a great Arduino replacement on a budget, and perfect for more basic projects. In particular, the "ESP32C3 Super Mini" board can be found for super cheap, though you'll need to be careful when purchasing one.
ESP32-C5 and ESP32-C6
- Dual-band Wi-Fi (only for C5)
- BLE 5.0
- BLE Mesh
- Matter over Wi-Fi, Thread
- Zigbee support
- WPA3 support
-
RISC-V CPU:
- C5: 240 MHz with 40 MHz low-power CPU
- C6: 160 MHz with 20 MHz low-power CPU
The C5 is where the C series goes dual-band, and it's the first (and only, at the time of writing) Espressif part to handle both 2.4 GHz and 5 GHz, plus it even supports Wi-Fi 6. It packs a single-core 240 MHz RISC-V CPU plus a 40 MHz low-power RISC-V core. Dual-band Wi-Fi 6 means that it supports OFDMA uplink/downlink and Target Wake-Time, with the latter enabling better power-saving options.
Even better, the C5 supports both BLE 5.0 and Zigbee 3.0/Thread 1.4, allowing you to build your own Zigbee or Thread-enabled device with one of these. It packs 384 KB of high-power SRAM, 16 KB of low-power SRAM, and a 40 MHz low-power RISC-V core.
If you don't care for dual-band support, the C6 is a very similar option that cuts out 5 GHz capabilities. It's clocked down to 160 MHz, and its low-power companion core jumps down to 20 MHz, but you jump up to 512 KB of SRAM in exchange for a loss of PSRAM support.
ESP32-H2 and ESP32-H4
- No Wi-Fi
-
BLE
- H2: BLE 5.0
- H4: BLE 5.4, LE Audio, Direction Finding
- BLE Mesh
- Matter over Thread
- Zigbee support
-
RISC-V CPU:
- H2: 96 MHz
- H4: Dual-core 96 MHz
The ESP32 "H" series of SoCs is a particularly interesting one, as it drops Wi-Fi entirely in favour of Zigbee, Thread, and Bluetooth. The H2 has a single 96 MHz RISC-V core, 320 KB SRAM, and an incredibly low power consumption. For context, in deep sleep mode, Espressif says that this chip's power consumption will go as low as 7 µA. In light sleep mode, with peripherals enabled, it still goes as low as 85 µA. With the right optimization and battery, this could potentially last for months on a single charge, depending on your use case.
The H4 doubles down on a lot of the H2, packing two 96 MHz cores, jumping to BLE 5.4, PSRAM support, and Bluetooth LE Audio. It's very similar, and power consumption will rise when using those extra features, but it still maintains a clear focus on being a low-powered, affordable chip.
ESP32-P4
- Ethernet only
- H264 encoder
- Dual-core RISC-V at 400 MHz
The P series chips are aimed at performance, and a look at the spec sheet will tell you exactly why. The P4 only has Ethernet support, but it carries dual high-performance RISC-V cores running up to 400 MHz with Vector/FPU and AI extensions, 768 KB high-performance SRAM, a 2-lane MIPI-DSI for 70 FPS 720p panels (or 40 FPS 1080p panels), and a hardware H.264 encoder for MJPEG or RTSP camera widgets.
On top of all of that, USB 2.0 HS OTG, three Two-Wire Automotive Interface (TWAI) controllers, and 55 GPIOs make it feel more like a micro-SoC than a microcontroller. Coupled with up to 32 MB of external PSRAM, the P4 powers Espressif's "ESP32-P4-EYE" vision kit and is pitched at video doorbells, 3D printers, and kiosk UIs.
ESP32s can be overwhelming
There's a lot to learn
Truth be told, there's a lot more to each of the ESP32s than just what I've covered here, and this serves as a high-level overview of the primary differences between all of them. They each have different strengths and weaknesses, and when incorporating them into your own project, you'll need to carefully weigh up the capabilities of each of them to ensure you're getting exactly what you need. The modules listing page on Espressif's website can also be incredibly useful, as is the comparison page and the one-pager product portfolio PDF. I've referred back to these a lot when weighing up which chips I need for a project, and it's likely that my next will either be the H4 or the C6.
If you're only getting started, an ESP32-DevKit V4 is a great way to feel out the capabilities of these little devices. I've been using my ESP32 boards with ESPHome, and it's been a great way to get started. Plus, when you realize the capabilities of devices like the ESP32 Cheap Yellow Display, you'll likely end up hooked.
