NodeMCU-32S Development Board
Code name: NodeMCU_32S
NodeMCU-32S development board is based on esp32 microcontroller and uses xtensa architecture. This board has a maximum CPU frequency of 240 MHz and a flash size of 4MB.
About NodeMCU-32S
The NodeMCU-32S is a feature-rich development board based on the Espressif ESP32-WROOM-32 module. With integrated Wi-Fi 802.11 b/g/n and Bluetooth 4.2 (BR/EDR + BLE), itโs ready for IoT projects that demand robust wireless connectivity. ๐ก
Its breadboard-friendly form factor pairs with an on-board CP2102 USB-to-UART converter, so you can plug in, program, and prototype in secondsโno extra hardware required. ๐
For convenient development, the board comes with an EN (reset) button ๐ and a BOOT (IO0) button, making flashing firmware and entering download mode a breeze. ๐
A built-in PCB antenna delivers stable RF performance without the need for external antennas, keeping your setup compact. ๐ถ
Exposing 30+ versatile GPIOs that support ADC, DAC, PWM, IยฒC, SPI, UART, capacitive touch, and more, the NodeMCU-32S empowers you to interface with a wide range of sensors, displays, and actuators. โ๏ธ
๐ค Curious how the NodeMCU-32S stacks up against other ESP32 boards? Dive into our detailed comparison guide to choose the best fit for your next project.
Where to Buy
Prices are subject to change. We earn from qualifying purchases as an Amazon Associate.
Technical Specifications
๐ฐ๏ธ Connectivity
๐ง Microcontroller
โจ Features
- 40 digital IO pins
- 16 external interrupt pins
- 16 analog input pins
- 19 PWM pins
NodeMCU-32S Pinout
The NodeMCU-32S pinout gives you nearly every feature of the ESP32-WROOM-32 module in a breadboard-friendly format. Key power railsโVIN (5 V)
, 3V3
, and multiple GND
pinsโlet you power the board itself or feed external sensors and actuators with ease.
For serial communication the board breaks out RX0
and TX0
(UART0, connected to the on-board CP2102 for USB programming) plus an extra pair, RX2 (GPIO16)
and TX2 (GPIO17)
, for a second hardware UART. Default IยฒC lines are SDA (GPIO21)
and SCL (GPIO22)
, while the default VSPI port maps to MOSI (GPIO23)
, MISO (GPIO19)
, SCK (GPIO18)
, and CS (GPIO5)
. An alternate HSPI bus (GPIO12-15) is available when you need multiple SPI devices.
On the analog side, GPIO32 โ GPIO39
expose ADC1 channels, and several ADC2 channels appear on GPIO0
, GPIO2
, GPIO4
, GPIO12-15
, and GPIO25-27
(ADC2 is not usable while Wi-Fi is running). Two 8-bit DAC outputs live on GPIO25
and GPIO26
, perfect for audio or reference-voltage generation. Many of these pads double as capacitive-touch inputs for sleek, button-free interfaces.
Every GPIO supports PWM for LED dimming or motor control, and special-function pins such as EN (reset)
and BOOT (IO0)
make flashing easy. Take note of bootstrapping pins GPIO0
, GPIO2
, and GPIO15
; keep them in the proper state (usually pulled HIGH) during reset to ensure normal startup.
With plentiful digital I/O, rich analog capabilities, and multiple high-speed buses, the NodeMCU-32S pinout delivers the versatility needed for everything from simple sensor nodes to complex connected gadgetsโall while staying compact enough for quick prototyping.
โ Safe Pins to Use
For general GPIO usage, these are the safest and most flexible choices:
Why Are These Pins Safe?
- Not involved in bootstrapping โ No impact on device boot mode or system startup
- Not linked to flash memory or PSRAM โ Won't interfere with storage or memory access
- Not dedicated to USB or JTAG โ Free for general use without affecting debugging
- No special hardware connections โ Freely assignable without internal conflicts
โ ๏ธ Pins to Avoid or Use with Caution
Some pins are reserved for critical functions like bootstrapping, JTAG debugging, USB communication, and flash memory operations. Misusing these pins may lead to boot failures, programming issues, USB conflicts, or disruptions in flash storage.
Critical Pin Categories:
- ๐ ๏ธ Strapping Pins: Control boot behavior and flash voltage selection
- ๐ JTAG Debugging Pins: Required for low-level debugging
- ๐ USB Communication Pins: Used for USB Serial/JTAG communication
- โก Flash Memory & SPI Pins: Connected to SPI flash memory and PSRAM
- ๐ก UART Serial Communication Pins: Used for debugging and firmware uploads
PIN | Label | Reason | Function |
---|---|---|---|
IO3 | U0RXD (GPIO3) | Used for receiving data from USB-UART (programming); also pulled HIGH at boot for console communication, so using as GPIO can disrupt uploads. | ๐ USB |
IO1 | U0TXD (GPIO1) | Connected to on-board USB-UART for uploading and logs; drives serial output at boot, so using as GPIO can disrupt programming or console. | ๐ USB |
IO5 | GPIO5 | Must be HIGH during boot; if pulled LOW at reset, alters SDIO slave timing and may prevent normal boot. | ๐ ๏ธ Strapping |
IO36 | GPIO36 (SENSOR_VP) | Cannot be used as output; only suitable for input (e.g., analog read). | ๐ช Other |
IO39 | GPIO39 (SENSOR_VN) | Cannot be used as output; only suitable for input. | ๐ช Other |
NodeMCU-32S Pin Mappings
This development board provides 40 digital IO pins, out of which 16 can be used as external interrupt pins , 16 as analog input pins and 19 pins have Pulse-Width Modulation (PWM) .
Pin | Function | ESP Pin | Input/Output | Description |
---|---|---|---|---|
1 | LED_BUILTIN | GPIO2 | output | On-board user LED (active-LOW) |
2 | IO3 | GPIO3 | input | UART0 RX (USB serial) |
3 | IO1 | GPIO1 | output | UART0 TX (USB serial) |
4 | IO21 | GPIO21 | bidirectional | IยฒC SDA |
5 | IO22 | GPIO22 | bidirectional | IยฒC SCL |
6 | IO5 | GPIO5 | bidirectional | VSPI CS / SS |
7 | IO23 | GPIO23 | bidirectional | VSPI MOSI |
8 | IO19 | GPIO19 | bidirectional | VSPI MISO |
9 | IO18 | GPIO18 | bidirectional | VSPI SCK |
10 | IO36 | GPIO36 | input | ADC1 Channel 0 (SVP) |
11 | IO39 | GPIO39 | input | ADC1 Channel 3 (SVN) |
12 | IO32 | GPIO32 | input | ADC1 Channel 4 / Touch 9 |
13 | IO33 | GPIO33 | input | ADC1 Channel 5 / Touch 8 |
14 | IO25 | GPIO25 | output | DAC1 |
15 | IO26 | GPIO26 | output | DAC2 |
16 | IO27 | GPIO27 | bidirectional | ADC2 Channel 7 / Touch 7 |
17 | IO14 | GPIO14 | bidirectional | HSPI SCK / Touch 6 |
18 | IO12 | GPIO12 | bidirectional | HSPI MISO / Touch 5 |
19 | IO13 | GPIO13 | bidirectional | HSPI MOSI / Touch 4 |
20 | IO15 | GPIO15 | bidirectional | MTDO / ADC2 Channel 3 |
21 | IO4 | GPIO4 | bidirectional | Touch 0 / ADC2 Channel 0 |
22 | IO16 | GPIO16 | bidirectional | UART2 RX / CLK_OUT |
23 | IO17 | GPIO17 | bidirectional | UART2 TX |
24 | IO0 | GPIO0 | bidirectional | BOOT-strap / Touch 1 (keep HIGH at reset) |
25 | IO34 | GPIO34 | input | ADC1 Channel 6 |
26 | IO35 | GPIO35 | input | ADC1 Channel 7 |
NodeMCU-32S Pins Mapping Arduino IDE
Below you can find the NodeMCU-32S pinout. This development board provides 40 digital IO pins, out of which 16 can be used as external interrupt pins, 16 as analog input pins and 19 pins have Pulse-Width Modulation (PWM).
Pin | Analog | Touch | PWM | Other |
---|---|---|---|---|
0 | A11 | T1 | KEY_BUILTIN | |
1 | PWM | TX | ||
2 | A12 | T2 | PWM | LED_BUILTIN |
3 | PWM | RX | ||
4 | A10 | T0 | PWM | |
5 | PWM | SS | ||
12 | A15 | T5 | PWM | |
13 | A14 | T4 | PWM | |
14 | A16 | T6 | PWM | |
15 | A13 | T3 | PWM | |
18 | PWM | SCK | ||
19 | PWM | MISO | ||
21 | PWM | SDA | ||
22 | PWM | SCL | ||
23 | PWM | MOSI | ||
25 | A18 | PWM | DAC1 | |
26 | A19 | PWM | DAC2 | |
27 | A17 | T7 | PWM | |
32 | A4 | T9 | PWM | |
33 | A5 | T8 | PWM | |
34 | A6 | |||
35 | A7 | |||
36 | A0 | |||
39 | A3 |
Default Tools
Bootloader tool | esptool_py |
Uploader tool | esptool_py |
Network uploader tool | esp_ota |
Bootloader address | 0x1000 |
Flash mode | dio |
Boot mode | dio |
Maximum upload size | 1280 Kb (1310720 B) |
Maximum data size | 320 Kb (327680 B) |
The NodeMCU-32S development board by default uses esptool_py uploader tool, esp_ota network uploader tool for Over-the-air (OTA) uploads and esptool_py bootloader tool. The bootloader starts at address "0x1000". Flash mode and boot mode for NodeMCU-32S development board by default is dio and dio respectively.