The Arduino Nano 33 BLE Rev2 is a compact 3.3 V development board built around the Nordic Semiconductor nRF52840.
It combines a 64 MHz Arm Cortex-M4F processor with a powerful Bluetooth Low Energy radio, native USB, 1 MB Flash, 256 kB RAM and a 9-axis IMU.
The board is very different from both the classic ATmega328P Nano and the Nano ESP32:
- it is a 3.3 V-only board;
- the main application MCU is the nRF52840 itself;
- Bluetooth LE runs directly on the same MCU as your sketch;
- there is no Wi-Fi radio;
- the PWM architecture is flexible rather than tied to six classic AVR pins;
- the ADC is 12 bit;
- the USB interface is native to the nRF52840;
- the current Rev2 board includes a BMI270 accelerometer/gyroscope plus BMM150 magnetometer.
Arduino now marks the original Nano 33 BLE as End of Life, so this guide focuses on the current Nano 33 BLE Rev2 while noting older-board differences where useful.
Nano 33 BLE Rev2 Specifications
| Feature | Arduino Nano 33 BLE Rev2 |
|---|---|
| Main module | u-blox NINA-B306 |
| Main MCU | Nordic nRF52840 |
| CPU | 64 MHz Arm Cortex-M4F with FPU |
| Flash | 1 MB |
| RAM | 256 kB |
| Operating logic voltage | 3.3 V |
| Bluetooth | Bluetooth 5 / BLE |
| IEEE 802.15.4 radio hardware | Yes |
| ADC | 12-bit, up to 200 ksps at chip level |
| Analog inputs | A0-A7 |
| DAC | No true voltage DAC |
| PWM hardware | 4 PWM units × 4 channels in nRF52840 silicon |
| UART | D0 TX, D1 RX |
| SPI | D10-D13 |
| I²C | A4 SDA, A5 SCL |
| USB | Native full-speed USB |
| IMU | BMI270 + BMM150, 9-axis |
| VIN | 5-21 V |
| Maximum output current per pin | 15 mA |
| Maximum input current per pin | 5 mA |
| Maximum external current total | 25 mA including GPIO/VDD external load |
Complete Nano 33 BLE Rev2 Pin Mapping
| Arduino pin | nRF52840 GPIO | Main functions |
|---|---|---|
| D0 / TX | P1.03 | UART TX, digital GPIO |
| D1 / RX | P1.10 | UART RX, digital GPIO |
| D2 | P1.11 | Digital GPIO, PWM/timer-capable |
| D3 | P1.12 | Digital GPIO, PWM/timer-capable |
| D4 | P1.15 | Digital GPIO, PWM/timer-capable |
| D5 | P1.13 | Digital GPIO, PWM/timer-capable |
| D6 | P1.14 | Digital GPIO, PWM/timer-capable |
| D7 | P0.23 | Digital GPIO, PWM/timer-capable |
| D8 | P0.21 | Digital GPIO, PWM/timer-capable |
| D9 | P0.27 | Digital GPIO, PWM/timer-capable |
| D10 | P1.02 | Digital GPIO, SPI SS, PWM/timer-capable |
| D11 | P1.01 | Digital GPIO, SPI COPI/MOSI, PWM/timer-capable |
| D12 | P1.08 | Digital GPIO, SPI CIPO/MISO, PWM/timer-capable |
| D13 | P0.13 | SPI SCK, LED_BUILTIN, digital GPIO |
| A0 / D14 | P0.04 | ADC AIN2, digital GPIO |
| A1 / D15 | P0.05 | ADC AIN3, digital GPIO |
| A2 / D16 | P0.30 | ADC AIN6, digital GPIO |
| A3 / D17 | P0.29 | ADC AIN5, digital GPIO |
| A4 / D18 | P0.31 | ADC AIN7, I²C SDA, digital GPIO |
| A5 / D19 | P0.02 | ADC AIN0, I²C SCL, digital GPIO |
| A6 / D20 | P0.28 | ADC AIN4, digital GPIO |
| A7 / D21 | P0.03 | ADC AIN1, digital GPIO |
Physical Header Layout
With the Micro-USB connector at the top, the current Rev2 board follows the Nano-family dual-row arrangement:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Left side Right side D13 / SCK D12 / CIPO 3V3 D11 / COPI AREF D10 / SS A0 D9 A1 D8 A2 D7 A3 D6 A4 / SDA D5 A5 / SCL D4 A6 D3 A7 D2 5V GND RESET RESET GND D1 / RX VIN D0 / TX |
The key point for serial wiring is:
|
1 2 3 4 5 |
D0 = TX D1 = RX |
This is different from the classic Nano convention, where D0 is RX and D1 is TX.
3.3 V Logic Only
Nano 33 BLE Rev2 uses 3.3 V GPIO.
Do not connect 5 V logic directly to:
- D0-D13;
- A0-A7;
- AREF;
- NFC-related pins;
- other nRF52840 I/O.
Use a level shifter or suitable resistor divider where required.
This is the most important electrical difference from classic Nano, Nano Every and Nano R4.
GPIO Current Limits Are Low
Arduino’s current Rev2 pinout specifies:
|
1 2 3 4 5 6 |
maximum output current per pin = 15 mA maximum input current per pin = 5 mA maximum external current total = 25 mA |
The board is designed for low-power logic and sensor interfaces.
Do not directly drive:
- relays;
- motors;
- solenoids;
- high-current LEDs;
- speakers.
Use a transistor, MOSFET or dedicated driver.
UART: D0 and D1
The default external UART is:
|
1 2 3 4 5 |
D0 = TX D1 = RX |
Use:
|
1 2 3 4 |
Serial1.begin(115200); |
for external serial hardware.
USB Serial Is Separate
The nRF52840 has native USB.
So:
|
1 2 3 4 5 6 7 8 |
Serial → USB virtual serial Serial1 → D0/D1 UART |
This means a GPS, modem or second microcontroller can remain connected to D0/D1 while the USB Serial Monitor continues to use the native USB interface.
Native USB
The nRF52840 includes a full-speed 12 Mbps USB controller.
The board routes the USB signals directly to the Micro-USB connector.
This supports:
- programming;
- serial communication;
- USB device functions available through the Arduino Mbed core;
- advanced USB HID applications.
Board Recovery
If a sketch breaks USB communication, use Arduino’s standard recovery sequence:
- power the board;
- double-tap RESET quickly;
- the bootloader enters programming mode;
- a bootloader serial port appears;
- upload a known-good sketch.
The pulsing onboard LED normally indicates bootloader mode.
SPI Pins
The default user SPI interface uses:
|
1 2 3 4 5 6 7 |
D10 = SS D11 = COPI / MOSI D12 = CIPO / MISO D13 = SCK |
Example:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <SPI.h> const int chipSelect = D10; void setup() { pinMode(chipSelect, OUTPUT); digitalWrite(chipSelect, HIGH); SPI.begin(); } |
D13 Is Also the Built-In LED
The standard user LED is connected to:
|
1 2 3 4 5 |
D13 → P0.13 |
D13 is also the default SPI clock.
The onboard LED can therefore flicker when SPI traffic is active.
I²C Pins
The normal Arduino I²C bus is:
|
1 2 3 4 5 |
A4 = SDA A5 = SCL |
mapped to:
|
1 2 3 4 5 |
A4 → P0.31 A5 → P0.02 |
Use:
|
1 2 3 4 5 6 7 8 |
#include <Wire.h> void setup() { Wire.begin(); } |
A4/A5 Are Also ADC Inputs
The two I²C pins also connect to ADC channels:
|
1 2 3 4 5 |
A4 → AIN7 A5 → AIN0 |
When they are actively used as SDA/SCL, do not expect them to behave simultaneously as independent analog inputs.
Eight Analog Inputs
The external analog header provides:
|
1 2 3 4 |
A0-A7 |
mapped as:
| Arduino pin | nRF52840 ADC channel |
|---|---|
| A0 | AIN2 |
| A1 | AIN3 |
| A2 | AIN6 |
| A3 | AIN5 |
| A4 | AIN7 |
| A5 | AIN0 |
| A6 | AIN4 |
| A7 | AIN1 |
12-Bit ADC
The nRF52840’s SAADC is a 12-bit successive-approximation converter.
At native 12-bit resolution:
|
1 2 3 4 |
0 to 4095 |
codes are available.
The current Arduino Mbed core defines:
|
1 2 3 4 |
ADC_RESOLUTION = 12 |
for Nano 33 BLE.
ADC Reference Options
The current core exposes multiple analog-reference modes:
|
1 2 3 4 5 6 7 |
AR_VDD AR_INTERNAL AR_INTERNAL1V2 AR_INTERNAL2V4 |
These map combinations of nRF52840 SAADC reference and gain settings into useful Arduino-facing modes.
This gives more flexibility than simply assuming every analog reading is referenced directly to 3.3 V.
ADC Acquisition Time
The current Arduino core also exposes acquisition-time options:
|
1 2 3 4 5 6 7 8 9 |
AT_3_US AT_5_US AT_10_US AT_15_US AT_20_US AT_40_US |
The default is 10 µs.
Longer acquisition time can help when the signal source has higher impedance because the ADC sampling network has more time to settle.
ADC Resolution Is Not Accuracy
As always:
|
1 2 3 4 5 6 |
12-bit ADC ≠ 12-bit absolute measurement accuracy |
Real performance depends on:
- reference accuracy;
- SAADC gain and offset error;
- noise;
- sensor source impedance;
- grounding;
- board power quality.
No True DAC
The nRF52840 does not include a normal voltage DAC.
Nano 33 BLE therefore has no equivalent to the A0 DAC on Nano R4 or Nano 33 IoT.
If you need a real analog voltage, use:
- external I²C/SPI DAC;
- PWM plus a low-pass filter;
- a board with a hardware DAC.
PWM Is Flexible on nRF52840
The nRF52840 has four PWM peripherals, each with four channels.
Unlike classic AVR PWM, these outputs are not permanently tied to only six GPIO positions.
The current Nano 33 BLE Rev2 pinout marks timer/PWM capability on many exposed pins, including D2-D12 and the analog-labelled pins.
This flexibility means:
- you are not restricted to classic Nano PWM positions;
- peripheral conflicts still matter;
- the number of independent hardware PWM resources is finite.
Basic PWM Example
|
1 2 3 4 5 6 7 8 9 10 |
void setup() { pinMode(D5, OUTPUT); } void loop() { analogWrite(D5, 128); } |
For advanced frequency/resolution control, the underlying Mbed/nRF PWM hardware can be accessed through lower-level APIs, but portable Arduino code should normally stay with analogWrite().
Interrupts
The nRF52840 has flexible GPIO event hardware and Arduino can attach interrupts to many exposed pins.
Example:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
volatile bool eventFlag = false; void onEvent() { eventFlag = true; } void setup() { pinMode(D3, INPUT_PULLUP); attachInterrupt( digitalPinToInterrupt(D3), onEvent, FALLING ); } void loop() { if (eventFlag) { eventFlag = false; } } |
Keep interrupt handlers short.
Bluetooth Low Energy
Bluetooth LE is the defining wireless feature of Nano 33 BLE.
The nRF52840 supports Bluetooth 5 capabilities including:
- 1 Mbps BLE;
- 2 Mbps BLE PHY;
- coded long-range PHY;
- advertising extensions;
- configurable transmit power up to +8 dBm at silicon level.
ArduinoBLE provides the high-level Arduino API.
Basic BLE Peripheral Pattern
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <ArduinoBLE.h> BLEService sensorService("180A"); void setup() { if (!BLE.begin()) { while (true) { } } BLE.setLocalName("Nano33BLE"); BLE.setAdvertisedService(sensorService); BLE.addService(sensorService); BLE.advertise(); } void loop() { BLEDevice central = BLE.central(); if (central) { while (central.connected()) { // exchange BLE data } } } |
BLE Central and Peripheral Roles
Nano 33 BLE can be used as:
- a BLE peripheral advertising sensors or controls;
- a BLE central scanning and connecting to other devices;
- a beacon;
- a phone-connected controller;
- a wearable device.
No Wi-Fi
Nano 33 BLE does not include Wi-Fi.
This is a major architectural difference from Nano ESP32 and Nano 33 IoT.
Choose Nano 33 BLE when BLE, low-power wireless and the nRF52840 ecosystem are more important than direct IP/Wi-Fi networking.
IEEE 802.15.4 Hardware
The nRF52840 radio also supports IEEE 802.15.4 at the silicon level.
This provides the hardware foundation used by technologies such as:
- Thread;
- Zigbee;
- other 802.15.4 protocols.
However, the standard Arduino Nano 33 BLE product workflow and ArduinoBLE library focus on Bluetooth LE. Do not assume a Thread or Zigbee application is available simply because the radio hardware supports 802.15.4; the software stack must support it too.
NFC Hardware
The nRF52840 includes NFC-A tag support.
Arduino’s original Nano 33 BLE pinout exposed:
|
1 2 3 4 5 |
P0.09 = NFC1 P0.10 = NFC2 |
through specific board positions/test routing.
For current Rev2 development, verify the exact schematic and library support before designing an NFC product around those lines.
9-Axis IMU on Rev2
Nano 33 BLE Rev2 includes:
|
1 2 3 4 5 6 7 8 9 |
BMI270 → 3-axis accelerometer → 3-axis gyroscope BMM150 → 3-axis magnetometer |
Together they form a 9-axis motion-sensing system.
This is useful for:
- orientation sensing;
- wearables;
- gesture recognition;
- motion logging;
- robotics;
- TinyML input data.
Original Nano 33 BLE vs Rev2 IMU
The original Nano 33 BLE used:
|
1 2 3 4 |
LSM9DS1 |
for 9-axis motion sensing.
The current Rev2 uses:
|
1 2 3 4 |
BMI270 + BMM150 |
So old IMU code written specifically for LSM9DS1 does not automatically transfer to Rev2.
This is the biggest practical software difference between the two generations.
RGB LED
The board includes an onboard RGB LED connected internally to:
|
1 2 3 4 5 6 |
LEDR → P0.24 LEDG → P0.16 LEDB → P0.06 |
Use Arduino’s symbolic LED names rather than raw GPIO numbers.
1 MB Flash and 256 kB RAM
The nRF52840 provides substantially more memory than AVR Nano boards:
| Board | Flash | RAM |
|---|---|---|
| Classic Nano | 32 kB | 2 kB |
| Nano Every | 48 kB | 6 kB |
| Nano 33 BLE Rev2 | 1 MB | 256 kB |
This makes Nano 33 BLE comfortable for:
- BLE stacks;
- sensor fusion;
- larger buffers;
- MicroPython;
- TinyML models;
- more complex embedded applications.
MicroPython
Arduino officially supports MicroPython on Nano 33 BLE Rev2.
The combination of 256 kB RAM, 1 MB Flash, BLE and an onboard IMU makes it much more suitable for Python experimentation than small AVR Nano boards.
Powering Nano 33 BLE Rev2
The board supports:
- USB power;
- VIN;
- specialised direct 3.3 V battery configurations after modifying the documented jumper.
Arduino specifies:
|
1 2 3 4 |
VIN = 5-21 V |
5 V Pin
The 5 V header position is associated with the USB VBUS power path.
On these modern Nano boards, always check the documented solder-jumper configuration before assuming the 5 V pin behaves exactly like the classic Nano’s 5 V rail.
Battery / Low-Power Modification
Arduino’s pinout documents a solder jumper that can be cut to allow low-power direct 3.3 V battery operation.
This bypasses parts of the normal power path and is intended for advanced battery-powered designs.
Only use it after understanding the board schematic and acceptable supply range.
Nano 33 BLE vs Nano 33 IoT
| Feature | Nano 33 BLE Rev2 | Nano 33 IoT |
|---|---|---|
| Main MCU | nRF52840 | SAMD21 |
| CPU | Cortex-M4F, 64 MHz | Cortex-M0+, 48 MHz |
| Flash | 1 MB | 256 kB |
| RAM | 256 kB | 32 kB |
| Logic voltage | 3.3 V | 3.3 V |
| Wi-Fi | No | Yes, NINA-W102 |
| BLE | Native nRF52840 | Via NINA-W102 |
| ADC | 12 bit | 12 bit |
| True DAC | No | 10-bit A0 DAC |
| IMU | BMI270 + BMM150 | LSM6DS3 |
See our Arduino Nano 33 IoT pinout guide for the Wi-Fi-capable SAMD21 alternative.
Nano 33 BLE vs Nano ESP32
Nano ESP32 is much faster and has vastly more memory, but Nano 33 BLE has several advantages for specialised projects:
- nRF52840 low-power ecosystem;
- very mature BLE focus;
- integrated 9-axis IMU;
- IEEE 802.15.4-capable radio hardware;
- good fit for wearables and battery BLE devices.
Nano ESP32 provides:
- Wi-Fi;
- BLE;
- 240 MHz dual-core ESP32-S3;
- 8 MB PSRAM;
- 16 MB Flash;
- ESP-NOW;
- ESP-IDF ecosystem.
See our Arduino Nano ESP32 pinout guide for the ESP32-S3 architecture.
Quick Pin Reference
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
UART D0 = TX = P1.03 D1 = RX = P1.10 SPI D10 = SS D11 = COPI / MOSI D12 = CIPO / MISO D13 = SCK / LED_BUILTIN I2C A4 = SDA = P0.31 A5 = SCL = P0.02 ADC A0 = AIN2 A1 = AIN3 A2 = AIN6 A3 = AIN5 A4 = AIN7 A5 = AIN0 A6 = AIN4 A7 = AIN1 ADC resolution 12 bit DAC none PWM flexible nRF52840 PWM many exposed pins timer/PWM capable Wireless Bluetooth 5 / BLE IEEE 802.15.4 radio hardware no Wi-Fi USB native nRF52840 USB IMU BMI270 + BMM150 Logic voltage 3.3 V only VIN 5-21 V |
Best Practices
- Never apply 5 V logic directly to Nano 33 BLE GPIO.
- Remember D0 is TX and D1 is RX on the current Rev2 pinout.
- Use
Serialfor USB andSerial1for the external UART. - Use D10-D13 for default SPI and A4/A5 for default I²C.
- Do not expect a true analog DAC.
- Take advantage of the nRF52840’s flexible PWM rather than assuming classic Nano PWM limitations.
- Keep total external GPIO/VDD load within Arduino’s documented current limits.
- Use ArduinoBLE for normal BLE applications.
- Remember that 802.15.4 hardware capability does not automatically mean Thread/Zigbee is enabled by your selected Arduino software stack.
- Use the Rev2 IMU libraries; old LSM9DS1-specific code targets the original board.
Final Thoughts
The Nano 33 BLE Rev2 is best understood as a compact nRF52840 development board with Arduino Nano headers and a built-in 9-axis IMU.
The key pin mappings are:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
D0 / D1 → TX / RX D10-D13 → SPI A4 / A5 → I2C A0-A7 → 12-bit ADC inputs D2-D12 and multiple analog pins → flexible PWM/timer capability USB → native nRF52840 USB |
Its main strengths are BLE, low-power operation, generous memory and motion sensing rather than Wi-Fi or high-bandwidth networking.
The most important electrical rule is simple:
|
1 2 3 4 5 |
3.3 V GPIO not 5 V tolerant |
For BLE wearables, motion sensors, wireless controllers and battery-powered embedded projects, the nRF52840 remains a strong platform even as newer Nano boards offer faster CPUs or Wi-Fi.