

The ESP32, manufactured by Espressif Systems, is a low-cost, low-power system on a chip (SoC) that integrates Wi-Fi and Bluetooth capabilities. It is designed for a wide range of applications, including Internet of Things (IoT) devices, wearable electronics, smart home systems, and industrial automation. With its dual-core processor, extensive GPIO options, and support for various communication protocols, the ESP32 is a versatile and powerful solution for embedded systems.








| Parameter | Specification |
|---|---|
| Manufacturer | Espressif Systems |
| Part ID | ESP32 |
| Processor | Dual-core Xtensa® 32-bit LX6 microprocessor |
| Clock Speed | Up to 240 MHz |
| Flash Memory | 4 MB (varies by module) |
| SRAM | 520 KB |
| Wireless Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth v4.2 + BLE |
| Operating Voltage | 3.0V to 3.6V |
| GPIO Pins | Up to 34 |
| Communication Interfaces | UART, SPI, I2C, I2S, CAN, PWM, ADC, DAC |
| ADC Resolution | 12-bit |
| DAC Resolution | 8-bit |
| Power Consumption | Ultra-low power in deep sleep mode (~10 µA) |
| Operating Temperature | -40°C to +85°C |
The ESP32 has a flexible pinout, with up to 34 GPIO pins. Below is a table of commonly used pins and their functions:
| Pin Name | Function(s) | Notes |
|---|---|---|
| GPIO0 | Boot mode selection, General purpose | Must be LOW during boot for flashing |
| GPIO1 | UART TX | Default UART TX pin |
| GPIO3 | UART RX | Default UART RX pin |
| GPIO12 | Touch Sensor, ADC, General purpose | Can be used as a touch input |
| GPIO13 | PWM, ADC, General purpose | Supports PWM output |
| GPIO14 | SPI CLK, PWM, ADC | Commonly used for SPI clock |
| GPIO15 | SPI CS, PWM, ADC | Commonly used for SPI chip select |
| GPIO16 | General purpose | Can be used for GPIO or other functions |
| GPIO17 | General purpose | Can be used for GPIO or other functions |
| EN | Chip enable | Must be HIGH for normal operation |
| VIN | Power input | Accepts 5V input for onboard regulator |
| GND | Ground | Connect to ground of the circuit |
Note: Not all GPIO pins support all functions simultaneously. Refer to the ESP32 datasheet for detailed pin multiplexing information.
Powering the ESP32:
Connecting to Peripherals:
Programming the ESP32:
Flashing Firmware:
Below is an example of how to blink an LED connected to GPIO2 using the Arduino IDE:
// Define the GPIO pin where the LED is connected
#define LED_PIN 2
void setup() {
pinMode(LED_PIN, OUTPUT); // Set the LED pin as an output
}
void loop() {
digitalWrite(LED_PIN, HIGH); // Turn the LED on
delay(1000); // Wait for 1 second
digitalWrite(LED_PIN, LOW); // Turn the LED off
delay(1000); // Wait for 1 second
}
ESP32 Not Detected by Computer:
Failed to Flash Firmware:
Wi-Fi Connection Issues:
Random Resets or Instability:
Q: Can the ESP32 operate on battery power?
A: Yes, the ESP32 is designed for low-power applications and can operate on battery power. Use deep sleep mode to minimize power consumption.
Q: How many devices can the ESP32 connect to via Bluetooth?
A: The ESP32 supports up to 7 simultaneous Bluetooth connections in classic mode and multiple connections in BLE mode, depending on the application.
Q: Can I use the ESP32 with a 5V sensor?
A: Directly connecting a 5V sensor to the ESP32 may damage it. Use a level shifter or voltage divider to step down the voltage to 3.3V.
Q: What is the maximum Wi-Fi range of the ESP32?
A: The Wi-Fi range depends on environmental factors but typically extends up to 100 meters in open space.
By following this documentation, users can effectively integrate the ESP32 into their projects and troubleshoot common issues.