# Arduino Nano ESP32 pinout, power and ESPHome

> Arduino Nano ESP32 (ABX00083): D-pin to GPIO map, pin numbering setting, power, ESPHome config with 16MB flash and octal PSRAM, STEP file, recovery.

Source: https://protoship.dev/boards/arduino-nano-esp32

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](https://protoship.dev/guides/esp32-usb-c-power).

## 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](https://docs.arduino.cc/resources/models/ABX00083-step.zip) (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](https://protoship.dev/guides/esp32-enclosure).

## 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](https://protoship.dev/finish#request) [Let your agent check your project](https://protoship.dev/guides/esp32-device-built-by-ai-agent#connect)

## Sources

Read on 4 November 2026.

- [Arduino Nano ESP32 datasheet (ABX00083)](https://docs.arduino.cc/resources/datasheets/ABX00083-datasheet.pdf)
- [Arduino: Nano ESP32 pin setup (pin numbering)](https://docs.arduino.cc/tutorials/nano-esp32/pin-setup)
- [Arduino: Nano ESP32 cheat sheet](https://docs.arduino.cc/tutorials/nano-esp32/cheat-sheet/)
- [Arduino: Nano ESP32 STEP model (ABX00083-step.zip)](https://docs.arduino.cc/resources/models/ABX00083-step.zip)
- [ESPHome source: esp32/boards.py](https://github.com/esphome/esphome/blob/dev/esphome/components/esp32/boards.py)
- [ESPHome: ESP32 platform (board, flash_size)](https://esphome.io/components/esp32/)
- [ESPHome: PSRAM component](https://esphome.io/components/psram/)
