It was about time we talked about the ESP8266 and ESP32 on the blog, two machines that are all the rage right now and carving out a prominent place in this trendy world of IoT.
When the first modules with the ESP8266 appeared, many of us thought, “Great, finally an affordable WiFi module for Arduino,” because, at that time, shields and WiFi alternatives for Arduino were prohibitively expensive.
However, many community members quickly saw the potential of this little processor, whose features and low price have made it a huge success in a short time.
Right now, both the ESP8266 and the ESP32 are setting trends and demonstrating day by day why they are, today, some of the top representatives of IoT.
Many commercial products are basing their development on these chips. A clear example are the Sonoff products from Itead, which allow for home automation at a very low cost. According to Espressif, its manufacturer, they have sold over 100 million units.
But first, let’s start at the beginning by seeing what the ESP8266 is. In the next post, we’ll look at its “big brother,” the ESP32.
In fact, it’s such an interesting and relevant product that we’re going to create its own section on the blog
What is the ESP8266?
The ESP8266 is a SoC (system on a chip) manufactured by the Chinese company Espressif. This SoC groups different components into a single integrated circuit, the main ones being a 32-bit processor and a WiFi chip with TCP/IP stack management.
In short, the ESP8266 is a chip that integrates a general-purpose processor with full WiFi connectivity in a single package.

The processor integrated into the ESP8266 is a Tensilica L106 32-bit RISC architecture processor that runs at a speed of 80MHz, with a maximum speed of 160MHz.

The ESP8266 does not incorporate Flash memory inside the SoC, so it must be provided by the module it is mounted on. The connection to the memory is via QSPI, but normally its use is transparent to us.
What is important to emphasize is that the available memory varies between modules, it is not determined by the ESP8266 itself. It’s common to find models with 1MiB to 8MiB, with a maximum of 16MiB.
{ “CPU and Memory”: [ { “label”: “Processor”, “value”: “Low-power 32-bit processor” }, { “label”: “Speed”, “value”: “80MHz (maximum 160MHz)” }, { “label”: “Memory”, “value”: [“32 KiB instruction RAM”, “32 KiB cache RAM”, “80 KiB user data RAM”, “External flash memory up to 16MiB”] } ], “Connectivity and Certifications”: [ { “label”: “Connectivity”, “value”: [“WiFi 802.11 b/g/n 2.4GHz (supports WPA/WPA2)”, “Integrated TCP/IP stack”, “Certified by FCC, CE, TELEC, WiFi Alliance and SRRC”] } ], “GPIO and Peripherals”: [ { “label”: “GPIO Pins”, “value”: “16” }, { “label”: “PWM”, “value”: “On all pins (10 bits)” }, { “label”: “Analog-to-Digital Converter”, “value”: “10 bits” }, { “label”: “UART”, “value”: “2x TX and 1x RX” }, { “label”: “Interfaces”, “value”: “SPI, I2C, I2S” } ], “Power and Consumption”: [ { “label”: “Operating Voltage”, “value”: “3.0 to 3.6V” }, { “label”: “Consumption”, “value”: [“Average 80mA”, “Stand-by 1mW”, “Deep sleep 1uA”] } ] }
History of the ESP8266
Without going into too much depth, the history of the ESP8266 and its superior brother, the ESP32, begins in August 2014 with the appearance of the ESP01 modules from the manufacturer AI-Thinker.
At that time, the way to communicate with the ESP8266 was through AT modules, documentation was scarce and in Chinese, and the SDK was complex and not very accessible, so its utility was still limited. But that didn’t stop people from seeing its potential, and the community and various manufacturers began working actively on it.
Another important milestone was the appearance of the NodeMCU firmware, which also gives its name to a development board. This firmware allowed programming the ESP8266 with LUA, a semi-compiled language based on C and Perl.
The community’s work continued, generating documentation, tutorials, and tools. Thus, we reached the next major milestone: the release by the community of alternative Open Source SDKs for the ESP8266 based on the GCC toolchain.
This allowed programming with the Arduino environment using the ESP8266 Arduino Core. This was the definitive catapult for the ESP8266 in the maker sector, allowing it to benefit from the support of the huge community of Arduino enthusiasts.
Espressif reacted (or saw the potential, or decided to support the community) and generated new SDKs with a license similar to MIT, which in a way gave support to the user community.
Since then, a large number of manufacturers have created development boards that integrate the ESP8266. Some of the most famous, among others, are the NodeMCU and WeMos, both with different variants. We’ll look at these boards soon.
We also have different SDKs and firmwares available, which allow programming modules with the ESP8266 in different languages. For example, we have MicroPython (Python language), ESPruino (Javascript), ESP-OPEN-RTOS (based on FreeRTOS), or Mongoose OS, among other options. We’ll also cover this soon.
In September 2016, the ESP32 was launched, a far superior model that solved some of the ESP8266’s shortcomings. It has a slightly higher price, but if the ESP8266 is powerful and interesting, the ESP32 is a downright beast. Support and documentation for the ESP32 is still lower, but it’s growing rapidly. We’ll look at the ESP32 and its features in future posts.
Types of Modules with ESP8266
There are different modules that integrate the ESP8266 SoC. The main characteristics of these modules are similar and basically differ in the available Flash memory and their physical form, which in turn conditions the number of GPIO pins that are accessible.
On some boards (the minority), the GPIOs are in pin form, so it’s possible to solder a wire or connect a terminal. But in most, the modules have a “half-pin” form, as they are designed to be integrated (soldered) onto PCBs or development boards.

To make it easy, in summary, by a wide margin the most common modules are the ESP01 and the ESP12/ESP12E. The rest are quite infrequent.
The ESP01 is very popular for being the first to appear, its small size, and low price. It is often used to add connectivity to an Arduino-based solution (acting as a “WiFi shield”) as we saw in this post. Although it can also be used for developments that require few GPIOs (it only has 2 available).

On the other hand, the ESP12 and its variant ESP12E are becoming the preferred model of the ESP8266, and are mounted on a large number of development boards and commercial products.

In upcoming posts, we will delve into the very interesting world of the ESP8266 and ESP32, the different development boards available, how to program them, and tutorials to illustrate some of the possible uses of these two SoCs that are driving IoT development.

