MakerLab
ESP32ESP32 (WROOM-32)

ESP32 (WROOM-32): Your Gateway to Advanced IoT Projects

The ESP32 WROOM-32 is a versatile and powerful microcontroller module ideal for ambitious makers and embedded engineers venturing into IoT.

ESP32 (WROOM-32)

The ESP32 WROOM-32 is a highly integrated Wi-Fi and Bluetooth System-on-Chip (SoC) module developed by Espressif Systems. It's the successor to the popular ESP8266 and represents a significant leap in performance, features, and connectivity options. This module is designed for a wide range of applications, from smart home devices and industrial automation to wearable technology and complex sensor networks. Its dual-core processor, abundant peripherals, and low power consumption make it a compelling choice for projects requiring both robust processing power and wireless communication.

At the heart of the ESP32 WROOM-32 is the ESP32-D0WDQ6 chip, which features two Xtensa LX6 cores running at up to 240MHz. This dual-core architecture allows for efficient multitasking, enabling one core to handle demanding tasks like signal processing or machine learning inference while the other manages real-time operations and connectivity. The chip also boasts a rich set of integrated peripherals, including a wide array of GPIO pins, analog-to-digital converters (ADCs), digital-to-analog converters (DACs), touch sensors, SPI, I2C, UART, CAN, and Ethernet MAC interfaces, alongside a powerful hardware cryptographic accelerator.

The WROOM-32 is one of the most popular form factors for the ESP32 family, featuring an integrated PCB antenna, making it easier to integrate into designs without the need for external RF components. It comes with 4MB of SPI flash memory for program storage and configuration. This module is particularly well-suited for makers and engineers who need more than just basic Wi-Fi connectivity. Its advanced features, such as Bluetooth Low Energy (BLE) support, deep sleep modes for power efficiency, and the ability to handle complex communication protocols, open doors to sophisticated IoT applications that were previously out of reach for hobbyist-grade hardware.

Released around 2016, the ESP32 quickly established itself as a favorite among the maker community due to its impressive feature set at an affordable price point. It bridges the gap between low-cost microcontrollers like the ESP8266 and more powerful, expensive embedded systems. Whether you're building a smart thermostat, a remote sensor array, a voice-controlled assistant, or a custom robotics platform, the ESP32 WROOM-32 provides the processing power, connectivity, and flexibility to bring your ideas to life.

Specifications

Microcontroller / SoCEspressif ESP32-D0WDQ6
ArchitectureDual-core Xtensa LX6
Clock speedUp to 240 MHz
Flash / Storage4MB SPI Flash (on-board)
RAM / SRAM520 KB SRAM
Operating voltage3.0V - 3.6V (module operates at 3.3V)
Digital I/O pinsUp to 34 GPIO
Analog / ADC12-bit SAR ADCs (up to 18 channels)
PWMUp to 16 channels (timers)
ConnectivityWi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR and BLE
USBNone on the module itself (requires external USB-to-UART converter for programming)
Power inputTypically 5V via micro-USB (on development boards), or 3.3V direct supply
Dimensions24.0mm x 16.0mm x 3.2mm (module)

Pinout & pin functions

PinFunction
3V33.3V Power Output
GNDGround
ENEnable Pin (High to enable)
GPIO34Input only, ADC1_CH6
GPIO35Input only, ADC1_CH7
GPIO36Input only, ADC1_CH0
GPIO39Input only, ADC1_CH3
GPIO32ADC1_CH4, Touch0
GPIO33ADC1_CH2, Touch1
GPIO25DAC1, ADC1_CH8, ADC2_CH8
GPIO26DAC2, ADC1_CH9, ADC2_CH9
GPIO27ADC1_CH5, ADC2_CH7, Touch2
GPIO14HSPI_MISO, Touch3
GPIO12HSPI_MISO, MTDI, ADC1_CH5
GPIO13HSPI_MOSI, MTDO, ADC1_CH4
GPIO15HSPI_CLK, MTCK, ADC1_CH3
GPIO2ADC2_CH4, Touch4
GPIO4ADC2_CH0, Touch5
GPIO0Boot Pin (Low during boot for flash mode), Touch6
GPIO21I2C SDA
GPIO22I2C SCL
GPIO19I2S0_RXD, MISO, U1RXD
GPIO23I2S0_TXD, MOSI, U1TXD
GPIO18I2S0_CLK, SCK, U1RTS
GPIO5HSPI_CS0, U1CTS
GPIO17HSPI_CS1
GPIO16U0RXD
GPIO15U0TXD
GPIO4ADC2_CH0, Touch5
GPIO2ADC2_CH4, Touch4
GPIO15MTDI, HSPI_CLK, ADC1_CH3
GPIO2ADC2_CH4, Touch4
GPIO0Boot Pin, Touch6
GPIO1U0TXD
GPIO3U0RXD

Wiring & circuit basics

The ESP32 WROOM-32 module operates at 3.3V. While most development boards include a voltage regulator to accept 5V input (often via micro-USB) and step it down to 3.3V, it's crucial to ensure you do not apply voltages higher than 3.6V directly to the module's 3.3V pin. Connecting 5V directly to a 3.3V pin will likely damage the chip. When interfacing with external components, remember that the ESP32's GPIO pins are 3.3V logic level. Connecting these pins directly to 5V devices (like many Arduino Uno shields or sensors) can cause damage. Use a logic level converter for safe communication between 3.3V and 5V systems.

Powering the module requires careful consideration of current draw. While the ESP32 itself can consume significant current during Wi-Fi transmissions (up to several hundred mA), its average consumption can be much lower, especially in deep sleep modes. A stable 3.3V power supply capable of delivering at least 500mA is generally recommended for development boards, with a higher capacity (1A or more) being safer for projects with many peripherals or frequent high-power operations. Ensure your power source can handle peak demands to prevent brownouts and system instability.

A simple LED circuit demonstrates basic wiring. Connect an LED's anode (longer leg) to a GPIO pin (e.g., GPIO2) through a current-limiting resistor (typically 220-330 ohms for a standard LED). Connect the LED's cathode (shorter leg) to a GND pin. When the GPIO pin is set HIGH (3.3V), current flows through the resistor and LED, illuminating it. For an I2C sensor, connect its VCC to the board's 3.3V pin, GND to a GND pin, SDA to the ESP32's I2C SDA pin (GPIO21), and SCL to the ESP32's I2C SCL pin (GPIO22).

Programming & getting started

The ESP32 WROOM-32 is highly versatile in its programming options. The most popular choice for makers is the Arduino IDE, which offers a familiar C++ based environment with extensive libraries. To use it, you'll need to install the ESP32 board support package via the Board Manager. Alternatively, MicroPython and CircuitPython provide Python environments, allowing for rapid prototyping with a more beginner-friendly syntax. For professional embedded development, Espressif's own ESP-IDF (Espressif IoT Development Framework) offers the most control and access to low-level hardware features, typically used with C/C++ and CMake. PlatformIO, an extension for VS Code, is another powerful option supporting multiple frameworks including Arduino, ESP-IDF, and MicroPython.

To upload your first program using the Arduino IDE: 1. Install the ESP32 board support package. 2. Connect your ESP32 development board to your computer via USB. 3. Select the correct ESP32 board model and COM port from the Tools menu. 4. Write or load a simple sketch, like the 'Blink' example, modifying the pin number if necessary. 5. Click the Upload button. The IDE will compile the code and flash it to the ESP32. You may need to hold the BOOT (or FLASH) button while pressing RESET, then release BOOT when the upload starts, depending on your specific board's auto-reset circuitry.

Project ideas

Smart Home Sensor HubMonitor temperature, humidity, and air quality using various sensors connected via I2C or analog inputs. The ESP32 can then transmit this data wirelessly via Wi-Fi to a cloud platform or local server, learning about IoT data acquisition and wireless communication.
Bluetooth Low Energy (BLE) BeaconBroadcast sensor data or status information using BLE. This project is excellent for tracking assets, creating proximity-based notifications, or building a simple presence detection system, teaching the fundamentals of BLE advertising.
Web-Controlled RGB LED StripControl the color and brightness of an addressable RGB LED strip (like WS2812B) over Wi-Fi. The ESP32 can host a web server, allowing you to change colors from any device on your network, demonstrating web interfaces and real-time control.
Voice-Activated AssistantIntegrate a microphone module and use cloud services or local keyword spotting to create a basic voice assistant. Commands could control relays, read sensor data, or trigger other IoT devices, exploring audio processing and cloud integration.
Wi-Fi Connected Security CameraPair the ESP32 with a camera module (like the OV2640) to stream video over Wi-Fi. This project teaches about camera interfacing, streaming protocols, and handling higher bandwidth data transfers.
Automated Plant Watering SystemUse soil moisture sensors and a small water pump controlled by a relay. The ESP32 can monitor moisture levels and automatically water plants when needed, sending notifications via Wi-Fi about watering events, illustrating sensor-driven automation and remote monitoring.

Buying tips & gotchas

When purchasing an ESP32 WROOM-32, look for reputable development boards from manufacturers like Adafruit, SparkFun, or official Espressif distributors. Be aware of numerous low-cost clones, which may have inconsistent quality or slightly different pinouts. Ensure your chosen board has a reliable USB-to-UART chip (like CP2102 or FTDI) for easy programming. Accessories like breadboards, jumper wires, a 3.3V power supply, and basic electronic components (resistors, LEDs) are essential. For projects requiring more power, consider using a dedicated 3.3V power supply capable of at least 1A, especially if using multiple sensors or actuators.