The Arduino Nano 33 BLE packs a Nordic nRF52840 ARM Cortex-M4 processor and a u-blox NINA-B306 Bluetooth module into the classic 30-pin Nano footprint. The direct answer for bench setup: this board operates strictly at 3.3V logic. Unlike the classic 5V Nano, feeding 5V into any digital I/O pin will permanently destroy the nRF52840 silicon. Furthermore, the physical pin labels (D0-D13, A0-A7) map to specific Nordic port pins (P0.xx/P1.xx), and the board routes its internal IMU/environmental sensors on a completely separate I2C bus from the external header pins.

Complete Arduino Nano 33 BLE Pinout Reference Table

The table below maps the physical silkscreen labels to the underlying nRF52840 microcontroller ports. Use this as your primary bench reference when writing bare-metal mbed OS code or debugging signal routing.

Physical PinArduino API NamenRF52840 PortPrimary FunctionAlternate / Special Functions
D0RX / D0P1.03UART RXGPIO, PWM
D1TX / D1P1.10UART TXGPIO, PWM
D2D2P1.11GPIOPWM, I2S
D3D3P1.12GPIOPWM
D4D4P1.15GPIOPWM
D5D5P1.13GPIOPWM
D6D6P1.14GPIOPWM
D7D7P0.23GPIOPWM
D8D8P0.21GPIOPWM
D9D9P0.27GPIOPWM
D10D10 / CSP1.02SPI Chip SelectGPIO, PWM
D11D11 / MOSIP1.01SPI MOSIGPIO, PWM
D12D12 / MISOP1.08SPI MISOGPIO
D13D13 / SCKP0.13SPI Clock / LEDGPIO
A0A0P0.04ADC InputGPIO, UART RTS
A1A1P0.05ADC InputGPIO, UART CTS
A2A2P0.30ADC InputGPIO
A3A3P0.29ADC InputGPIO
A4A4 / SDAP0.31External I2C SDAADC Input, GPIO
A5A5 / SCLP0.02External I2C SCLGPIO
A6A6P0.28ADC Input (Only)Not usable as digital GPIO
A7A7P0.03ADC Input (Only)Not usable as digital GPIO
VINVINN/AUnregulated InputAccepts 7V-21V DC
5V5V / VUSBN/AUSB Power RailOutputs ~4.6V when on USB
3V33.3VN/ARegulated OutputMax ~150mA external draw
GNDGNDN/ACommon GroundTied to USB shield
Critical 3.3V Warning: The nRF52840 absolute maximum rating for I/O pins is 3.6V. Connecting a standard 5V Arduino sensor (like an HC-SR04 ultrasonic or a 5V I2C display) directly to D0-D13 or A0-A5 will fry the MCU. Always use a bidirectional logic level shifter (e.g., TXS0108E) or a dedicated 3.3V sensor variant.

The Rows People Get Wrong (And How to Fix Them)

When builders transition from a classic 5V Nano to the Nano 33 BLE, three specific pinout assumptions routinely cause hardware failures or silent communication bugs.

1. The Dual I2C Bus Trap (A4/A5 vs. Internal Sensors)

On a classic Nano, A4 and A5 are the only I2C pins, and they share the bus with everything. On the Nano 33 BLE, the onboard sensors (LSM9DS1 IMU, APDS9960, LPS22HB) are wired to a dedicated internal I2C bus (nRF52840 pins P0.14 and P0.15). The external header pins A4 (SDA) and A5 (SCL) map to P0.31 and P0.02. If you try to read an external sensor using the internal Wire1 object, or sniff the internal IMU on A4/A5, your code will hang or return NaN. Use the standard Wire library for A4/A5 external peripherals.

2. The "5V" Pin is Actually VUSB

The pin silkscreened as "5V" is not a regulated 5V output from the onboard buck converter. It is tied directly to the USB VBUS line through a protection MOSFET. If you power the board via the USB-C port, this pin outputs roughly 4.6V (accounting for the MOSFET voltage drop and USB cable sag). If you power the board via the VIN pin, the "5V" pin will output 0V. Do not use this pin to power external 5V logic unless the board is actively plugged into a high-quality USB hub.

3. A6 and A7 are Analog-Only

Unlike D0-D13, the A6 and A7 pins on the Nano 33 BLE lack digital input/output buffers on the nRF52840 silicon. They are hardwired to the ADC. Calling digitalWrite(A6, HIGH) or pinMode(A7, INPUT_PULLUP) will silently fail. Use A0-A5 if you need pins that can toggle between analog reads and digital I/O.

Arduino API vs. nRF52840 Datasheet Naming Standards

Which standard applies to your code depends on your software stack. The Arduino ecosystem uses the Wiring API abstraction, while advanced power-optimization or RTOS tasks require Nordic's bare-metal register names.

  • Arduino Core (Wiring API): Uses D0-D13 and A0-A7. This is the standard for 95% of makers. The underlying mbed OS core translates these integers to Nordic port registers at compile time. Use this when writing standard sensor loops or BLE advertising sketches.
  • nRF52840 Product Specification (Nordic Semi): Uses P0.xx and P1.xx notation. You will see this in the Nordic nRF52840 Datasheet. You must use this naming convention if you are writing custom mbed OS interrupt handlers, configuring the GPIOTE (GPIO Tasks and Events) peripheral for ultra-low-power wakeups, or debugging with a Segger J-Link SWD probe.
Bench Tip: If you need to map an Arduino pin to its Nordic port in your code for a custom mbed function, use the digitalPinToPinName(pin) macro provided by the Arduino mbed core. It returns the exact PinName enum required by the underlying OS.

Faded Silkscreen and Clone Board Interpretation

If you are working with a heavily used board where the silkscreen has worn off, or a third-party clone with non-standard labeling, you can safely identify the critical pins using a multimeter in continuity mode. Never guess pinouts on a 3.3V board; a single VCC-to-GND short will destroy the MPM3630 power module.

  1. Identify GND: Place your black probe on the metal USB-C connector shell. Probe the header pins with the red probe. The GND pins will read < 1 ohm. There are typically two GND pins on the bottom right of the standard orientation.
  2. Identify 3.3V: Locate the large inductor and the MPM3630 power module near the USB port. The output capacitor directly adjacent to the inductor is tied to the 3.3V rail. Trace continuity from that capacitor pad to the header pins to confirm the 3V3 pin.
  3. Identify External I2C (A4/A5): Look for the two 4.7kΩ pull-up resistors near the NINA-B306 BLE module. One side of these resistors is tied to 3.3V; the other side connects directly to the external SDA and SCL header pins.

Decision Path: Choosing the Right Pins for Your Peripherals

Use this decision matrix to terminate your design choices. Do not route high-speed or noise-sensitive signals to arbitrary GPIOs; use the hardware-optimized paths.

Peripheral TypeCondition / ConstraintConcrete Pin PickRequired Hardware / Code Action
I2C Sensor (3.3V) Sensor operates natively at 3.3V (e.g., BME280) A4 (SDA) & A5 (SCL) Use Wire library. No external pull-ups needed (board has 4.7k internal).
I2C Sensor (5V) Legacy 5V module (e.g., standard 1602 LCD with I2C backpack) A4 & A5 via Level Shifter Route A4/A5 through a TXS0108E or BSS138 bidirectional shifter. Power shifter VCCA from 3V3, VCCB from 5V.
SPI Display / SD Card High-speed data transfer required D11 (MOSI), D12 (MISO), D13 (SCK), D10 (CS) Use SPI library. Keep traces under 5cm. Add a 100nF decoupling cap at the SD card VCC pin.
Hardware UART Connecting to GPS module or secondary MCU D0 (RX) & D1 (TX) Use Serial1 object (not Serial, which is USB CDC). Remember nRF TX (D1) goes to peripheral RX.
Analog Audio / Mic Reading an electret mic or analog envelope detector A0 to A5 Use analogRead(). Avoid A6/A7 if you need to toggle a digital bias pin on the same channel.
High-Current Load Driving a relay, motor, or high-power LED (>10mA) Any Digital Pin + MOSFET Do NOT drive directly. Use pin to gate a logic-level N-channel MOSFET (e.g., IRLZ44N) with a 10kΩ gate pulldown.

By strictly adhering to the 3.3V logic boundaries and respecting the split I2C bus architecture, the Nano 33 BLE provides a highly capable, low-power foundation for embedded BLE sensor nodes. Always verify your peripheral voltage tolerances against the official Arduino Nano 33 BLE documentation before applying power to your breadboard.