Espressif is a constantly ground-breaking company that produces lots of really cool development modules which includes the ESP32. ESP32 Boards, ESP32 Dev-Kits, and ESP32 Modules (the part that gets soldered to the Board/PCB) are all about connectivity. The one feature that they all share is the capability to connect to WiFi. Not all necessarily have Bluetooth connectivity.
This huge amount of output from Espressif does make it somewhat complex for the Everday Maker to keep on top of naming conventions and what these modules can actually do. All versions look very similar (usually enclosed in an RF metal shield). These are the best way to get WiFi connectivity into your projects. However, different families have different firmware and different specifications. Thus we will compare several families of ESP32 development boards so you know exactly what does what and the different methods of flashing these modules. See the contents of this guide below.
- ESP32 Family Tree and Name Explanation.
- Different Flashing Methods for ESP32 Boards/Modules
We will start with the best and brightest and work our way down through history to the genesis of ESP32 modules and boards. Check the image below to see the ESP32 Module and Boards that have ESP32 Modules on them (note that some PCB boards will retain the RF metal shielding and others will not). Here is a guide on how to flash MicroPython onto an ESP32 if that’s what you need.
Worth noting that pure ESP32 has a bigger more mature community than the more recent ESP32-X boards (X being a placeholder here for a letter). All PyCom Connectivity Boards have a traditional ESP32 onboard. For a run down on Pycom technology hit up the guide here. It is worth noting here that it all didn’t start with ESP32. The original spring that all of this IoT Goodness has sprung from is the formidable (albeit ageing) ESP8266. Still produced today this is the grandfather to the ESP32 Family. For a great guide comparing the Original ESP32 to the ESP8266 check here.
Hopefully, this will give you grounding in an intricate naming world without swamping you with specifications (that you can always find at the bottom of our Product Pages). Also, just as a teaser to applications here is my guide on controlling Addressable LEDs with an ESP32 or ESP8622 and WLED. As always if you have any questions, queries, or things to add please let us know your thoughts!
ESP32 Family Tree and Naming Explanations
There are three main branches that have developed from the original ESP32 as of Mid-2022. These are indicated by the suffixes | -C |, | -S | and | -H | versions. An example of a module using this naming convention would be the ESP32-S2. Any number directly after this suffix indicates the next generation. Thus the ESP32-S2 would be the second offering of the | -S | style of ESP32 board produced by Espressif. It would be better in regards to specifications for what the particular branch values. All these boards have WiFi connectivity.
Note here as well, all branches and generations of these boards run their own propriety flash. This means there will be occasions when a system built for an ESP32 Module (like WLED) won’t run on an ESP32-S2 as easily (or at all depending on the branch used). See below the main branches of the ESP32 board (note that when | X | is used it is just a placeholder for a number ranging from 1-3).
- ESP32-SX versions are the most powerful, most current version of these ESP32 boards that are readily available. These boards may or may not have Bluetooth connectivity.
The S3 variant in particular are built with Edge AI machine-learned systems in mind. Edge just means all calculations are done on the hardware, not the cloud, check out the ESP32-S3. - ESP32-CX versions are the Low Power, Lower Peripheries (IO) boards. They are usually drop-in replacements for the original ESP8266 Module. The ESP8266 Module started production all the way back in 2014. These have Bluetooth and WiFi connectivity. Perfect for battery-powered remote systems where a low current draw for a long life is ideal. A great example of this would be the ESP32-C3.
- ESP32-HX versions are coming soon. Espressif is always innovating and producing new solutions to stay in front of the curve. These are oriented towards IoT applications, the H2 features onboard Zigbee. We try to stay on top as well and as such it is worth noting the ESP32-H2 will be available in the very soon future. This will be the next most powerful ESP32 Board.
The other nomenclature aspect on these ESP32 boards to be on top of is the | -WROOM | and | -WROVER | variants This simply means the Actual ESP32 module has castellated pads around it for all connections. Thus you can hand-solder it onto your projects without the need for fancy Surface Mount Soldering Technologies like hot plates or reflow ovens. Thus the ESP32-C3-WROOM, ESP-WROOM-32, and the ESP32-S2-WROVER are three ESP32 Modules, of various branches and generations, that all have Castellated Pads. Below shows an ESP32-S2-WROOM module with some of those Castillated pads highlighted in a red box. Also for completion, | WROVER | modules have PSRAM (pseudo-static RAM), and | WROOM | modules do not.
On another note, you will see | -DA | sometimes thrown into the naming which simply means Dual Antenna. An example of this would be the ESP32-WROOM-DA which would be an original generation ESP32 board, with Castellated Pads and a Dual Antenna. Dual antennas result in excellent wireless communication, even under difficult circumstances. Usually, these boards will automatically swap between them to lock in the best signal. The footprint that these modules commonly look like the image below.
Another Note. Sometimes you will see naming conventions like ESP32-WROOM-DA-N8R2. This is the same as we have seen before except for the | -N8R2 | suffix. The | N8 | is in reference to Nand Flash which in this case, it is 8 Mega Bytes. NAND flash memory is a type of non-volatile storage technology that does not require power to retain data. The | R2 | is in reference to On-Board RAM (Random Access Memory) and in this case, it is 2 Mega Bytes. RAM is used to store information that needs to be used quickly. Opening many programs, running various processes, or accessing multiple files simultaneously will use a lot of RAM. An example of this would be the ESP32-S3-WROOM-N8R2.
Another Note. You will sometimes come across ESP32 boards with the | -MINI-1 | suffix. An example of this would be the ESP32-C3-MINI-1. They will also use the naming convention ESP32-C3-DevKit-M-1 Development Board which is the board you can see in the image below. These suffixes are in reference to the smaller dimension version of the ESP32 Module which has a significantly smaller footprint than the normal size.
Any other extra suffixes you may see in reference to ESP32 boards are | -CAM | (usually an onboard camera or PCB mounted CSI Camera port), | -HMI | (Human to machine interface, usually a screen), | -Saoloa | (propriety name), | -Kaluga | (propriety name), | -PICO-KIT | (propriety name), | -EYE | (means an onboard camera), and | -DevKit | (Developer Kit). Also, note that | HUZZAH32 | is Adafruit’s special name for some of their ESP32 board offerings. An example below is the ESP32-CAM Development Board.
There is even more going on with this world, but the above toolkit will set you up to navigate and understand any of the products on our website. If you notice a Prefix not talked about above, pop me a message via the forums and this article will be updated. If you want to go really deep into this world and learn a huge amount of specifications and what exactly each board can do, either check the specification page found at the bottom of any of the products pages. You can also check out the ESP32 Espressif Page and their News section to see the upcoming boards.
Different Flashing Methods
Most ESP32 Developer Boards will have UART flashing. This means somewhere on the PCB will be a USB-UART Chip and a Micro-USB or USB-C connector. Pretty much any ESP32 Board with a Micro-USB or USB-C connector will have this flashing capability whether it be through the ESP32's USB peripheral or through the IC. Once you have the ESP32 Board in Bootloader Mode you will be able to connect up a Data-and-Power-Enabled USB Cable to your computer and flash the board as normal. Different ESP32 boards have different ways of getting into Bootloader Mode, refer to the datasheet found at the bottom of the respective product page.
The ESP-PROG will let you Program ESP32 Boards that do not have a UART chip. It has a number of options to flash/debug with the most likely to be used the JTAG input. If you are just using an ESP32 module and want to flash and debug it a JTAG adapter like this is a great option. This also means that your PCB design does not need to incorporate a UART Chip (which due to the part shortage is getting harder and harder to get). You can also use a board like the CP2104 USB-to-Serial Adapter Carrier to be that translator between the two systems.