

The ESP32 is a powerful and versatile microcontroller designed for IoT (Internet of Things) applications and embedded systems. It features built-in Wi-Fi and Bluetooth capabilities, making it an excellent choice for projects requiring wireless communication. With its 30-pin configuration, the ESP32 provides a wide range of GPIO (General Purpose Input/Output) pins, ADC (Analog-to-Digital Converter) channels, PWM (Pulse Width Modulation) outputs, and other peripherals, enabling developers to create complex and efficient systems.








The ESP32 (30 pin) microcontroller is equipped with robust hardware and features. Below are its key technical specifications:
| Specification | Details |
|---|---|
| Microcontroller | Tensilica Xtensa LX6 dual-core processor |
| Clock Speed | Up to 240 MHz |
| Flash Memory | 4 MB (varies by module) |
| SRAM | 520 KB |
| Wi-Fi | 802.11 b/g/n |
| Bluetooth | Bluetooth 4.2 and BLE (Bluetooth Low Energy) |
| Operating Voltage | 3.3V |
| Input Voltage Range | 5V (via USB) or 3.3V (via VIN pin) |
| GPIO Pins | 30 pins (including ADC, DAC, PWM, I2C, SPI, UART) |
| ADC Channels | 18 channels (12-bit resolution) |
| DAC Channels | 2 channels (8-bit resolution) |
| PWM Outputs | Multiple channels |
| Communication Protocols | UART, SPI, I2C, I2S, CAN, Ethernet |
| Power Consumption | Ultra-low power consumption in deep sleep mode (as low as 10 µA) |
| Operating Temperature | -40°C to +125°C |
The ESP32 (30 pin) module has the following pinout:
| Pin Name | Type | Description |
|---|---|---|
| VIN | Power Input | Input voltage (5V) for powering the ESP32 module. |
| GND | Ground | Ground connection. |
| 3V3 | Power Output | 3.3V output for powering external components. |
| EN | Enable | Enables or disables the module. Active high. |
| GPIO0 | GPIO/Boot Mode | General-purpose I/O or boot mode selection. |
| GPIO1 (TX0) | UART TX | UART transmit pin. |
| GPIO3 (RX0) | UART RX | UART receive pin. |
| GPIO2 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO4 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO5 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO12 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO13 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO14 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO15 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO16 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO17 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO18 | GPIO/SPI | General-purpose I/O or SPI clock (SCK). |
| GPIO19 | GPIO/SPI | General-purpose I/O or SPI MISO. |
| GPIO21 | GPIO/I2C | General-purpose I/O or I2C SDA. |
| GPIO22 | GPIO/I2C | General-purpose I/O or I2C SCL. |
| GPIO23 | GPIO/SPI | General-purpose I/O or SPI MOSI. |
| GPIO25 | GPIO/DAC | General-purpose I/O or DAC output. |
| GPIO26 | GPIO/DAC | General-purpose I/O or DAC output. |
| GPIO27 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO32 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO33 | GPIO/ADC/PWM | General-purpose I/O, ADC, or PWM output. |
| GPIO34 | GPIO/ADC | General-purpose I/O or ADC input. |
| GPIO35 | GPIO/ADC | General-purpose I/O or ADC input. |
| GPIO36 | GPIO/ADC | General-purpose I/O or ADC input. |
| GPIO39 | GPIO/ADC | General-purpose I/O or ADC input. |
Powering the ESP32:
Connecting Peripherals:
Programming the ESP32:
The following example demonstrates how to blink an LED connected to GPIO2:
// Define the LED pin
const int ledPin = 2; // GPIO2 is commonly used for onboard LEDs
void setup() {
pinMode(ledPin, OUTPUT); // Set GPIO2 as an output pin
}
void loop() {
digitalWrite(ledPin, HIGH); // Turn the LED on
delay(1000); // Wait for 1 second
digitalWrite(ledPin, LOW); // Turn the LED off
delay(1000); // Wait for 1 second
}
ESP32 Not Detected by Computer:
Upload Fails in Arduino IDE:
Wi-Fi Connection Issues:
Random Resets or Instability:
Q: Can the ESP32 operate on battery power?
A: Yes, the ESP32 can be powered by a battery. Use a 3.7V LiPo battery with a voltage regulator to provide 3.3V.
Q: How do I use the ESP32's Bluetooth feature?
A: The ESP32 supports both Bluetooth Classic and BLE. Use libraries like BluetoothSerial or BLEDevice in the Arduino IDE to implement Bluetooth functionality.
Q: What is the maximum range of the ESP32's Wi-Fi?
A: The range depends on environmental factors but typically extends up to 100 meters in open spaces.
Q: Can I use the ESP32 with other IDEs?
A: Yes, the ESP32 is compatible with other IDEs like PlatformIO and Espressif's ESP-IDF.