ESP microcontrollers are renowned for their affordability, performance, and well-balanced feature set, including support for wireless communications.
This makes ESP microcontrollers very popular for DIY projects.
On the downside, ESP microcontrollers are power-hungry and may not be the best choice for battery-powered portable devices. Their power consumption during normal operation is well above 100mA, whereas the most power-efficient microcontrollers (i.e. the Nordic nRF52 series such as the nRF52840) consume just 4-8mA.
Overview
The ESP family of microcontrollers has grown quite large over time. For general-purpose DIY projects, however, only a few models are relevant:
Microcontroller | Remark | Successor |
---|---|---|
ESP8266 | Single-Core Simple MCU, many users transitioned to this MCU from Arduino | ESP32-C3, ESP32-S2 |
ESP32S | Powerful Two-Core MCU, has become DIY default for many projects | ESP32-S3 |
The first ESP microcontroller with overwhelming traction was the ESP8266. In 2016, the much more powerful dual-core ESP32S started to replace the ESP8266 and established itself as an affordable general-purpose DIY standard.
While this is still the case, a number of successor microcontrollers have surfaced. In a nutshell:
- For simple projects that used ESP8266 previously, today ESP32-S2 or ESP32-C3 are used.
- For more advanced projects that used ESP32S before, today ESP32-S3 often is a better choice.
The Espressif Product Comparison provides a complete list of models and specs.
Specialized ESP32 Models
Some ESP family members focus primarily on new radio standards such as Thread, Matter, and WiFi 5GHz.
Unless this is important for you, you can safely ignore these MCUs:
Microcontroller | Remark | Key Radio Standards |
---|---|---|
ESP32-C6 | Adds Wi-Fi 6, Thread, Zigbee | Wi-Fi 6 (2.4 GHz), BLE 5.0, IEEE 802.15.4 (Thread, Zigbee) |
ESP32-H2 | Focus on Thread/Zigbee, no Wi-Fi | IEEE 802.15.4 (Thread, Zigbee), BLE 5.2 |
ESP32-P4 | Newest member, supports Wi-Fi 5 GHz | Wi-Fi 2.4 GHz & 5 GHz, BLE 5.x |
UART and USB Support
The initial ESP models (ESP8266, ESP32S) require a separate UART-to-USB chip (like CH340, CP2102, or FTDI) for programming and serial communication via USB.
This often required the installation of specific drivers on the PC, and for terminal outputs, it was crucial to set the correct baud rates.
All newer ESPs come with native USB hardware (USB-OTG). This allows them to connect directly to a computer via USB for programming and serial communication, without the need for a separate UART-to-USB bridge chip.
While this theoretically simplifies connecting the MCU to a PC (no special drivers required, no baud rate), in reality it initially caused other issues, mostly related to the tools that use the USB connection (programmer software).
One reason is that native USB connections can be established using different techniques: USB-OTG (on-the-go) versus USB Serial/JTAG (USB CDC). Some development tools were initially not fully compatible to both, and some development board designs implemented two different virtual serial ports, one for terminal communication, and another one for flashing firmware. Again, some programming tools weren’t initially prepared for this.
For example, ESP32-S2 Mini boards were notorious for connection problems.
That’s why board designs temporarily continued to use dedicated UARTs despite using an ESP model that could actually communicate natively with USB.
Meanwhile, most software hickups have been resolved, and native USB connections today work smoothly and reliably.
For native USB connections to flawlessly work, you must specify the correct USB connection method in your development environment, i.e. in platform.io (platformio.ini
). Else, you may not be able to connect, or you may loose selected features (i.e. terminal output).
Native USB support has a range of advantages:
- No PC drivers required for UART chips
- Faster, no need to specify baud rates
- Smaller development boards (as no separate UART chip is required)
Form Factor
Despite its many additional features, ESP32 and its successors are not necessarily larger in size. The raw chip size did not significantly change compared to the initial ESP8266. The ESP32 C3-based board from Seeed for example is tiny:
ESP32 boards can be extremely small yet very powerful
If you do not need a USB Connector, you can further cut board size. The picture below shows an ESP8266 on such a board. The same form factor is available for ESP32, effectively reducing the board size to the size of the actual microcontroller and a few supporting elements like a ceramic WiFi antenna:
Boards without USB connector and UART are even smaller but require an external programmer to transfer the firmware.
History and Differences
To better understand how the ESP family of MCUs evolved, here is a comprehensive feature comparison:
Feature | ESP32 | S2 | S3 | C3 | C6 | H2 | P4 | ESP8266 |
---|---|---|---|---|---|---|---|---|
Launch | 2016 | 2019 | 2020 | 2020 | 2021 | 2021 | 2024 | 2014 |
Core Type | LX6 | LX7 | LX7 | RISC-V | RISC-V | RISC-V | RISC-V | L106 |
Cores | 2 | 1 | 2 | 1 | 1 | 1 | 2 | 1 |
Frequency | 240 | 240 | 240 | 160 | 160 | 96 | 400 | 160 |
Voltage | 2.3-3.6 | 3.0-3.6 | 3.0-3.6 | 3.0-3.6 | 3.0-3.6 | 3.3-3.6 | 3.0-3.6 | 2.5-3.6 |
GPIOs | 34 | 43 | 45 | 22 | 30 | 19 | 50+ | 17 |
SRAM KB | 520 | 320 | 512 | 400 | 320 | 256 | 768 | 160 |
RTC/LP SRAM KB | 16 | 16 | 16 | 8 | 16 | 4 | 16 | 1 |
int Flash MB | 0/2/4 | 0/2/4 | 0/8 | 0/4 | 0/4 | 2/4 | 0/4/8 | 4 |
Cache KB | 64 | 8/16 | 16 | 16 | 16 | 16 | 32 | 32 |
ROM KB | 448 | 128 | 384 | 384 | 320 | 128 | 384 | 0 |
USB JTAG (native USB-to-PC connection, no UART) | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
USB OTG (native connection to USB peripherals) | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
ADC | 2x12bit 18ch | 2x13bit 20ch | 2x12bit 20ch | 1x12bit 6ch | 1x12bit 7ch | 1x12bit 5ch | 2x12bit 20ch | 1x10bit 1ch |
DAC | 2x8bit | 2x8bit | ❌ | ❌ | ❌ | ❌ | 2x8bit | ❌ |
Digital Video Interface | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Timers | 4x64bit | 4x64bit | 4x64bit | 2x54bit | 2x54bit | 2x54bit | 4x64bit | 2x23bit |
Watchdog | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 1 |
I2C | 2 | 2 | 2 | 1 | 2 | 2 | 4 | 1 |
I2S | 2 | 1 | 2 | 1 | 1 | 1 | 2 | 1 |
SPI | 4 | 4 | 4 | 3 | 2 | 3 | 4 | 2 |
Digital Video Interface | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Ethernet | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
LCD Interface | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
MCU Temperature | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Touch | 10 | 14 | 14 | ❌ | ❌ | ❌ | 14 | ❌ |
UART | 3 | 2 | 3 | 2 | 3 | 2 | 4 | 2 |
Ethernet | 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
IR/RMT | 8 | 4 | 8 | 4 | 4 | 4 | 8 | 1 |
Hall Sensor | 1 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
LED PWM | 16 | 8 | 8 | 6 | 6 | 6 | 16 | 5 |
Motor PWM | 6 | ❌ | 2 | ❌ | ❌ | 1 | 6 | ❌ |
Wifi | 4 | 4 | 4 | 4 | 4/6 | no | 4/5 | 4 |
Wifi Mbps | 150 | 150 | 150 | 150 | 150 | ❌ | 150@2GHz 433@5GHz |
72.2 |
Wifi 5MHz | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
Bluetooth Classic | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Bluetooth BLE | BLE4.2 | ❌ | BLE5.0 | BLE5.0 | BLE5.3 | BLE5.3 | BLE5.2 | ❌ |
Thread 1.3 | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
Zigbee 3.0 | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
Matter | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
HomeKit, MQTT, etc | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
USB OTG | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
Camera Interface | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
TWAI (CAN 2.0) | ✅ | ✅ | ✅ | ✅ | ✅ (2) | ✅ | ✅ | ❌ |
SD Host | ✅ | ❌ | ✅ (2) | ❌ | ❌ | ❌ | ✅ | ❌ |
SD Slave | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ |
JTAG | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ |
TOF | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
AI Acceleration Support | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
Deep Sleep | 10µA | 20µA | 7µA | 5µA | 7µA | 8µA | 10µA | 20µA |
Size mm | 5x5/6x6 | 7x7 | 7x7 | 5x5 | 5x5 | 4x4 | 7x7 | 5x5 |
Notes
- What was previously referred to as RTC memory has been renamed to LP memory (low power memory). You might see both terms used interchangeably.
- ESP32-P4 specs are based on Espressif’s preliminary datasheets (as of 2024). Some values (e.g., GPIOs, SRAM, BLE version, AI acceleration, LCD, SD Host, etc.) may be updated as more details are released.
Quick Selection Guide
For new projects—regardless of whether you used ESP8266 or ESP32S before—it makes sense to look at transitioning to the more modern variants:
- ESP32-C3, ESP32-S2: most simple projects, very cost-efficient and small
- ESP32-S3: projects that would previously have used a ESP32S, i.e. use cases that require higher computational power such as camera projects.
Depending on your feature requirements, here is a more feature-based guidance:
Category | You want to… | Recommendation |
---|---|---|
I/O | control as many external devices as possible | S2, S3 (>40 GPIOs) |
DAC | output analog voltages using a built-in DAC | ESP32S, S2 |
Touch | use touch sensors | ESP32, S2, S3 |
USB Support | use USB devices such as keyboards and mice, or turn your microcontroller into a USB memory stick | S2 or S3 (USB-OTG required) |
Camera Support | connect a camera | S3 |
Motor Control | control motors | ESP32, S3 |
Low Voltage | work with the lowest-possible voltage (i.e. solar projects) | ESP32 (>2.3V) |
Low Energy | run on battery for a long time | S3, C3 |
Bluetooth Classic | work with legacy bluetooth devices | ESP32S |
Bluetooth LE | power-efficient modern bluetooth | C6 or H2 |
Native Support for Thread and Matter | build matter-compatible devices | C6, H2 |
Support for 5GHz WiFi | special use cases, fast data transfer | P4 |
ESP8266
There is virtually no good reason anymore to continue to purchase ESP8266. For the same price (or lower), you can get ESP32-C3 SuperMini (extremely small form factor), and the ESP32-S2 Mini is even pin-compatible to the popular ESP8266 D1 Mini, so you can continue to use the identical shield boards.
Not only are the newer successor MCUs much more performant, they also typically come with much better-quality development boards.
A common issue with many ESP8266 boards is the voltage regulator: often, it was capable of merely supplying the MCU, and once you added some external sensors or displays, the built-in voltage regulator collapsed and caused brown-outs and reboot loops.
Wireless Communications
All ESP MCUs are designed with wireless communications built-in.
WiFi (2/5 GHz)
All ESP models (except ESP32-H2) support 2GHz WiFi.
The new ESP32-P4 also supports 5GHz WiFi for better throughput and to escape the typically crowded 2GHz frequency spectrum.
Bluetooth (Classic/BLE)
Another wireless technology embraced by most ESP types is Bluetooth BLE, with two important exceptions:
- ESP32S is the only ESP that also supports the legacy Bluetooth Classic, which may be important for compatibility with older music players. And
- ESP32-S2 is the only ESP that does not support Bluetooth at all (same applies to the outdated ESP8266).
Zigbee and Thread
Some of the latest ESPs target new wireless protocols and radio technologies.
To understand what this is, it is important to appreciate that neither classic WiFI (high speed, high overhead, high power consumption) nor Bluetooth (limited devices, limited range, no mesh) are ideal for modern IoT networks and home automation.
“WiFi” Networks for IoT
That’s why new networks - specifically aimed at IoT devices with their relatively low data rates and need for energy efficiency - were created:
- Thread: open-source and royalty-free, IPv6-based.
- Zigbee: proprietary networking and application layers, not IP-based, manufacturers must pay royalties.
Zigbee and Thread are competing approaches for low-power, wireless IoT mesh networking in smart home and IoT applications. Both use the same IEEE 802.15.4 radio standard (typically at 2.4 GHz, 250 kbps maximum transfer rate) and target similar use cases (sensors, lights, automation devices).
Thread is increasingly favored for new Matter-based smart home devices due to its IP-native design, better interoperability, and lower cost (no royalties, open-source).
Matter (Software)
Matter defines an open-source and royalty-free unified application layer protocol for smart home and IoT devices. It is a software, not a radio standard, and it can operate over any network, including but not limited to WiFi, Zigbee, and Thread.
It is basically a consumer-oriented Home Assistant-like concept built into smartphones and other consumer articles.
- As a DIY maker who is already operating a Home Assistant-like home automation infrastructure, Matter is completely irrelevant.
-
As a consumer, however, Matter-compliant devices are highly attractive. Without the need for complex home automation setups like Home Assistant, smartphones can be turned into an entry-level home automation solution.
Matter-compliant devices can be easily added to smart devices across different manufacturers, enabled by the open-source, royalty-free Matter smart home standard which was developed by the Connectivity Standards Alliance (CSA, formerly Zigbee Alliance).
Choosing ESP Models for Matter Devices
If you’d like to create Matter-compliant devices with ESP microcontrollers so that users can simply add them to their smartphones and use their smartphones to manage your device, you can use any ESP microcontroller since they all support wireless communication one way or another:
- Matter over WiFi: any WiFi-enabled ESP works.
- Matter over Thread: requires an ESP with native Thread support, i.e. ESP-C6 or ESP-H2 (802.15.4-compliant radio).
Use the official Matter SDK (Connected Home over IP, CHIP). Espressif provides ESP-Matter, an official port of the Matter SDK for ESP32 chips.
With the ESP-Matter APIs, define your device type (light, switch, sensor, etc.).
- Implement device clusters, attributes, and commands as required by the Matter specification.
- Handle device commissioning (pairing/setup) and secure communication.
To commission and control your Matter-compliant device, use any Matter controller app (Home Assistant, a smartphone app, or the official CHIP tool as part of the Matter SDK repository under the examples/chip-tool
directory).
Slow Website?
This website is very fast, and pages should appear instantly. If this site is slow for you, then your routing may be messed up, and this issue does not only affect done.land, but potentially a few other websites and downloads as well. Here are simple steps to speed up your Internet experience and fix issues with slow websites and downloads..
Comments
Please do leave comments below. I am using utteran.ce, an open-source and ad-free light-weight commenting system.
Here is how your comments are stored
Whenever you leave a comment, a new github issue is created on your behalf.
-
All comments become trackable issues in the Github Issues section, and I (and you) can follow up on them.
-
There is no third-party provider, no disrupting ads, and everything remains transparent inside github.
Github Users Yes, Spammers No
To keep spammers out and comments attributable, all you do is log in using your (free) github account and grant utteranc.es the permission to submit issues on your behalf.
If you don’t have a github account yet, go get yourself one - it’s free and simple.
If for any reason you do not feel comfortable with letting the commenting system submit issues for you, then visit Github Issues directly, i.e. by clicking the red button Submit Issue at the bottom of each page, and submit your issue manually. You control everything.
Discussions
For chit-chat and quick questions, feel free to visit and participate in Discussions. They work much like classic forums or bulletin boards. Just keep in mind: your valued input isn’t equally well trackable there.
(content created Mar 23, 2024 - last updated Aug 02, 2025)