ESP32-WROOM Development Board
Code name: ESP32_WROOM_DA
ESP32-WROOM development board is based on esp32 microcontroller and uses xtensa architecture. This board has a maximum CPU frequency of 240 MHz and a flash size of 4MB.
About ESP32-WROOM
The ESP32-WROOM-32 is a versatile and powerful Wi-Fi + Bluetoothยฎ + Bluetooth LE module, designed to support a wide range of applications. It is equally suitable for low-power sensor networks as well as high-demand tasks like voice encoding, music streaming, and MP3 decoding.
At the heart of the module is the ESP32-D0WDQ6 chip, engineered for scalability and adaptability. This chip features two CPU cores that can be independently controlled, with an adjustable clock frequency ranging from 80 MHz to 240 MHz. Additionally, it includes a low-power coprocessor, which is ideal for handling tasks that require minimal computing powerโsuch as peripheral monitoringโwhile conserving energy.
The ESP32 integrates a rich set of peripherals, including capacitive touch sensors, an SD card interface, Ethernet, high-speed SPI, UART, I2S, and I2C. Its combination of power, flexibility, and connectivity makes the ESP32-WROOM-32 a perfect choice for a broad spectrum of IoT and embedded applications.
Technical Specifications
๐ฐ๏ธ Connectivity
๐ง Microcontroller
โจ Features
- 40 digital IO pins
- 16 external interrupt pins
- 16 analog input pins
- 19 PWM pins
ESP32-WROOM Pinout
The ESP32-WROOM pinout is designed to offer developers a highly versatile and feature-packed layout for a variety of IoT and embedded applications. The ESP32 WROOM includes essential power pins such as 5V
, 3.3V
, and GND
, ensuring stable power delivery for external components. Key communication protocols are well-supported, with pins for UART (RXD0
, TXD0
), SPI (MISO
, MOSI
, SCK
, and SS
), and I2C (SDA
and SCL
) to interface with a wide range of peripherals.
The ESP32 WROOM Devkit also supports multiple ADC pins (IO34
, IO35
, IO36
, etc.), making it ideal for projects that require analog input, such as reading sensor data. Additionally, specialized pins such as DAC (IO25
, IO26
) and Touch Pins enhance its usability in advanced applications. The inclusion of RTC GPIOs further adds low-power features, allowing developers to take full advantage of the ESP32-WROOM pinout for efficient power management.
โ Safe Pins to Use
For general GPIO usage, these are the safest and most flexible choices:
Why Are These Pins Safe?
- Not involved in bootstrapping โ No impact on device boot mode or system startup
- Not linked to flash memory or PSRAM โ Won't interfere with storage or memory access
- Not dedicated to USB or JTAG โ Free for general use without affecting debugging
- No special hardware connections โ Freely assignable without internal conflicts
โ ๏ธ Pins to Avoid or Use with Caution
Some pins are reserved for critical functions like bootstrapping, JTAG debugging, USB communication, and flash memory operations. Misusing these pins may lead to boot failures, programming issues, USB conflicts, or disruptions in flash storage.
Critical Pin Categories:
- ๐ ๏ธ Strapping Pins: Control boot behavior and flash voltage selection
- ๐ JTAG Debugging Pins: Required for low-level debugging
- ๐ USB Communication Pins: Used for USB Serial/JTAG communication
- โก Flash Memory & SPI Pins: Connected to SPI flash memory and PSRAM
- ๐ก UART Serial Communication Pins: Used for debugging and firmware uploads
PIN | Label | Reason | Function |
---|---|---|---|
IO34 | GPIO34 | Cannot be used as output (no drive capability); only suitable for analog/digital input. | ๐ช Other |
IO35 | GPIO35 | Cannot be used as output; only suitable for input. | ๐ช Other |
IO14 | MTMS (GPIO14) | Used for JTAG debugging (TMS); driving it as GPIO may interfere with JTAG or produce spurious signals at boot. | ๐ช Other |
IO12 | MTDI (GPIO12) | Keep LOW during boot (internal PD); pulling HIGH at reset selects 1.8V flash mode, causing flash brownout if 3.3V flash is used. | ๐ ๏ธ Strapping |
IO13 | MTCK (GPIO13) | Used for JTAG debugging (TCK); avoid using as GPIO if JTAG is needed. | ๐ช Other |
ESP32-WROOM Pin Mappings
This development board provides 40 digital IO pins, out of which 16 can be used as external interrupt pins , 16 as analog input pins and 19 pins have Pulse-Width Modulation (PWM) .
Pin | Function | ESP Pin | Input/Output | Description |
---|---|---|---|---|
1 | SENSOR_VP | GPIO36 | input | ADC1_CH0, RTC_GPIO0 |
2 | SENSOR_VN | GPIO39 | input | ADC1_CH3, RTC_GPIO3 |
3 | IO34 | GPIO34 | input | ADC1_CH6, RTC_GPIO4 |
4 | IO35 | GPIO35 | input | ADC1_CH7, RTC_GPIO5 |
5 | IO32 | GPIO32 | bidirectional | XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9 |
6 | IO33 | GPIO33 | bidirectional | XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 |
7 | IO25 | GPIO25 | bidirectional | DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 |
8 | IO26 | GPIO26 | bidirectional | DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 |
9 | IO27 | GPIO27 | bidirectional | ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV |
10 | IO14 | GPIO14 | bidirectional | ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 |
11 | IO12 | GPIO12 | bidirectional | ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 |
12 | GND | N/A | power ground | Ground connection |
13 | IO13 | GPIO13 | bidirectional | ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER |
14 | SHD/SD2 | GPIO9 | bidirectional | SD_DATA2, SPIHD, HS1_DATA2, U1RXD |
15 | SWP/SD3 | GPIO10 | bidirectional | SD_DATA3, SPIWP, HS1_DATA3, U1TXD |
16 | SCS/CMD | GPIO11 | bidirectional | SD_CMD, SPICS0, HS1_CMD, U1RTS |
17 | SCK/CLK | GPIO6 | bidirectional | SD_CLK, SPICLK, HS1_CLK, U1CTS |
18 | SDO/SD0 | GPIO7 | bidirectional | SD_DATA0, SPIQ, HS1_DATA0, U2RTS |
19 | SDI/SD1 | GPIO8 | bidirectional | SD_DATA1, SPID, HS1_DATA1, U2CTS |
20 | IO15 | GPIO15 | bidirectional | ADC2_CH3, TOUCH3, MTDO, HSPICS0, RTC_GPIO13, HS2_CMD, SD_CMD, EMAC_RXD3 |
21 | IO2 | GPIO2 | bidirectional | ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0 |
22 | IO0 | GPIO0 | bidirectional | ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK |
23 | IO4 | GPIO4 | bidirectional | ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER |
24 | IO16 | GPIO16 | bidirectional | HS1_DATA4, U2RXD, EMAC_CLK_OUT |
25 | IO17 | GPIO17 | bidirectional | HS1_DATA5, U2TXD, EMAC_CLK_OUT_180 |
26 | IO5 | GPIO5 | bidirectional | VSPICS0, HS1_DATA6, EMAC_RX_CLK |
27 | IO18 | GPIO18 | bidirectional | VSPICLK, HS1_DATA7 |
28 | IO19 | GPIO19 | bidirectional | VSPIQ, U0CTS, EMAC_TXD0 |
29 | NC | N/A | not connected | No connection |
30 | IO21 | GPIO21 | bidirectional | VSPIHD, EMAC_TX_EN |
31 | RXD0 | GPIO3 | bidirectional | U0RXD, CLK_OUT2 |
32 | TXD0 | GPIO1 | bidirectional | U0TXD, CLK_OUT3, EMAC_RXD2 |
33 | IO22 | GPIO22 | bidirectional | VSPIWP, U0RTS, EMAC_TXD1 |
34 | IO23 | GPIO23 | bidirectional | VSPID, HS1_STROBE |
35 | GND | N/A | power ground | Ground connection |
ESP32-WROOM Pins Mapping Arduino IDE
Below you can find the ESP32-WROOM pinout. This development board provides 40 digital IO pins, out of which 16 can be used as external interrupt pins, 16 as analog input pins and 19 pins have Pulse-Width Modulation (PWM).
Pin | Analog | Touch | PWM | Other |
---|---|---|---|---|
0 | A11 | T1 | ||
1 | PWM | TX | ||
2 | A12 | T2 | PWM | ANT1 |
3 | PWM | RX | ||
4 | A10 | T0 | PWM | |
5 | PWM | SS | ||
12 | A15 | T5 | PWM | |
13 | A14 | T4 | PWM | |
14 | A16 | T6 | PWM | |
15 | A13 | T3 | PWM | |
18 | PWM | SCK | ||
19 | PWM | MISO | ||
21 | PWM | SDA | ||
22 | PWM | SCL | ||
23 | PWM | MOSI | ||
25 | A18 | PWM | DAC1 ANT2 | |
26 | A19 | PWM | DAC2 | |
27 | A17 | T7 | PWM | |
32 | A4 | T9 | PWM | |
33 | A5 | T8 | PWM | |
34 | A6 | |||
35 | A7 | |||
36 | A0 | |||
39 | A3 |
Default Tools
Bootloader tool | esptool_py |
Uploader tool | esptool_py |
Network uploader tool | esp_ota |
Bootloader address | 0x1000 |
Flash mode | dio |
Boot mode | dio |
Maximum upload size | 1280 Kb (1310720 B) |
Maximum data size | 320 Kb (327680 B) |
The ESP32-WROOM development board by default uses esptool_py uploader tool, esp_ota network uploader tool for Over-the-air (OTA) uploads and esptool_py bootloader tool. The bootloader starts at address "0x1000". Flash mode and boot mode for ESP32-WROOM development board by default is dio and dio respectively.