If we are going to delve into the world of the ESP32, one of the first things we need to talk about is what is a SoC, a SoM, a development board, and the differences between them.
This is because later you see a lot of people getting confused saying they have a Wemos ESP32-S2, an ESP32-D0WD-V3, and that this other one has a “something or other”.
Furthermore, if we consider that the designations of Espressif’s families aren’t very helpful either (ESP32-C2, ESP32-S2, ESP32-S3). On top of that, the advertising from sellers (especially Chinese sellers) doesn’t help to clarify things.
So let’s take it step by step and dedicate a post first to see what that is about a CPU, a SoC, SoM, and a development board.
What is a SoC and what is a SoM
Let’s start from the beginning. More or less we all know what a CPU (Central Processing Unit) is. It’s the part that performs calculations and, so to speak, the brain of a machine.

Now a System on Chip (SoC) is a single integrated circuit (a chip) that combines several essential components of an electronic system into a single package. This usually includes one or more CPUs, and adds other things like (optionally) memory, storage, GPU, I/O controllers, among others.
On the other hand, a SoM (System on Module) is an electronic board (a PCB), which also combines essential components. For example, it usually includes a SoC, and other optional things (storage, antennas, I/O devices, among others).
Finally, we have development boards, which are the final device you buy. They generally add things like pins, power supply, antennas…
Here we can have boards that mount a SoC directly, or boards that mount a SoM.
In general, the order of aggregation is:
- CPU
- SoC
- SoM
- Development board
Let’s see it in the case of the ESP32
By now I imagine you’re thinking what the hell this guy is telling me about SoC and SoM. Well, let’s see it with a concrete example, seeing how we apply all this when we talk about an ESP32 and its variants.
The ESP32, as we usually refer to it, is a SoC. I leave you a link with the list of available ESP32 models Chipsets | Espressif Systems. There aren’t that many, there are 5 models, ESP32, ESP32-S2, ESP32-S3, ESP32-C, ESP32-H, and that’s it.
Each of these SoCs has a different set of characteristics. They mount a different CPU (Risc-V, Dual Core, Single Core…), support a different amount of memory. To complicate things a bit more, within each SoC there are variants. Although don’t be too scared, within each of the 5 SoCs the variants don’t change the basic characteristics. The size and little else.
Now, these SoCs are mounted on modules offered by the manufacturer itself. How many are there? Phew, a ton! Just the “normal” ESP32 (not the S2, S3) has more than 20 available modules. Here we have a list of the available SoM modules ESP32 Wi-Fi & Bluetooth Modules I Espressif
Both SoCs and SoMs are industrial products. They are designed for you to buy them industrially (by the thousands) and integrate them into your final product (for example, in a smart switch).
Finally we have the development boards that mount a SoM. They are for prototyping, or for us to play with at home 😉. Here is a list of the boards at Development Boards | Espressif Systems
Logically there are even more than SoCs. With each of the different modules, we can choose a form factor, add a screen, a USB connector, or whatever.
Furthermore, unlike SoCs and even SoMs, which have to be made by the manufacturer, in the case of development boards, any manufacturer can make their own. That is, you can find on Amazon models of development boards, named whatever the manufacturer wants.
Let’s see an example
We’ll see it more easily if we do an example. Imagine you have a board, from any manufacturer, that mounts a module (a SoM) ESP32-WROOM-32E. I’m going to look at the modules and see what information I can get from this module:
- SoM: ESP32-WROOM-32E tells me it is compatible with 4/8/16MB Flash memory, and that it does not have PSRAM.

With the SoM I can get some of the characteristics, including which SoC it mounts. In this case it would be an ESP32-D0WD-V3, which is a variant of the ESP32 family. With the SoC name I already have the rest of the characteristics, including the CPU and memory.
- SoC: ESP32-D0WD-V3 tells me it is a dual-core Xtensa CPU, with 520KB SRAM, 448KB ROM, 16KB RTC SRAM.
- CPU: Xtensa single-/dual-core 32-bit LX6 microprocessor @240Mhz.

With all this, I would already have all the information and characteristics of my device. It is a SoM ESP32-WROOM-32E, which mounts a SoC ESP32-D0WD-V3, which is a variant of the ESP32 (original, from 2016).
On the other hand, with the SoM information I can also find the official board that mounts this SoM. In this case it would be an ESP32-DevKitC. 
- Board: ESP32-DevKitC on that specific development board, they have put 4MB Flash.
But of course, the board you have may have other technical characteristics. For example, it could have a different pinout, a different amount of Flash memory, or PSRAM.

