MakerLab
ESP32ESP32-WROOM-32D

ESP32-WROOM-32D: Your Gateway to Powerful IoT Projects

A versatile and cost-effective development board featuring Espressif's popular ESP32 chip, ideal for Wi-Fi and Bluetooth enabled embedded applications.

ESP32-WROOM-32D

The ESP32-WROOM-32D is a highly integrated Wi-Fi and Bluetooth System-on-Chip (SoC) module designed by Espressif Systems. It's built around the ESP32, a dual-core Tensilica Xtensa LX6 microprocessor, offering a robust platform for a wide range of embedded applications. This module is a successor to the ESP8266, providing significantly more processing power, peripherals, and advanced connectivity options, making it a favorite among hobbyists, students, and professional engineers alike.

At the heart of the ESP32-WROOM-32D is the ESP32 chip itself, which boasts two processing cores, a dedicated ULP (Ultra-Low Power) co-processor, and a rich set of peripherals including ADCs, DACs, touch sensors, SPI, I2C, UART, and more. The 'WROOM-32D' designation specifically refers to a module that includes the ESP32 chip, a flash memory (typically 4MB), and an antenna, all integrated onto a compact PCB. The 'D' variant often indicates specific antenna characteristics or manufacturing revisions.

Released around 2018, the ESP32-WROOM-32D quickly became a de facto standard for makers venturing into IoT projects. Its combination of Wi-Fi, Bluetooth (Classic and BLE), ample processing power, and a generous array of GPIO pins at an affordable price point made it an attractive alternative to more expensive microcontrollers. It excels in applications requiring wireless communication, sensor data logging, smart home devices, and complex control systems.

This board is particularly well-suited for makers who need to connect their projects to the internet or communicate wirelessly with other devices. Whether you're building a weather station that reports data online, a remote-controlled robot, or a custom smart home hub, the ESP32-WROOM-32D provides the necessary hardware and flexibility. Its dual-core nature also allows for more complex tasks to be handled concurrently, such as running a web server while simultaneously processing sensor inputs.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCESP32-D0WD (Dual-core Tensilica Xtensa LX6)
Architecture32-bit LX6
Clock speedUp to 240 MHz
Flash / Storage4 MB (on-module)
RAM / SRAM520 KB SRAM
Operating voltage3.0 - 3.6 V (typically 3.3 V)
Digital I/O pinsUp to 34
Analog / ADC12-bit SAR ADCs (up to 18 channels)
PWMUp to 16 channels (LED PWM, timer-based)
ConnectivityWi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR and BLE
USBNone directly on module (requires external USB-to-UART converter for programming)
Power inputTypically via 3.3V pin or USB-to-UART adapter's 5V input (regulated on-board)
Dimensions24 x 16 x 3 mm (module)

Pinout & pin functions

PinFunction
3V33.3V Power Output
GNDGround
ENEnable Pin (High for operation)
GPIO0Boot Mode Selection (Low during boot for flashing)
GPIO1 (TXD0)UART0 Transmit
GPIO2General Purpose I/O, strapping pin
GPIO3 (RXD0)UART0 Receive
GPIO4General Purpose I/O
GPIO5General Purpose I/O, strapping pin
GPIO12 (MTDI)General Purpose I/O, strapping pin (Low during boot for 40MHz flash clock)
GPIO13General Purpose I/O, ADC2_CH4
GPIO14General Purpose I/O, SPI2 CLK
GPIO15General Purpose I/O, strapping pin (High during boot for flash voltage)
GPIO16 (RXD2)UART2 Receive
GPIO17 (TXD2)UART2 Transmit
GPIO18General Purpose I/O, SPI2 MOSI
GPIO19General Purpose I/O, SPI2 MISO, I2S0 WS
GPIO21General Purpose I/O, I2C SDA
GPIO22General Purpose I/O, I2C SCL
GPIO23General Purpose I/O, SPI2 SCK, I2S0 MCK
GPIO25General Purpose I/O, DAC1, ADC1_CH8
GPIO26General Purpose I/O, DAC2, ADC1_CH9
GPIO27General Purpose I/O, ADC1_CH7
GPIO32General Purpose I/O, ADC1_CH4
GPIO33General Purpose I/O, ADC1_CH2
GPIO34Input Only, ADC1_CH6
GPIO35Input Only, ADC1_CH5
VP (GPIO36)ADC1_CH0
VN (GPIO39)ADC1_CH3

Wiring & circuit basics

The ESP32-WROOM-32D operates at a logic level of 3.3V. Connecting 5V devices directly to its GPIO pins can cause permanent damage. If you need to interface with 5V components, use a logic level shifter or a voltage divider for inputs. Powering the module is typically done via the 3V3 pin, which should receive a stable 3.3V supply capable of at least 500mA, or via the VIN/5V pin on development boards that include a 5V input and an onboard 3.3V regulator.

When powering the module, ensure your power supply can handle the peak current draw, especially when Wi-Fi or Bluetooth is active, which can surge up to 300-400mA. A common beginner mistake is using a weak power source that causes brownouts and unpredictable behavior. For simple LED projects, connect the LED's anode to a GPIO pin through a current-limiting resistor (e.g., 220-330 ohms) and the cathode to GND. This ensures the LED doesn't draw too much current from the GPIO.

For more complex peripherals like I2C sensors (e.g., an MPU6050 accelerometer), connect the sensor's VCC to the ESP32's 3V3 pin, GND to GND, SDA to GPIO21, and SCL to GPIO22. Remember to include pull-up resistors (typically 4.7k ohm) on both the SDA and SCL lines, connecting them to the 3V3 power rail, as required by the I2C protocol. Always consult the datasheet of any external component before wiring.

Programming & getting started

The ESP32-WROOM-32D is widely supported by various development environments. The most popular for beginners is the Arduino IDE, which can be configured to support ESP32 boards by installing the ESP32 board package via the Board Manager. This allows you to write C++ code using familiar Arduino libraries. Alternatively, MicroPython and CircuitPython offer Python-based programming, which can be easier for those new to embedded systems.

For flashing your first program, you'll typically need a USB-to-TTL serial adapter (like a CP2102 or FTDI adapter). Connect the adapter's TX to the ESP32's RXD0 (GPIO3), RX to TXD0 (GPIO1), GND to GND, and 3.3V (if the adapter provides it and you're powering the ESP32 through it). To enter bootloader mode for flashing, hold down the 'BOOT' or 'FLASH' button (often GPIO0 connected to a button) while pressing and releasing the 'RESET' button, then release the 'BOOT' button. Upload your sketch through the Arduino IDE or your chosen tool.

Project ideas

Wi-Fi Connected Weather StationBuild a device that reads temperature and humidity from sensors (like DHT22) and sends the data to an online service (e.g., ThingSpeak) via Wi-Fi. Uses GPIO for sensors, Wi-Fi for connectivity, and teaches data logging.
Bluetooth Low Energy (BLE) Sensor BeaconCreate a device that broadcasts sensor data (e.g., light levels) using BLE. This can be picked up by a smartphone app or another BLE-enabled device. Uses GPIO for sensors, BLE for communication, and teaches low-power wireless protocols.
Web Server Controlled RGB LEDHost a simple web server on the ESP32 to control an RGB LED. Access the web page from your phone or computer to change the LED color. Uses Wi-Fi, GPIO for LED control, and teaches web server implementation.
MQTT Smart Home SensorDevelop a sensor node (e.g., door/window contact sensor) that publishes its status to an MQTT broker. This allows integration with existing smart home platforms like Home Assistant. Uses GPIO for sensors, Wi-Fi, and MQTT protocol, teaching IoT messaging.
Real-time Clock (RTC) with NTP SyncImplement an RTC module (e.g., DS3231) and synchronize its time with an NTP server over Wi-Fi. Display the time on an OLED screen. Uses I2C for RTC, Wi-Fi for NTP, and SPI/I2C for display, teaching time synchronization and peripheral interfacing.
ESP-NOW Wireless CommunicationSet up two ESP32 boards to communicate directly using ESP-NOW protocol, bypassing the router. Useful for simple, fast, peer-to-peer communication between devices. Uses Wi-Fi radio and teaches direct device-to-device communication.

Buying tips & gotchas

When purchasing ESP32-WROOM-32D modules or development boards, be aware of the vast number of variants and clones available. Stick to reputable sellers to ensure you get genuine Espressif modules. Development boards often include USB-to-UART chips, voltage regulators, and buttons, making them easier to use than bare modules. Common pitfalls include incorrect voltage levels (3.3V logic!), insufficient power supply current, and issues with boot mode selection during flashing. Ensure your USB-to-UART adapter is set to 3.3V logic levels. Accessories like breadboards, jumper wires, sensors (DHT22, BME280), displays (OLED, LCD), and motor drivers are essential for building projects.