ESP32-WROOM-32 PCB Design Guide: Footprint, Pinout, and Alternatives
Wi-Fi and Bluetooth MCU module with dual-core Xtensa LX6, 4 MB flash, and on-board PCB antenna.
The ESP32-WROOM-32 is the module that made Wi-Fi a default feature on hobbyist and low-volume commercial boards. It packages the dual-core ESP32-D0WDQ6, 4 MB of SPI flash, the RF front end, and a PCB antenna into a 18 × 25.5 mm castellated module — RF layout, shielding, and (for later E-series variants) modular certification already handled.
One thing to know before you start a new design: Espressif has marked this original WROOM-32 as Not Recommended for New Designs. The ESP32-WROOM-32E uses the same footprint with a newer die revision and remains active — everything on this page applies to it, and new layouts should specify the -32E.
Most WROOM-32 board failures are not firmware bugs. They are one of five hardware mistakes: copper under the antenna, mis-strapped boot pins, input-only GPIO surprises, an undersized 3.3 V rail, or a missing auto-program circuit. Each is covered below.
What breaks boards
Antenna keep-out: no copper under or beside the antenna end
The PCB antenna occupies the last few millimetres of the module. Espressif's layout guidance is blunt: no copper, traces, or ground pour under or immediately around the antenna region, and the module belongs at the board edge — ideally with the antenna overhanging it. A pour under the antenna detunes it and can cost you most of your usable range; it is the single most common WROOM-32 layout mistake.
Strapping pins must be at the right levels at reset
GPIO0, GPIO2, GPIO5, GPIO12 (MTDI), and GPIO15 (MTDO) are sampled at reset to select boot mode and flash voltage. The worst offender is GPIO12: latched high at boot it sets the internal flash regulator to 1.8 V, and on modules with 3.3 V flash the chip simply fails to boot. Keep loads and pull-ups off the strapping pins, or buffer them; GPIO0 low with GPIO2 low/floating enters the serial bootloader.
GPIO34–39 are input-only, with no internal pull-ups
Six pins (GPIO34, 35, 36/SVP, 39/SVN among them) have no output drivers and no internal pull resistors. Firmware that calls pinMode(OUTPUT) on them fails silently, and buttons on these pins need external pull-ups. Budget your I/O map around this before routing.
Size the 3.3 V rail for radio bursts, not average draw
Espressif specifies the supply must deliver at least 500 mA to the module; measured TX current is around 240 mA typical during 802.11b transmit at full power, with short transient bursts above that. An AMS1117 fed from a 500 mA USB port sits exactly at the limit — the classic symptom is brownout resets the moment Wi-Fi associates. Use a regulator with headroom and at least 10 µF of bulk capacitance close to the module, plus 100 nF ceramic.
ADC2 is unusable while Wi-Fi runs, and flashing needs the auto-program circuit
The Wi-Fi driver owns ADC2, so analog reads on ADC2 channels return errors whenever the radio is active — plan analog inputs on ADC1 (GPIO32–39). For UART flashing without button-pressing, copy the standard two-transistor DTR/RTS auto-program circuit from Espressif's DevKitC reference schematic; it pulses EN and GPIO0 in the right sequence.
Key specifications
| Parameter | Value | Source |
|---|---|---|
| Flash | 4 MB external SPI flash on module | Module DS v3.6, Table 1 |
| Module dimensions | 18 × 25.5 × 3.1 mm | Module DS v3.6, §9 |
| Pin count | 38 (castellated) | Module DS v3.6, §2.2 |
| VDD range | 3.0–3.6 V (3.3 V typ) | Module DS v3.6, Table 13 |
| TX current / required supply | 240 mA typ (802.11b, +19.5 dBm); supply must deliver ≥ 500 mA | Chip DS v5.2, Table 5-4; Module DS Table 13 |
| Deep-sleep current | 10 µA (RTC timer + RTC mem); 150 µA with ULP on | Chip DS v5.2, Table 4-2 |
| Operating temperature | −40 to +85 °C | Module DS v3.6, Tables 1, 13 |
| Antenna | On-board PCB antenna | Module DS v3.6, §1.1 |
Verified against the manufacturer datasheet on 2026-07-09. Confirm the current revision before production use.
Alternatives
- ESP32-WROOM-32E — the direct successor: same footprint, newer die revision, active lifecycle. The default choice for new designs — this page's guidance applies unchanged.
- ESP32-S3-WROOM-1 — native USB OTG, more peripherals, and vector instructions — but no Bluetooth Classic, only BLE.
- ESP32-C3-WROOM-02 — cheaper single-core RISC-V with native USB serial; fewer GPIO and less RAM, fine for simple connected sensors.
- ESP32-WROVER-E — adds 8 MB PSRAM for camera and display work; note the longer module footprint is not pin-compatible.
Common questions
- Why does my ESP32 reset when Wi-Fi starts?
- Almost always supply droop. The module needs a 3.3 V source rated for at least 500 mA; radio bursts brown out marginal regulators like an AMS1117 running off a 500 mA USB budget. Fix the regulator and add bulk capacitance at the module.
- Which ESP32 pins are safe to use as outputs?
- Avoid the strapping pins (GPIO0, 2, 5, 12, 15) for anything that loads them at reset, and remember GPIO34–39 are input-only. That leaves roughly 20 freely usable GPIO on the WROOM-32.
- Is the ESP32-WROOM-32 discontinued?
- Not discontinued, but Espressif marks it NRND — Not Recommended for New Designs. The footprint-compatible ESP32-WROOM-32E is the active replacement and the right part for a new board.
- Can I put ground pour under the ESP32 module?
- Under the RF-shielded body, yes — but never under or next to the antenna end. Keep all copper layers clear of the antenna region and place the module at the board edge per Espressif's layout guide.