

The ESP32 WROOM is a powerful microcontroller module with integrated Wi-Fi and Bluetooth capabilities, designed for Internet of Things (IoT) applications. It features a dual-core processor, ample GPIO pins, and supports various communication protocols, making it ideal for smart devices and embedded systems.








| Specification | Value |
|---|---|
| Microcontroller | Tensilica Xtensa Dual-Core 32-bit LX6 |
| Clock Speed | Up to 240 MHz |
| Flash Memory | 4 MB (varies by model) |
| SRAM | 520 KB |
| Wi-Fi Standard | 802.11 b/g/n |
| Bluetooth | v4.2 BR/EDR and BLE |
| Operating Voltage | 3.3V |
| Input Voltage Range | 3.0V to 3.6V |
| GPIO Pins | 34 (multipurpose) |
| Communication Protocols | UART, SPI, I2C, I2S, CAN, PWM, ADC, DAC |
| ADC Resolution | 12-bit |
| DAC Resolution | 8-bit |
| Operating Temperature Range | -40°C to 85°C |
| Power Consumption | Ultra-low power modes available |
The ESP32 WROOM module has 38 pins. Below is a summary of the key pins and their functions:
| Pin Number | Pin Name | Function |
|---|---|---|
| 1 | EN | Enable pin (active high) |
| 2 | IO0 | GPIO0, used for boot mode selection |
| 3 | IO1 (TX0) | GPIO1, UART0 TX |
| 4 | IO3 (RX0) | GPIO3, UART0 RX |
| 5 | IO4 | GPIO4, PWM, ADC, or other functions |
| 6 | IO5 | GPIO5, PWM, ADC, or other functions |
| 7 | IO12 | GPIO12, ADC2, touch sensor |
| 8 | IO13 | GPIO13, ADC2, touch sensor |
| 9 | IO14 | GPIO14, ADC2, touch sensor |
| 10 | IO15 | GPIO15, ADC2, touch sensor |
| 11 | IO16 | GPIO16, UART2 RX |
| 12 | IO17 | GPIO17, UART2 TX |
| 13 | IO18 | GPIO18, SPI CLK |
| 14 | IO19 | GPIO19, SPI MISO |
| 15 | IO21 | GPIO21, I2C SDA |
| 16 | IO22 | GPIO22, I2C SCL |
| 17 | IO23 | GPIO23, SPI MOSI |
| 18 | GND | Ground |
| 19 | 3V3 | 3.3V power supply |
Note: Some GPIO pins have specific restrictions or are used during boot. Refer to the ESP32 datasheet for detailed pin behavior.
Below is an example of how to blink an LED connected to GPIO2 of the ESP32 WROOM using the Arduino IDE:
// Define the GPIO pin for the LED
#define LED_PIN 2
void setup() {
// Initialize the LED pin as an output
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// Turn the LED on
digitalWrite(LED_PIN, HIGH);
delay(1000); // Wait for 1 second
// Turn the LED off
digitalWrite(LED_PIN, LOW);
delay(1000); // Wait for 1 second
}
Note: Ensure the ESP32 board is selected in the Arduino IDE under
Tools > Board.
ESP32 Not Detected by Computer:
Code Upload Fails:
Wi-Fi Connection Issues:
Random Resets or Instability:
Q: Can the ESP32 WROOM operate on 5V?
A: No, the ESP32 WROOM operates at 3.3V. Use a voltage regulator or level shifter for 5V systems.
Q: How do I use Bluetooth on the ESP32?
A: The ESP32 supports both Bluetooth Classic and BLE. Use the BluetoothSerial or BLE libraries in the Arduino IDE to implement Bluetooth functionality.
Q: What is the maximum Wi-Fi range of the ESP32?
A: The range depends on environmental factors but typically extends up to 50 meters indoors and 200 meters outdoors.
Q: Can I use the ESP32 WROOM for audio applications?
A: Yes, the ESP32 supports I2S for audio input/output and can be used for applications like streaming or audio processing.