Getting Started with the ESP32 Development BoardNew to ESP32? Start here! The ESP32 is a series of low-cost and low-power System on a Chip (SoC) microcontrollers developed by Espressif that include Wi-Fi and Bluetooth wireless capabilities and dual-core processor. If you’re familiar with the ESP8266, the ESP32 is its successor, loaded with lots of new features.ESP32 Getting Started Guide for Beginners New to the ESP32? You’re in the right place. This guide contains all the information you need to get started with the ESP32. Learn what is an ESP32, how to select an ESP32 board, how to get your first program working, and much more. Here’s what we’ll cover in this guide:
Introducing the ESP32First, to get started, what is an ESP32? The ESP32 is a series of chip microcontrollers developed by Espressif. espressif logo Why are they so popular? Mainly because of the following features:Low-cost:you can get an ESP32 starting at $6, which makes it easily accessible to the general public;Low-power:the ESP32 consumes very little power compared with other microcontrollers, and it supports low-power mode states like deep sleep to save power;Wi-Fi capabilities:the ESP32 can easily connect to a Wi-Fi network to connect to the internet (station mode), or create its own Wi-Fi wireless network (access point mode) so other devices can connect to it—this is essential for IoT and Home Automation projects—you can have multiple devices communicating with each other using their Wi-Fi capabilities;Bluetooth:the ESP32 supports Bluetooth classic and Bluetooth Low Energy (BLE)—which is useful for a wide variety of IoT applications;Dual-core:most ESP32 are dual-core— they come with 2 Xtensa 32-bit LX6 microprocessors: core 0 and core 1.Rich peripheralinput/output interface—the ESP32 supports a wide variety of input (read data from the outside world) and output (to send commands/signals to the outside world) peripherals like capacitive touch, ADCs, DACs, UART, SPI, I2C, PWM, and much more.Compatiblewith the Arduino “programming language”: those that are already familiar with programming the Arduino board, you’ll be happy to know that they can program the ESP32 in the Arduino style.Compatible with MicroPython:you can program the ESP32 with MicroPython firmware, which is a re-implementation of Python 3 targeted for microcontrollers and embedded systems.
ESP32 SpecificationsIf you want to get a bit more technical and specific, you can take a look at the following detailed specifications of the ESP32 (source: http://esp32.net/)—for more details, check the datasheet):ESP32 moduleESP32 module: ESP-WROOM-32 Wireless connectivity WiFi: 150.0 Mbps data rate with HT40 Bluetooth: BLE (Bluetooth Low Energy) and Bluetooth Classic Processor: Tensilica Xtensa Dual-Core 32-bit LX6 microprocessor, running at 160 or 240 MHz Memory: ROM: 448 KB (for booting and core functions) SRAM: 520 KB (for data and instructions) RTC fas SRAM: 8 KB (for data storage and main CPU during RTC Boot from the deep-sleep mode) RTC slow SRAM: 8KB (for co-processor accessing during deep-sleep mode) eFuse: 1 Kbit (of which 256 bits are used for the system (MAC address and chip configuration) and the remaining 768 bits are reserved for customer applications, including Flash-Encryption and Chip-ID) Embedded flash: flash connected internally via IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 and SD_DATA_1 on ESP32-D2WD and ESP32-PICO-D4. 0 MiB (ESP32-D0WDQ6, ESP32-D0WD, and ESP32-S0WD chips) 2 MiB (ESP32-D2WD chip) 4 MiB (ESP32-PICO-D4 SiP module) Low Power: ensures that you can still use ADC conversions, for example, during deep sleep. Peripheral Input/Output: peripheral interface with DMA that includes capacitive touch ADCs (Analog-to-Digital Converter) DACs (Digital-to-Analog Converter) I²C (Inter-Integrated Circuit) UART (Universal Asynchronous Receiver/Transmitter) SPI (Serial Peripheral Interface) I²S (Integrated Interchip Sound) RMII (Reduced Media-Independent Interface) PWM (Pulse-Width Modulation) Security: hardware accelerators for AES and SSL/TLS
Main Differences Between ESP32 and ESP8266ESP32 vs ESP8266 Development Boards Previously, we mentioned that the ESP32 is the ESP8266 successor. What are the main differences between ESP32 and ESP8266 boards? The ESP32 adds an extra CPU core, faster Wi-Fi, more GPIOs, and supports Bluetooth 4.2 and Bluetooth low energy. Additionally, the ESP32 comes with touch-sensitive pins that can be used to wake up the ESP32 from deep sleep, and built-in hall effect sensor. Both boards are cheap, but the ESP32 costs slightly more. While the ESP32 can cost around $6 to $12, the ESP8266 can cost $4 to $6 (but it really depends on where you get them and what model you’re buying). So, in summary: The ESP32 is faster than the ESP8266; The ESP32 comes with more GPIOs with multiple functions; The ESP32 supports analog measurements on 18 channels (analog-enabled pins) versus just one 10-bit ADC pin on the ESP8266; The ESP32 supports Bluetooth while the ESP8266 doesn’t; The ESP32 is dual-core (most models), and the ESP8266 is single core; The ESP32 is a bit more expensive than the ESP8266. For a more detailed analysis of the differences between those boards, we recommend reading the following article: ESP32 vs ESP8266 – Pros and Cons.
ESP32 Development BoardsESP32 refers to the bare ESP32 chip. However, the “ESP32” term is also used to refer to ESP32 development boards. Using ESP32 bare chips is not easy or practical, especially when learning, testing, and prototyping. Most of the time, you’ll want to use an ESP32 development board.ESP32 Development boards These development boards come with all the needed circuitry to power and program the chip, connect it to your computer, pins to connect peripherals, built-in power and control LEDs, an antenna for wi-fi signal, and other useful features. Others even come with extra hardware like specific sensors or modules, displays, or a camera in the case of the ESP32-CAM.
How to Choose an ESP32 Development Board?Once you start searching for ESP32 boards online, you’ll find there is a wide variety of boards from different vendors. While they all work in a similar way, some boards may be more suitable for some projects than others. When looking for an ESP32 development board there are several aspects you need to take into account: USB-to-UART interface and voltage regulator circuit. Most full-featured development boards have these two features. This is important to easily connect the ESP32 to your computer to upload code and apply power. BOOT and RESET/EN buttons to put the board in flashing mode or reset (restart) the board. Some boards don’t have the BOOT button. Usually, these boards go into flashing mode automatically. Pin configuration and the number of pins. To properly use the ESP32 in your projects, you need to have access to the board pinout (like a map that shows which pin corresponds to which GPIO and its features). So make sure you have access to the pinout of the board you’re getting. Otherwise, you may end up using the ESP32 incorrectly. Antenna connector. Most boards come with an onboard antenna for Wi-Fi signal. Some boards come with an antenna connector to optionally connect an external antenna. Adding an external antenna increases your Wi-Fi range. Battery connector. If you want to power your ESP32 using batteries, there are development boards that come with connectors for LiPo batteries—this can be handier. You can also power a “regular” ESP32 with batteries through the power pins. Extra hardware features. There are ESP32 development boards with extra hardware features. For example, some may come with a built-in OLED display, a LoRa module, a SIM800 module (for GSM and GPRS), a battery holder, a camera, or others.
What is the best ESP32 development board for beginners?For beginners, we recommend an ESP32 board with a vast selection of available GPIOs, and without any extra hardware features. It’s also important that it comes with voltage regular and USB input for power and upload code. In most of our ESP32 projects, we use the ESP32 DEVKIT DOIT board, and that’s the one we recommend for beginners. There are different versions of this board with a different number of available pins (30, 36, and 38)—all boards work in a similar way.ESP32 DEVKIT DOIT V1 Board Where to Buy? You can check the following link to find the ESP32 DEVKIT DOIT board in different stores: ESP32 DEVKIT DOIT board Other similar boards with the features mentioned previously may also be a good option like the Adafruit ESP32 Feather, Sparkfun ESP32 Thing, NodeMCU-32S, Wemos LoLin32, etc.
ESP32 Development boards
ESP32 DEVKIT DOITIn this article, we’ll be using the ESP32 DEVKIT DOIT board as a reference. If you have a different board, don’t worry. The information on this page is also compatible with other ESP32 development boards. The picture below shows the ESP32 DEVKIT DOIT V1 board, version with 36 GPIO pins.ESP32 DEVKIT V1 DOIT Development board
Specifications – ESP32 DEVKIT V1 DOITThe following table shows a summary of the ESP32 DEVKIT V1 DOIT board features and specifications:
| Number of cores | 2 (dual core) |
| Wi-Fi | 2.4 GHz up to 150 Mbits/s |
| Bluetooth | BLE (Bluetooth Low Energy) and legacy Bluetooth |
| Architecture | 32 bits |
| Clock frequency | Up to 240 MHz |
| RAM | 512 KB |
| Pins | 30, 36, or 38 (depending on the model) |
| Peripherals | Capacitive touch, ADC (analog to digital converter),
DAC (digital to analog converter), I2C (Inter-Integrated Circuit), UART (universal asynchronous receiver/transmitter), CAN 2.0 (Controller Area Netwokr), SPI (Serial Peripheral Interface), I2S (Integrated Inter-IC Sound), RMII (Reduced Media-Independent Interface), PWM (pulse width modulation), and more. |
| Built-in buttons | RESET and BOOT buttons |
| Built-in LEDs | built-in blue LED connected to GPIO2; built-in red LED
that shows the board is being powered |
| USB bridge UART | CP2102 |
Specifications ESP32 DEVKIT V1 DOIT
It comes with a microUSB interface that you can use to connect the board to
your computer to upload code or apply power.
It uses the CP2102 chip (USB to UART) to communicate with your computer via a
COM port using a serial interface. Another popular chip is the CH340. Check
what’s the USB to UART chip converter on your board because you’ll need to
install the required drivers so that your computer can communicate with the
board (more information about this later in this guide).
This board also comes with a RESET button (may be labeled EN) to restart the
board and a BOOT button to put the board in flashing mode (available to receive
code). Note that some boards may not have a BOOT button.
It also comes with a built-in blue LED that is internally connected to GPIO 2.
This LED is useful for debugging to give some sort of visual physical output.
There’s also a red LED that lights up when you provide power to the board.
ESP32 Board Built-in Blue LED On
ESP32 DEVKIT V1 Pins Pinout
We have a detailed guide dedicated to the ESP32 GPIOs that we recommend you
read: ESP32 Pinout Reference Guide. It shows how to use the ESP32 GPIOs and
explains what are the best GPIOs to use depending on your project.
The placement of the GPIOs might be different depending on your board model.
However, usually, each specific GPIO works in the same way regardless of the
development board you’re using (with some exceptions). For example, regardless
of the board, usually GPIO5 is always the VSPI CS0 pin, GPIO 23 always
corresponds to VSPI MOSI for SPI communication, etc.
Arduino IDE Install Legacy Version
Select your operating system and download the software. For Windows, we
recommend downloading the “Windows ZIP file“.
Arduino IDE Install Legacy Version
The Arduino IDE window should open.
Arduino IDE Install Legacy Version
Arduino IDE File > Preferences
Additional Boards Manager URL Field Arduino IDE
Open the Boards Manager. Go to Tools > Board >Boards Manager…
Search for ESP32 and install the “ESP32 by Espressif Systems“:
That’s it. It will be installed after a few seconds.
Boards Manager ESP32 Arduino IDE
After this, restart your Arduino IDE.
Then, go to Tools > Board and check that you have ESP32 boards available.
ESP32 Boards In Arduino IDE
Now, you’re ready to start programming your ESP32 using Arduino IDE.
Examples for ESP32 Arduino IDE
Arduino IDE Examples
Connect your ESP32 development board to your computer using a USB cable. If you
have an ESP32 DEVKIT DOIT board, the built-in red LED will turn on. This
indicates the board is receiving power.
Important: you must use a USB cable with data wires. Some USB cables from
chargers or power banks are power only and they don’t transfer data—these won’t
work.
Now, follow the next steps to upload the code.
1) Go to Tools > Board, scroll down to the ESP32 section and select the name of
your ESP32 board. In my case, it’s the DOIT ESP32 DEVKIT V1 board.
2) Go to Tools > Port and select a COM port available. If the COM port is grayed
out, this means you don’t have the required USB drivers. Check the section
Installing USB Drivers before proceeding.
ESP32 Selecting COM port Arduino IDE
3) Press the upload button.
Arduino 2.0 Upload Button
Some boards will automatically go into flashing mode and the code will be
successfully uploaded straight away.
Other boards don’t go into flashing mode automatically, so you may end up
getting the following error.
ESP32 Done Uploading Arduino IDE
ESP32 WiFiScan Example Serial Monitor
This means everything went as expected.