Welcome to our repository of ESP32 micro controller. The ESP32 is the ESP8266 successor loaded with lots of new features. The ESP32 is a development board that combines Wi-Fi and Bluetooth wireless capabilities, and it’s dual core. It supports a wide variety of peripherals such as: capacitive touch, ADC, DAC, I2C, SPI, UART, I2S, PWM and much more. It is one of the best solutions for DIY Internet of Things Projects and Smart Home Projects.
If you’re familiar with the ESP8266, the ESP32 is its sucessor. The ESP32 is loaded with lots of new features. The most relevant: it combines WiFi and Bluetooth wireless capabilities and it’s dual core.
ESP32 DEVKIT DOIT
In this post, we’ll be using the ESP32 DEVKIT DOIT board as a reference. But the information on this page is also compatible with other ESP32 development boards with the ESP-WROOM-32 chip.

Suggested Reading
ESP32 is a great tool for people of all skill levels. However, you will have a much better time learning along side your Arduino if you understand some Sensors, Modules, Display that can be use with Arduino. We recommend that you have at least a decent understanding of these concepts before you dive in to the wonderful world of Arduino.- Sensors that can be use with Arduino
- MOdules that can be use with Arduino
- Displays that can be use with Arduino
Specifications
When it comes to the ESP32 chip specifications, you’ll find that:- The ESP32 is dual core, this means it has 2 processors.
- It has Wi-Fi and bluetooth built-in.
- It runs 32 bit programs.
- The clock frequency can go up to 240MHz and it has a 512 kB RAM.
- This particular board has 30 or 36 pins, 15 in each row.
- It also has wide variety of peripherals available, like: capacitive touch, ADCs, DACs, UART, SPI, I2C and much more.
- It comes with built-in hall effect sensor and built-in temperature sensor.
Specifications – ESP32 DEVKIT V1 DOIT
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 or 36 (depends 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. |
Programming Environments
The ESP32 can be programmed in different programming environments. You can use:- Arduino IDE
- Espressif IDF (IoT Development Framework)
- Micropython
- JavaScript
- LUA
ESP32 Pinout Guide
The ESP32 has more GPIOs with more functionalities compared to the ESP826. With the ESP32 you can decide which pins are UART, I2C, or SPI – you just need to set that on the code. This is possible due to the ESP32 chip’s multiplexing feature that allows to assign multiple functions to the same pin. If you don’t set them on the code, the pins will be used as default – as shown in the figure below (the pin location can change depending on the manufacturer). Version with 30 GPIOs

Upload Code to the ESP32 using Arduino IDE
To show you how to upload code to your ESP32 board, we’ll build a simple example to blink an LED. Copy the following code to your Arduino IDE:/*
Blink
*/
// ledPin refers to ESP32 GPIO 23
const int ledPin = 23;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin ledPin as an output.
pinMode(ledPin, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
In this code, we’re controlling an LED connected to GPIO 23.
const int ledPin = 23;
So, connect an LED to your ESP32 by following the next schematic diagram.
Important: always check the pinout for your specific board before building any circuit.




Failed to connect to ESP32: Timed out... Connecting...To upload code, you need to follow the next steps (make sure you have the right board selected:
- Hold-down the “BOOT” button in your ESP32 board

- After you see the “Connecting….” message in your Arduino IDE, release the finger from the “BOOT” button:

- After that, you should see the “Done uploading” message.
