Arduino Nano ESP32: pinout, pin numbering, power and ESPHome
The Arduino Nano ESP32 (ABX00083) is an ESP32-S3 board built on the u-blox NORA-W106 module, with 16 MB flash, 8 MB octal PSRAM and USB-C. Each pin has two numbers, the Arduino label and the ESP32-S3 GPIO, and they differ: D2 is GPIO5. In ESPHome use the board arduino_nano_esp32 with flash_size: 16MB, psram: mode: octal and GPIO numbers.
Pin map
From Arduino's cheat sheet. I2C is on A4 and A5.
| Arduino pin | GPIO | Arduino pin | GPIO |
|---|---|---|---|
| D0 | 44 | D12 | 47 |
| D1 | 43 | D13 | 48 |
| D2 | 5 | A0 | 1 |
| D3 | 6 | A1 | 2 |
| D4 | 7 | A2 | 3 |
| D5 | 8 | A3 | 4 |
| D6 | 9 | A4 (SDA) | 11 |
| D7 | 10 | A5 (SCL) | 12 |
| D8 | 17 | A6 | 13 |
| D9 | 18 | A7 | 14 |
| D10 | 21 | BOOT0 | 46 |
| D11 | 38 | BOOT1 | 0 |
Pin numbering: Arduino pins or GPIO numbers
The Arduino IDE has a setting under Tools, Pin Numbering: "By Arduino pin (default)" and "By GPIO number (legacy)". With the default, digitalWrite(2, HIGH) drives D2, which is GPIO5. Libraries that talk to the hardware directly, such as OneWire, FastLED and ESP32Servo, need "By GPIO number". If a library ignores your pin or drives the wrong one, this setting is the first thing to check.
ESPHome's board entry for the Nano ESP32 defines no D-pin names, so in YAML you always write GPIO numbers: D2 is GPIO5, A4 is GPIO11.
Power
- USB-C
- 4.8–5.5 V.
- VIN
- 6–21 V recommended in the datasheet; the cheat sheet says 5–18 V.
- 3.3 V rail
- From an MP2322GQH buck converter. Arduino does not state how much current external parts may draw from it in the documents we read.
- 5 V
- There is no 5V pin. VBUS carries 5 V only while the board runs from USB.
- Pins
- 3.3 V only. Each GPIO sources up to 40 mA and sinks up to 28 mA.
Servos and LED strips need 5 V from the supply side, not from the board; see ESP32 power over USB-C.
ESPHome config
ESPHome assumes 4 MB flash unless told otherwise, and on the ESP32-S3 the PSRAM mode has to be set. The settings below are derived from ESPHome's ESP32 and PSRAM documentation together with the board's datasheet (16 MB flash, 8 MB octal PSRAM); we validated the file with esphome config on ESPHome 2026.10.2.
esphome:
name: nano-esp32
esp32:
board: arduino_nano_esp32
flash_size: 16MB
framework:
type: esp-idf
psram:
mode: octal
logger:
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
STEP file for a case
Arduino publishes a STEP model (the zip contains NANO_ESP32.step). Model the case around it and leave the USB-C opening wide enough for the plug and a hole to reach the reset button. More in ESP32 case.
Recovery when uploads stop working
Double-press the reset button while the RGB LED flashes. A slow green pulse means the board is in bootloader mode and accepts an upload again. On some early boards green and blue are swapped, so the pulse may be blue.
Let your agent check it
check_project reads your sketch, ESPHome or PlatformIO file and flags D-numbers used where GPIO numbers are expected, plus pins that clash with the ESP32-S3's strapping or PSRAM pins. Connect the Protoship MCP server once:
claude mcp add --transport http protoship https://mcp.protoship.dev codex mcp add protoship --url https://mcp.protoship.dev
An agent without MCP calls GET https://protoship.dev/api/check?url=… with the link to your repo or config file.
Questions
Why does pin 2 not work on my Arduino Nano ESP32?
Pin numbers depend on the Pin Numbering setting. By default, 2 means D2, which is GPIO5. Libraries such as OneWire, FastLED and ESP32Servo need "By GPIO number", and ESPHome always uses GPIO numbers.
Does the Arduino Nano ESP32 have a 5V pin?
No. VBUS carries 5 V only while the board is powered over USB. Pins are 3.3 V only.
How do I put the Nano ESP32 into bootloader mode?
Double-press the reset button while the RGB LED flashes. A slow green pulse (blue on some early boards) means bootloader mode.
Which ESPHome settings does the Nano ESP32 need?
board: arduino_nano_esp32, flash_size: 16MB and psram mode: octal, with GPIO numbers for pins. Derived from ESPHome's ESP32 and PSRAM docs and the datasheet; validated with ESPHome 2026.10.2.
Finish my build Let your agent check your project
Sources
Read on 4 November 2026.