What is ESP32 WROOM 32:

The ESP32 WROOM 32 is a compact and powerful microcontroller module developed by Espressif Systems. It integrates the ESP32 chip, which is part of the ESP (Espressif Systems Products) family. The WROOM 32 module is widely used in various embedded systems and Internet of Things (IoT) applications due to its advanced features and capabilities

ESP32 WROOM 32 Specifications:

The ESP32 WROOM 32 has the follow specifiaction:

MicrocontrollerDual-core Tensilica
Xtensa LX6 processor (240 MHz clock frequency)
Wireless ConnectivityIntegrated Wi-Fi 802.11 b/g/n.
Integrated Bluetooth (Bluetooth Low Energy, BLE) connectivity.
Memory520 KB SRAM.
448 KB ROM (program memory).
External SPI flash memory support (optional).
PeripheralsGPIO (General Purpose Input/Output) pins.
PWM (Pulse Width Modulation).
Hall effect sensor.
SecurityHardware-based security features,
 including secure boot and flash encryption.
Power ManagementMultiple low-power modes for energy efficiency.
Programmable regulator for core power supply.
Operating Voltage2.2V to 3.6V.
Operating Temperature"-40°C to +85°C"
Form FactorCompact module with castellated edges for easy soldering.
Clocks and TimersBuilt-in RTC (Real-Time Clock).
Timers and watchdogs for time-sensitive applications.
Integrated AntennaOnboard antenna for Wi-Fi and Bluetooth communication.
CertificationsFCC, CE, IC, and other certifications for compliance.
Development Support:Arduino IDE support for programming.
MicroPython support.
SDK (Software Development Kit) provided by Espressif Systems.
Package OptionsAvailable in different package options, including the popular ESP32 WROOM 32D
 and ESP32 WROOM 32U.
DimensionsTypical module dimensions are around 18mm x 25.5mm


The ESP32 WROOM 32 module has a set of GPIO (General Purpose Input/Output) pins that can be used for various purposes, including digital input/output, analog input, PWM (Pulse Width Modulation), and communication interfaces like UART, I2C, and SPI. The exact pin mapping can depend on the specific ESP32 module or development board, so it's essential to refer to the documentation for your particular device.

Here is a general overview of the GPIO pins typically found on the ESP32 WROOM 32 module

General-Purpose Digital Pins


Special Function Pins

RX0, TX0: Serial communication pins (UART0).
RX1, TX1: Serial communication pins (UART1).
SCL, SDA: I2C communication pins.
SCK, MOSI, MISO: SPI communication pins.
A0: Analog input.
Power Pins3V3: 3.3V power output.
GND: Ground.
Control PinsEN (Enable): Enable pin.
BOOT: Boot mode selection pin.


Digital Input/Output Pins (GPIO):

GPIO pins are used for input/output operations:

  • GPIO 0: Pin number 36
  • GPIO 1: Pin number 37
  • GPIO 2: Pin number 38
  • GPIO 3: Pin number 39
  • GPIO 4: Pin number 34
  • GPIO 5: Pin number 14
  • GPIO 6: Pin number 12
  • GPIO 7: Pin number 13
  • GPIO 8: Pin number 15
  • GPIO 9: Pin number 9
  • GPIO 10: Pin number 2
  • GPIO 11: Pin number 0
  • GPIO 12: Pin number 4
  • GPIO 13: Pin number 2
  • GPIO 14: Pin number 15
  • GPIO 15: Pin number 2
  • GPIO 16: Pin number 17

They can be configured as inputs or outputs depending on the project's needs.

Analog Inputs:

Some pins can be used as analog inputs to measure variable voltage signals.

  • ADC 0: Pin number 36
  • ADC 1: Pin number 37
  • ADC 2: Pin number 38
  • ADC 3: Pin number 39
  • ADC 4: Pin number 32
  • ADC 5: Pin number 33
  • ADC 6: Pin number 34
  • ADC 7: Pin number 35

Pulse Width Modulation (PWM):

Several pins support PWM, allowing control of motor speed, LED brightness, etc.

  • PWM 0: Pin number 2
  • PWM 1: Pin number 4
  • PWM 2: Pin number 5
  • PWM 3: Pin number 18
  • PWM 4: Pin number 19
  • PWM 5: Pin number 21

Communication Interfaces:

UART (Universal Asynchronous Receiver-Transmitter): Dedicated pins for UART facilitate serial communication.

  • UART 0 (TX/RX): Pin number 1 (TX), Pin number 3 (RX)
  • UART 1 (TX/RX): Pin number 17 (TX), Pin number 16 (RX)

I2C (Inter-Integrated Circuit): Pins are reserved for two-wire serial communication, allowing connection to I2C devices.

  • I2C (SDA/SCL): Pin number 21 (SDA), Pin number 22 (SCL)

SPI (Serial Peripheral Interface): Pins are assigned to the SPI interface for communication with external devices.

  • SPI (MISO/MOSI/SCK/SS): Pin number 19 (MISO), Pin number 23 (MOSI), Pin number 18 (SCK), Pin number 5 (SS).

Importante Note:

  • Some GPIO pins have special functions during boot or are dedicated to specific communication interfaces.
  • Check the specific documentation for your ESP32 module or development board for the precise pin mapping and capabilities.

When working with the ESP32 WROOM 32 module, it's crucial to refer to the datasheet or technical reference manual provided by Espressif Systems or the manufacturer of your specific module.


Programming the ESP32 WROOM 32 module involves writing code in a programming language that the microcontroller understands. The most common languages for programming the ESP32 are C/C++ using the Arduino IDE or the ESP-IDF (Espressif IoT Development Framework), and MicroPython. Here, I'll provide a brief overview of programming the ESP32 WROOM 32 using the Arduino IDE.

Arduino IDE:

there is many step to follow to program In Arduino ide:

Install the Arduino IDE:Download and install the Arduino IDE from the official Arduino website.

Install ESP32 Board Support:

  • Open the Arduino IDE.
  • Go to "File" -> "Preferences."
  • In the "Additional Boards Manager URLs" field, add the following URL https://dl.espressif.com/dl/package_esp32_index.json  and click "OK":
  • Go to "Tools" -> "Board" -> "Boards Manager."
  • Search for "esp32" and install the "ESP32 by Espressif Systems" board support.

Select ESP32 Board:

  • Go to "Tools" -> "Board" and select your ESP32 board (e.g., "Node32s").

Write Your Code and upload it

  • Write your Arduino code in the Arduino IDE.
  • Make sure to include the necessary libraries for your project.
  • Connect your ESP32 to your computer via a USB cable.
  • Select the correct COM port under "Tools" -> "Port."
  • Click the "Upload" button to compile and upload your code to the ESP32.


After the upload phase if you get this message:

you just need to press the boot  buton on the  board  for few second  and realease it  enabling the transmission and  writing  of the code to the chip of Esp32

At the end if the message you got is the same as the picture its mean  your upload its complete without problem


Thonny IDE:

Thonny is a Python IDE (Integrated Development Environment) that can be used with MicroPython on the ESP32. Here's a basic guide on how to use Thonny with ESP32:

Install Thonny:

Install esptool:

  • Open Thonny and navigate to the "Tools" menu.
  • Select "Manage Packages..."
  • In the Package Manager, search for "esptool" and install it.

Install MicroPython Firmware:

  • Download the MicroPython firmware for ESP32 from the MicroPython website: https://micropython.org/download/esp32/
  • Connect your ESP32 to your computer via a USB cable.
  • Open Thonny and go to the "Tools" menu.
  • Select "Options..."
  • In the Options dialog, go to the "Interpreter" tab.
  • Select "MicroPython (ESP32)" from the drop-down menu.
  • Click "OK" to close the Options dialog.
  • Click the "Run" button in Thonny to open the MicroPython REPL.

Flash MicroPython Firmware:

  • You can use the esptool from within Thonny to flash the MicroPython firmware to your ESP32.
  • Go to the "View" menu and select "Panes" -> "Shell" to open the Thonny Shell. In the Shell, use the esptool command to flash the firmware. For example: esptool.py --port /your/esp/port --baud 460800 write_flash --flash_size=detect 0 /path/to/micropython-firmware.bin Replace /your/esp/port with the port your ESP32 is connected to and /path/to/micropython-firmware.bin with the path to the MicroPython firmware you downloaded.

Write and Run MicroPython Code:

  • After flashing, you can use Thonny to write and run MicroPython code on your ESP32.
  • Write your MicroPython script in the Thonny editor.
  • Use the "Run" button to execute the code.

Transfer Files:

  • Thonny has a built-in file transfer tool for MicroPython devices.
  • Use the "File" menu to open the "Transfer Files to Device" dialog.
  • Use this dialog to transfer Python files to your ESP32.


In conclusion, the ESP32 WROOM-32 is a versatile and feature-rich microcontroller module that has gained popularity in the maker and IoT communities. Its combination of performance, connectivity options, and a robust development ecosystem makes it a compelling choice for a wide range of projects.