ESP32 NodeMCU-32S

A Wi-Fi and Bluetooth development board built around the Espressif ESP32-WROOM-32 module, with a dual-core 240 MHz processor and 3.3V GPIO.

ESP32 NodeMCU-32S: Wi-Fi + Bluetooth

What is the ESP32 NodeMCU-32S?

The ESP32 NodeMCU-32S is a development board that breaks out the Espressif ESP32-WROOM-32 module onto a breadboard-friendly form factor. The WROOM-32 module carries a dual-core Xtensa LX6 processor running at up to 240 MHz, 520 KB of on-chip SRAM, and 4 MB of external flash, giving it far more headroom than an 8-bit Arduino for networked and compute-heavy sketches.

Its defining feature is integrated 2.4 GHz Wi-Fi (802.11 b/g/n) plus Bluetooth (Classic BR/EDR and BLE) on the same chip, so a single board can host a web server, publish MQTT telemetry, or act as a BLE peripheral without add-on radios. The board also exposes a wide peripheral set: 18 ADC channels at 12-bit resolution, two 8-bit DAC outputs (IO25 and IO26), hardware I2C, SPI, and UART, plus capacitive touch and 16 independent PWM-capable channels.

Makers program it through the Arduino IDE (via the ESP32 board package), PlatformIO, or ESP-IDF, and power it over the onboard USB-to-UART bridge. It is a common choice for IoT sensor nodes, smart-home controllers, and any project that needs wireless connectivity, more memory, or faster processing than a classic Arduino provides.

ESP32 NodeMCU-32S pin reference

PinFunctionType
3V3 3V3PowerPower out
EN ENDigitalDigital input
VP SVP (IO36)Analog ADC1_CH0 · DigitalDigital input
VN SVN (IO39)Analog ADC1_CH3 · DigitalDigital input
IO34 IO34Analog ADC1_CH6 · DigitalDigital input
IO35 IO35Analog ADC1_CH7 · DigitalDigital input
IO32 IO32Analog ADC1_CH4 · PWM · DigitalBidirectional (GPIO)
IO33 IO33Analog ADC1_CH5 · PWM · DigitalBidirectional (GPIO)
IO25 IO25 (DAC1)Analog DAC_1 · PWM · DigitalBidirectional (GPIO)
IO26 IO26 (DAC2)Analog DAC_2 · PWM · DigitalBidirectional (GPIO)
IO27 IO27PWM · DigitalBidirectional (GPIO)
IO14 IO14PWM · DigitalBidirectional (GPIO)
IO12 IO12PWM · Digital · Strapping selects flash voltage at boot (LOW=3.3V default, HIGH=1.8V can brick board)Bidirectional (GPIO)
GND_L GNDPowerPower in
IO13 IO13PWM · DigitalBidirectional (GPIO)
SD2 SD2 (IO9)DigitalBidirectional (GPIO)
SD3 SD3 (IO10)DigitalBidirectional (GPIO)
CMD CMD (IO11)DigitalBidirectional (GPIO)
VIN VIN (5V)PowerPower in
GND_R GNDPowerPower in
IO23 IO23 (MOSI)SPI MOSI · DigitalBidirectional (GPIO)
IO22 IO22 (SCL)I²C SCL · DigitalBidirectional (GPIO)
TX TX (IO1)UART TX · DigitalBidirectional (GPIO)
RX RX (IO3)UART RX · DigitalBidirectional (GPIO)
IO21 IO21 (SDA)I²C SDA · DigitalBidirectional (GPIO)
GND_RB GNDPowerPower in
IO19 IO19 (MISO)SPI MISO · DigitalBidirectional (GPIO)
IO18 IO18 (SCK)SPI SCK · DigitalBidirectional (GPIO)
IO5 IO5PWM · Digital · Strapping controls SDIO slave timing at boot (default HIGH via internal pull-up)Bidirectional (GPIO)
IO17 IO17PWM · DigitalBidirectional (GPIO)
IO16 IO16PWM · DigitalBidirectional (GPIO)
IO4 IO4PWM · DigitalBidirectional (GPIO)
IO0 IO0Digital · Strapping must be HIGH at reset (LOW = bootloader / flashing mode)Bidirectional (GPIO)
IO2 IO2 (LED)Digital · Strapping must be LOW or floating at boot — built-in LED pulls it down via RBidirectional (GPIO)
IO15 IO15Digital · Strapping controls boot debug log on UART0 (HIGH=enabled, LOW=silent)Bidirectional (GPIO)
SD1 SD1 (IO8)DigitalBidirectional (GPIO)
SD0 SD0 (IO7)DigitalBidirectional (GPIO)
CLK CLK (IO6)DigitalBidirectional (GPIO)

Specifications

Operating voltage
3.3 V
Clock speed
240 MHz
Flash
4 MB
RAM
520 KB
GPIO pins
32
ADC
18 channels · 12-bit
PWM channels
16
Dimensions
49 × 25.4 × 13 mm

Verified from the Tinkered component library · Espressif.

Circuit requirements

  • GPIO logic is 3.3V and the pins are NOT 5V tolerant. Level-shift or divide any 5V sensor, module, or serial line before connecting it to an input, or you can damage the chip.
  • Three ways to power the board: 5V over the micro-USB port, 5V into the VIN pin (both feed the onboard 3.3V regulator), or a clean regulated 3.3V directly into the 3V3 pin (which bypasses the regulator). Do not drive VIN and USB from separate 5V supplies at the same time.
  • When powering peripherals from 3V3, respect the onboard regulator's current limit. Wi-Fi transmit bursts draw current spikes, so a brown-out under load usually means the supply cannot deliver enough current.
  • IO34, IO35, IO36 (SVP/VP), and IO39 (SVN/VN) are input-only. They cannot drive outputs and have no internal pull-up or pull-down resistors, so add external resistors if you need a defined idle level.
  • The ADC2 channels share hardware with the Wi-Fi radio and return invalid readings while Wi-Fi is active. Use ADC1 pins (IO32-IO39) for any analog read that must work with Wi-Fi on.
  • Pins IO6 through IO11 (CLK, SD0, SD1, SD2, SD3, CMD) are wired to the module's SPI flash and must be left alone, so treat only the remaining broken-out pins as usable GPIO.

Simulate the ESP32 NodeMCU-32S in your browser

The ESP32 NodeMCU-32S is fully simulated in Tinkered. Wire it into a circuit, write your firmware, and read real values back with no physical hardware. Test your logic before you touch a breadboard.

Open it in the simulator

Common ESP32 NodeMCU-32S mistakes

Wiring 5V logic straight to a GPIO

The ESP32 is a 3.3V part and its inputs are not 5V tolerant. Feeding a 5V sensor output or 5V serial line into a pin can permanently damage it. Use a level shifter or a resistor divider on any 5V signal.

Using input-only pins as outputs

IO34, IO35, IO36, and IO39 can only read signals. Calling pinMode(OUTPUT) or digitalWrite on them does nothing. Reserve them for buttons, analog sensors, or other read-only inputs and remember they need external pull resistors.

Reading ADC2 pins while Wi-Fi is running

Analog reads on ADC2-mapped pins return garbage once the Wi-Fi radio is enabled because they share the same hardware. If analogRead values go wrong the moment you connect to a network, move the sensor to an ADC1 pin such as IO32-IO35.

Loading strapping pins the wrong way at boot

IO0, IO2, IO5, IO12, and IO15 are sampled at reset to set boot mode. Pulling IO0 low forces flash mode, and pulling IO12 high can switch the flash to 1.8V and brick the board. Avoid strong external pull-ups or loads on these pins during power-up.

Trying to use the flash pins for GPIO

IO6-IO11 (labeled CLK, SD0-SD3, and CMD) connect to the onboard SPI flash. Using them for your own signals crashes the board. Stick to the other exposed pins for wiring.

ESP32 NodeMCU-32S datasheet

Official ESP32 NodeMCU-32S datasheetEspressif

Popular ESP32 NodeMCU-32S projects

Wi-Fi weather and environment station

Read a BME280 or DHT sensor over I2C and publish temperature, humidity, and pressure to a web dashboard or Home Assistant using the ESP32's built-in Wi-Fi.

MQTT IoT sensor node

Sample analog or digital sensors and push readings to an MQTT broker, using deep sleep between reports to stretch battery life for a remote node.

BLE beacon or peripheral

Use the Bluetooth Low Energy radio to advertise sensor data or expose a GATT service that a phone app can connect to, no extra radio module required.

Web-controlled relay and smart plug

Host a small web server on the board so you can toggle a relay from any browser on the network, turning lamps or appliances into a DIY smart switch.

ESP-NOW or Wi-Fi sensor mesh

Link several ESP32 boards with ESP-NOW to relay readings between rooms without a router, useful for whole-home monitoring.

Camera or streaming project bridge

Pair the board's fast dual-core processor and Wi-Fi to stream data, serve a live status page, or bridge serial devices onto the network.

Build with the ESP32 NodeMCU-32S.

Drop the ESP32 NodeMCU-32S into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.