Arduino Nano ESP32

Arduino's Nano-format board built on an ESP32-S3 (u-blox NORA-W106 module): dual-core 240 MHz, Wi-Fi, Bluetooth LE, native USB-C and 3.3 V pins in the classic Nano layout.

  • Chip and coresESP32-S3 in a u-blox NORA-W106-10B module: dual-core Xtensa LX7 up to 240 MHz
  • Memory512 kB SRAM, 384 kB ROM, 8 MB octal PSRAM in the module, 16 MB external flash (GD25B128EWIGR)
  • RadiosWi-Fi 4 (802.11b/g/n) 2.4 GHz and Bluetooth LE 5.0 with a built-in antenna; no Bluetooth Classic
  • I/O voltage3.3 V on every digital and analog pin; higher voltages risk damaging the board
Arduino Nano ESP32, Arduino's Nano-format board built on an ESP32-S3 (u-blox NORA-W106 module): dual-core 240 MHz, Wi-Fi, Bluetooth LE, native USB-C and 3.3 V pins in the classic Nano layout.
In short

The Arduino Nano ESP32 puts an ESP32-S3 (inside a u-blox NORA-W106-10B module) on the 18 x 45 mm Nano footprint, with two LX7 cores at up to 240 MHz, 512 kB SRAM, 8 MB PSRAM, 16 MB flash, Wi-Fi 4 and Bluetooth LE 5.0 (Arduino ABX00083 datasheet, pp. 2, 8 to 9, 12). Unlike the classic Nano its pins are 3.3 V only, it has no 5V pin (VBUS gives 5 V only on USB power), and VIN takes 6 to 21 V through an MP2322 buck converter (datasheet pp. 5, 12 to 14). Pins are numbered D0 to D13 and A0 to A7 as on any Nano, mapped to ESP32-S3 GPIOs by the Arduino core.

The Nano ESP32 is Arduino's way into the ESP32 world without leaving the Nano form factor: shields and carrier boards made for the Nano fit, and sketches keep the D2, D13 and A0 names because the Arduino ESP32 core maps them to the real GPIOs (D2 is GPIO5, D13 is GPIO48, A0 is GPIO1; Arduino Nano ESP32 cheat sheet, ESP32 Pin Map). A Tools menu option switches to raw GPIO numbers for code written for other ESP32 boards.

Inside the NORA-W106-10B module are an ESP32-S3 with two Xtensa LX7 cores at up to 240 MHz, 512 kB of SRAM, 384 kB of ROM and 8 MB of octal PSRAM, plus a built-in antenna; a separate GD25B128 chip adds 16 MB of flash (datasheet pp. 8 to 9, 12). The radio does Wi-Fi 4 (802.11b/g/n, 2.4 GHz) and Bluetooth LE 5.0, but not Bluetooth Classic.

USB-C goes straight to the ESP32-S3's native USB, so there is no USB-to-serial chip or driver to install. Power comes from USB (4.8 to 5.5 V) or the VIN pin (6 to 21 V), both stepped down to 3.3 V by an MP2322GQH buck converter (datasheet pp. 5, 12). Every I/O pin is 3.3 V: treat it like any ESP32, not like a 5 V Nano.

Arduino Nano ESP32 pinout

tinkered.ai/components/arduino-nano-esp32Arduino Nano ESP32D13GPIO48 · SPI SCK · LED_BUILTIN · PWM3.3V3.3 VB0GPIO46 · Boot strapA0GPIO1 · ADC1_CH0 · Touch · PWMA1GPIO2 · ADC1_CH1 · Touch · PWMA2GPIO3 · ADC1_CH2 · Touch · PWMA3GPIO4 · ADC1_CH3 · Touch · PWMA4GPIO11 · ADC2 · I2C SDA · PWMA5GPIO12 · ADC2 · I2C SCL · PWMA6GPIO13 · ADC2 · PWMA7GPIO14 · ADC2 · PWMVBUS5 V from USBB1GPIO0 · Boot strapGNDGNDVIN6 to 21 V inD12GPIO47 · SPI MISO · PWMD11GPIO38 · SPI MOSI · PWMD10GPIO21 · SPI SS · PWM · I2S SD in (core default)D9GPIO18 · PWM · I2S SD out (core default)D8GPIO17 · PWM · I2S FS (core default)D7GPIO10 · PWM · Touch · I2S SCK (core default)D6GPIO9 · PWM · TouchD5GPIO8 · PWM · TouchD4GPIO7 · PWM · TouchD3GPIO6 · PWM · TouchD2GPIO5 · PWM · TouchGNDGNDRSTResetRX0GPIO44 · UART RX (Serial0) · PWMTX1GPIO43 · UART TX (Serial0) · PWM
PinFunctionType
D13GPIO48, SPI SCK, LED_BUILTIN, PWM3.3 V onlybidirectional
3.3V3.3 V3.3 Vpower out
B0GPIO46, Boot strap3.3 V onlyinput
A0GPIO1, ADC1_CH0, Touch, PWM3.3 V onlybidirectional
A1GPIO2, ADC1_CH1, Touch, PWM3.3 V onlybidirectional
A2GPIO3, ADC1_CH2, Touch, PWM3.3 V onlybidirectional
A3GPIO4, ADC1_CH3, Touch, PWM3.3 V onlybidirectional
A4GPIO11, ADC2, I2C SDA, PWM3.3 V onlybidirectional
A5GPIO12, ADC2, I2C SCL, PWM3.3 V onlybidirectional
A6GPIO13, ADC2, PWM3.3 V onlybidirectional
A7GPIO14, ADC2, PWM3.3 V onlybidirectional
VBUS5 V from USB5 Vpower out
B1GPIO0, Boot strap3.3 V onlyinput
GNDGNDpassive
VIN6 to 21 V in6 to 21 Vpower in
D12GPIO47, SPI MISO, PWM3.3 V onlybidirectional
D11GPIO38, SPI MOSI, PWM3.3 V onlybidirectional
D10GPIO21, SPI SS, PWM, I2S SD in (core default)3.3 V onlybidirectional
D9GPIO18, PWM, I2S SD out (core default)3.3 V onlybidirectional
D8GPIO17, PWM, I2S FS (core default)3.3 V onlybidirectional
D7GPIO10, PWM, Touch, I2S SCK (core default)3.3 V onlybidirectional
D6GPIO9, PWM, Touch3.3 V onlybidirectional
D5GPIO8, PWM, Touch3.3 V onlybidirectional
D4GPIO7, PWM, Touch3.3 V onlybidirectional
D3GPIO6, PWM, Touch3.3 V onlybidirectional
D2GPIO5, PWM, Touch3.3 V onlybidirectional
GNDGNDpassive
RSTResetinput
RX0GPIO44, UART RX (Serial0), PWM3.3 V onlybidirectional
TX1GPIO43, UART TX (Serial0), PWM3.3 V onlybidirectional

Arduino Nano ESP32 code

Every example here compiles for its board.

No library needed
// Arduino Nano ESP32 on Arduino Nano ESP32: wiring and a free simulation at https://www.tinkered.ai/components/arduino-nano-esp32
// Arduino Nano ESP32: Wi-Fi scan, RGB LED status and an A0 reading.
// The RGB LED pins are active LOW (LOW = on). Serial is the native USB port at 115200.
#include <WiFi.h>

void rgb(bool r, bool g, bool b) {
  digitalWrite(LED_RED, r ? LOW : HIGH);
  digitalWrite(LED_GREEN, g ? LOW : HIGH);
  digitalWrite(LED_BLUE, b ? LOW : HIGH);
}

void setup() {
  Serial.begin(115200);
  unsigned long start = millis();
  while (!Serial && millis() - start < 3000) {
  }
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
  rgb(false, false, false);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  Serial.println("Nano ESP32 Wi-Fi scan");
}

void loop() {
  rgb(false, false, true);  // blue while scanning
  int n = WiFi.scanNetworks();
  if (n <= 0) {
    Serial.println("No networks found");
    rgb(true, false, false);
  } else {
    Serial.print(n);
    Serial.println(" networks found:");
    for (int i = 0; i < n; i++) {
      Serial.print("  ");
      Serial.print(WiFi.SSID(i));
      Serial.print("  ");
      Serial.print(WiFi.RSSI(i));
      Serial.print(" dBm  ");
      Serial.println(WiFi.encryptionType(i) == WIFI_AUTH_OPEN ? "open" : "secured");
    }
    rgb(false, true, false);
  }
  WiFi.scanDelete();

  // A0 is on ADC1, so it reads fine while Wi-Fi is on. Keep it between 0 and 3.3 V.
  int mv = analogReadMilliVolts(A0);
  Serial.print("A0: ");
  Serial.print(mv);
  Serial.println(" mV");
  Serial.println();
  delay(10000);
}
Compiled for arduino:esp32:nano_nora on 2026-10-30

Before you wire it

Do
  • Keep every pin at 3.3 V or below (datasheet p. 13); use a level shifter for 5 V modules that were fine on a classic Nano.
  • Feed VIN with 6 to 21 V, and the USB-C port with no more than 5 V (datasheet pp. 5, 12 to 13).
  • Take 5 V for a module from VBUS only when the board runs on USB; on VIN power VBUS stays off (datasheet p. 14).
  • Write the RGB LED pins LOW to light them: LED_RED, LED_GREEN and LED_BLUE are active low (cheat sheet, RGB).
  • Use A0 to A3 (ADC1) for analog readings in Wi-Fi sketches; A4 to A7 are on ADC2, which Wi-Fi also uses (cheat sheet, Analog).
  • Install the board package named Arduino ESP32 Boards (the Nano ESP32 entry), not only Espressif's package, to keep the D and A pin names.
Don’t
  • Never drop it into a classic Nano carrier that expects +5V and RESET on the analog side: there the Nano ESP32 has VBUS (5 V on USB power only) and B1 (GPIO0, a boot strap).
  • Never source more than 40 mA or sink more than 28 mA on one pin (datasheet p. 14).
  • Never tie B0 or B1 to anything while you run sketches: they are the ESP32-S3 boot straps and share GPIOs with the RGB LED.
  • D13 is both SPI SCK and LED_BUILTIN (GPIO48); an SPI display or SD card makes the orange LED flicker, which is normal.
  • The MP2322 buck converter is efficient across VIN (above 90 % at 4.5 V, 85 to 90 % at 12 V, under 85 % at 18 V, datasheet p. 13), so a 2S lithium pack or a 12 V adapter on VIN is fine.
  • Pins can be numbered by Arduino name (default) or by GPIO number (Tools > Pin Numbering > By GPIO number). Code copied from other ESP32 boards often assumes GPIO numbers.
  • I2S has no fixed pins, but the core's defaults are D7 (SCK), D8 (FS), D9 (SD out) and D10 (SD in).

Specifications

Chip and cores
ESP32-S3 in a u-blox NORA-W106-10B module: dual-core Xtensa LX7 up to 240 MHzArduino Nano ESP32 datasheet (ABX00083), pp. 2, 8
Memory
512 kB SRAM, 384 kB ROM, 8 MB octal PSRAM in the module, 16 MB external flash (GD25B128EWIGR)Arduino Nano ESP32 datasheet, pp. 8 to 9, 12
Radios
Wi-Fi 4 (802.11b/g/n) 2.4 GHz and Bluetooth LE 5.0 with a built-in antenna; no Bluetooth ClassicArduino Nano ESP32 datasheet, p. 8; Nano ESP32 tech specs
I/O voltage
3.3 V on every digital and analog pin; higher voltages risk damaging the boardArduino Nano ESP32 datasheet, p. 13 (Pin Voltage)
GPIO current
Up to 40 mA source and 28 mA sink per pinArduino Nano ESP32 datasheet, p. 14 (Pin Current)
Power inputs
USB-C 4.8 to 5.5 V, or VIN 6 to 21 V (7 V typical); both go through an MP2322GQH step-down converter to 3.3 V. No 5V pin: VBUS carries 5 V only when USB powers the boardArduino Nano ESP32 datasheet, pp. 5, 12 to 14
USB
USB-C to the ESP32-S3's native USB (no USB-serial bridge chip); do not feed more than 5 V into itArduino Nano ESP32 datasheet, p. 12
ADC
8 analog inputs, 12-bit by default (0 to 4095); A0 to A3 on ADC1, A4 to A7 on ADC2, which Wi-Fi also usesArduino Nano ESP32 cheat sheet, Analog
LEDs
LED_BUILTIN on D13 (GPIO48, shared with SPI SCK); an RGB LED on GPIO46 (red), GPIO0 (green) and GPIO45 (blue), active lowArduino Nano ESP32 cheat sheet, RGB; arduino-esp32 nano_nora pins_arduino.h
Board size
18 x 45 mm (Nano form factor)Arduino Nano ESP32 tech specs

From the Arduino Nano ESP32 product reference manual (ABX00083), published by Arduino (ESP32-S3 by Espressif, NORA-W106 module by u-blox).

Common mistakes

  1. Wiring 5 V parts the way you did on a classic Nano

    The classic Nano is a 5 V board; the Nano ESP32 is 3.3 V on every pin. A 5 V sensor output or an HC-SR04 echo line wired straight in can damage the ESP32-S3. Use a divider or a level shifter.

  2. Board no longer shows up after an upload

    Because USB is native, a crashing or HID sketch can take the port away. Double-tap the reset button: the green LED pulses slowly in Arduino bootloader mode and you can upload again (cheat sheet, Arduino Bootloader Mode).

  3. analogRead() on A4 to A7 returns errors with Wi-Fi on

    A4 to A7 belong to ADC2, which the Wi-Fi driver also uses, so reads can fail while Wi-Fi is active (cheat sheet, Analog). Move analog inputs to A0 to A3, and keep A4/A5 for I2C.

  4. RGB LED colours look inverted

    The LED is active low, so digitalWrite(LED_RED, HIGH) turns red off. Some boards from the first batch also swapped green and blue (cheat sheet, RGB).

Arduino Nano ESP32 questions

Is the Arduino Nano ESP32 5 V tolerant?

No. Arduino states that all digital and analog pins are 3.3 V and that higher voltages risk damaging the board (datasheet p. 13). It has no 5V pin either; VBUS gives 5 V only while USB powers the board.

Which chip is on the Nano ESP32?

An ESP32-S3 inside a u-blox NORA-W106-10B module, with two LX7 cores at up to 240 MHz, 512 kB SRAM and 8 MB PSRAM, plus a 16 MB external flash chip (datasheet pp. 8 to 9, 12).

How do I get the Nano ESP32 into bootloader mode?

Double-tap the reset button; the RGB LED pulses green in Arduino bootloader mode (cheat sheet). For the ESP32-S3's ROM downloader, used to restore Arduino's bootloader, B1 is GPIO0: held low during reset it starts ROM boot mode.

Does the Nano ESP32 need a USB driver?

No. USB-C goes straight to the ESP32-S3's native USB, so there is no CH340 or CP210x chip (datasheet p. 12). Serial in a sketch is the USB port.

Nano ESP32 or Nano R4?

The Nano ESP32 has Wi-Fi, Bluetooth LE, two 240 MHz cores and 8 MB PSRAM, but 3.3 V pins. The Nano R4 keeps 5 V I/O and the Renesas RA4M1, with no radio. Pick the ESP32 for connected projects and the R4 for 5 V shields.

Build something with the Arduino Nano ESP32

  • Arduino Cloud sensor dashboard

    Send temperature and humidity to a dashboard over Wi-Fi and show the latest values on an OLED.

    Build this
  • BLE remote for a desk lamp

    Control an LED strip's brightness from a phone over Bluetooth LE.

    Build this
For AI assistants

This page as plain Markdown, for ChatGPT, Claude or your own agent. /components/arduino-nano-esp32.md

What will you build with it?