Arduino Nano 33 IoT Pinout: SAMD21, Wi-Fi, BLE, ADC and I2C

Arduino Nano 33 IoT pinout guide: SAMD21 GPIO, 12-bit ADC, 10-bit DAC, PWM, SPI, I2C, UART, native USB, NINA-W102 Wi-Fi/BLE, IMU, crypto chip and 3.3 V power limits explained.

The Arduino Nano 33 IoT combines a 48 MHz SAMD21 microcontroller with a separate u-blox NINA-W102 wireless module, an onboard crypto chip and a 6-axis IMU in the compact Nano form factor.

It is a very different board from both the classic ATmega328P Nano and the newer Nano ESP32.

The main application processor is the ATSAMD21G18A, an Arm Cortex-M0+ MCU with:

  • 256 kB Flash;
  • 32 kB SRAM;
  • native USB;
  • a 12-bit ADC;
  • a 10-bit DAC on A0;
  • multiple SERCOM peripherals that can operate as UART, SPI or I²C;
  • I²S;
  • DMA;
  • an event system.

Wireless networking is handled by the separate NINA-W102 module, which is based on an ESP32 and provides 2.4 GHz Wi-Fi and Bluetooth connectivity.

The board is strictly a 3.3 V logic platform. Its GPIO is not 5 V tolerant.

This guide maps every external Nano 33 IoT pin, explains ADC, DAC, UART, SPI, I²C and PWM behaviour, and shows how the SAMD21, NINA module, USB and onboard sensors fit together.

Arduino Nano 33 IoT Specifications

Feature Arduino Nano 33 IoT
Main MCU ATSAMD21G18A
CPU 32-bit Arm Cortex-M0+
Clock speed 48 MHz
Flash 256 kB
SRAM 32 kB
Operating logic voltage 3.3 V
Analog inputs A0-A7
ADC 12-bit hardware, higher-resolution result possible with oversampling
DAC 10-bit DAC on A0
UART Serial1 on D0/D1
SPI D10-D13
I²C A4 SDA, A5 SCL
USB Native SAMD21 USB through Micro-B connector
Wi-Fi NINA-W102, 2.4 GHz 802.11 b/g/n
Bluetooth NINA-W102 Bluetooth/BLE
Crypto ATECC608A secure element
IMU Onboard LSM6DS3 6-axis accelerometer/gyroscope
VIN 5-21 V
Maximum current per GPIO 7 mA

Complete Nano 33 IoT Pin Mapping

Arduino pin SAMD21 pin Main functions
D0 / RX PB23 Serial1 RX, digital GPIO
D1 / TX PB22 Serial1 TX, digital GPIO
D2 PB10 Digital GPIO, timer/PWM-capable in current core
D3 PB11 Digital GPIO, timer/PWM
D4 PA07 Digital GPIO, ADC-capable internally, timer function
D5 PA05 Digital GPIO, timer/PWM
D6 PA04 Digital GPIO, timer/PWM
D7 PA06 Digital GPIO
D8 PA18 Digital GPIO
D9 PA20 Digital GPIO, timer/PWM
D10 PA21 Digital GPIO, timer/PWM, SPI SS alias
D11 PA16 SPI MOSI/COPI, timer/PWM-capable
D12 PA19 SPI MISO/CIPO, timer/PWM-capable
D13 PA17 SPI SCK, LED_BUILTIN
A0 / D14 PA02 ADC0, 10-bit DAC output, digital GPIO
A1 / D15 PB02 ADC10, digital GPIO
A2 / D16 PA11 ADC19, digital GPIO, timer/PWM-capable
A3 / D17 PA10 ADC18, digital GPIO, timer/PWM-capable
A4 / D18 PB08 ADC2, I²C SDA, digital GPIO
A5 / D19 PB09 ADC3, I²C SCL, timer/PWM-capable
A6 / D20 PA09 ADC17, digital GPIO
A7 / D21 PB03 ADC11, digital GPIO

Physical Header Layout

With the Micro-B USB connector at the top, Nano 33 IoT follows the familiar two-row Nano footprint:

The physical form is familiar, but the electrical behaviour is not the same as a 5 V classic Nano.

3.3 V Logic Only

Arduino explicitly warns that Nano 33 IoT GPIO is not 5 V tolerant.

Do not connect a 5 V output directly to:

  • D0-D13;
  • A0-A7;
  • AREF;
  • other exposed SAMD21 signals.

Use a level shifter, resistor divider where appropriate, or a 3.3 V-compatible peripheral.

This is one of the biggest migration traps for users coming from classic Nano or Nano Every.

GPIO Current Limit

Arduino’s current pinout specifies a maximum current of:

with additional aggregate source/sink limits for pin groups.

The SAMD21 pins are intended for logic signalling, not powering loads.

Use a driver transistor or MOSFET for:

  • relays;
  • motors;
  • solenoids;
  • high-current LEDs.

UART: D0 and D1

The external hardware UART is:

and is accessed through:

Example:

Serial and Serial1 Are Separate

The SAMD21 has native USB.

So:

This is a major improvement over classic Nano-style USB-to-UART arrangements because using Serial Monitor does not consume the external D0/D1 UART.

Native USB

The SAMD21 contains a native full-speed USB controller.

The board routes:

to the Micro-B connector.

Native USB enables applications such as:

  • USB serial;
  • keyboard;
  • mouse;
  • MIDI;
  • custom USB device classes using suitable libraries.

USB Host Capability

The SAMD21 USB peripheral can operate in host/device modes, but the board power arrangement matters.

Arduino’s current datasheet notes that USB host operation requires the relevant VUSB path/jumper configuration and correct external power.

Do not assume the board can source USB host power in the same way as a dedicated USB host board without checking the power configuration.

Board Recovery

If a sketch locks the SAMD21 badly enough that normal USB upload stops working, Arduino’s standard SAMD recovery method is useful:

  1. power the board;
  2. double-tap RESET quickly;
  3. the bootloader enters programming mode;
  4. select the temporary bootloader port;
  5. upload a known-good sketch.

SPI Pins

The default user SPI bus is:

The current SAMD core confirms:

Basic SPI Example

D13 Is Also the Built-In LED

D13 is shared with:

and the SPI clock.

The onboard LED may therefore flicker during SPI traffic.

I²C Pins

The default user I²C bus is:

and uses:

Example:

A4 and A5 Have Pull-Ups and Are Primarily I²C Pins

Arduino specifically notes that A4 and A5 have pull-ups associated with the I²C bus and recommends using them primarily as I²C pins.

Although the SAMD21 hardware maps ADC channels to them, using A4/A5 as precision analog inputs is not recommended in the current Nano 33 IoT documentation.

Onboard IMU and Crypto Chip

Nano 33 IoT contains:

  • an LSM6DS3 6-axis IMU;
  • an ATECC608A secure element.

The SAMD21 has multiple SERCOM blocks, allowing Arduino’s board design to keep internal peripheral communication separate from the normal external A4/A5 I²C interface.

Eight Analog Inputs

The familiar analog header pins are:

All eight map to SAMD21 ADC channels.

Arduino pin SAMD21 ADC channel
A0 AIN0
A1 AIN10
A2 AIN19
A3 AIN18
A4 AIN2
A5 AIN3
A6 AIN17
A7 AIN11

12-Bit ADC

The SAMD21 has a 12-bit ADC.

A native 12-bit conversion provides:

possible output codes.

For compatibility, Arduino code may use a lower default resolution unless changed explicitly.

To request 12-bit reads:

Higher-Resolution Results Through Oversampling

The SAMD21 ADC supports averaging/oversampling modes that can produce higher-resolution numerical results, including up to 16-bit output representation under suitable conditions.

This does not make it a precision 16-bit ADC.

Oversampling can improve effective resolution when the input noise and sampling conditions are appropriate, but absolute accuracy remains limited by:

  • reference error;
  • ADC linearity;
  • noise;
  • source impedance;
  • board layout;
  • sensor accuracy.

True DAC on A0

A0 is special because the SAMD21 exposes its hardware DAC output there.

The DAC is 10 bit.

So the full hardware output code range is:

DAC Example

This produces a true analog voltage level rather than PWM.

A0 cannot simultaneously act as an independent external analog input and DAC output.

PWM Pins

The official pinout and current SAMD variant show timer/PWM capability on more pins than a classic AVR Nano.

Clearly marked common PWM positions include:

Because SAMD21 peripheral multiplexing is flexible, some timer functionality depends on the selected peripheral mode and core implementation.

For portable sketches, use the standard Arduino API rather than configuring TCC/TC registers directly unless you deliberately need low-level timing control.

SAMD21 Timers Are Different from AVR Timers

The SAMD21 uses TCC and TC timer/counter peripherals rather than the ATmega328P Timer0/Timer1/Timer2 architecture.

This provides:

  • flexible waveform routing;
  • advanced PWM;
  • event-system integration;
  • multiple capture/compare functions.

It also means direct-register AVR code will not port.

Interrupts

The SAMD21 has an External Interrupt Controller with multiple EIC channels.

Many Nano 33 IoT pins map to external interrupt lines.

For normal Arduino code use:

Keep the ISR short and handle longer work from the main loop.

NINA-W102 Wireless Module

Wireless networking is not performed by the SAMD21 itself.

The onboard NINA-W102 is an ESP32-based module with:

  • 2.4 GHz 802.11 b/g/n Wi-Fi;
  • Bluetooth/BLE;
  • its own CPU, RAM and Flash;
  • Arduino’s pre-certified connectivity firmware.

Main Sketch Runs on SAMD21, Not the ESP32

The normal architecture is:

This is fundamentally different from Nano ESP32, where the ESP32-S3 itself is the main application processor.

WiFiNINA Library

The normal Wi-Fi API is provided by:

Example:

Bluetooth Low Energy

The same NINA-W102 radio also supports Bluetooth Low Energy.

ArduinoBLE allows the board to act as:

  • BLE peripheral;
  • BLE central;
  • sensor beacon;
  • phone-connected controller.

Because the wireless module is separate from the SAMD21, your application continues to run on the Cortex-M0+ while NINA handles radio activity.

Communication with NINA-W102

The SAMD21 communicates with NINA using internal SPI, serial/control and handshake signals.

The current Arduino core reserves internal pins for:

  • NINA SPI MOSI;
  • NINA SPI MISO;
  • NINA SPI clock;
  • NINA chip select;
  • NINA reset;
  • attention/acknowledge signalling;
  • internal serial communication.

These are not normal user-header SPI pins.

Some NINA GPIOs Reach the External Header

Arduino documents several external Nano pins that are electrically shared with NINA ESP32 GPIOs:

Header pin SAMD21 pin NINA ESP32 GPIO
A4 PB08 GPIO13
A5 PB09 GPIO14
A6 PA09 GPIO32
A7 PB03 GPIO21

Arduino notes that those lines can theoretically be driven from the ESP32 side if the corresponding SAMD21 pins are correctly tri-stated.

This is an advanced architecture feature rather than a normal Arduino programming model.

Do Not Reflash NINA Casually

The NINA-W102 normally runs Arduino’s certified connectivity firmware.

Arduino explicitly warns that replacing the radio firmware with custom firmware can invalidate the compliance assumptions under which the module/board is certified.

For normal projects, leave the official NINA firmware installed and use WiFiNINA/ArduinoBLE.

ATECC608A Secure Element

The onboard ATECC608A stores cryptographic secrets in protected hardware.

It can be used for:

  • private-key storage;
  • certificates;
  • authentication;
  • secure IoT identity;
  • accelerated cryptographic operations.

This was an important part of the Nano 33 IoT’s original design for connected-device security.

Onboard LSM6DS3 IMU

The board includes an LSM6DS3 6-axis IMU containing:

  • 3-axis accelerometer;
  • 3-axis gyroscope.

This enables:

  • motion sensing;
  • orientation estimation;
  • gesture detection;
  • activity logging;
  • IoT movement alarms.

No external IMU module is required for basic motion projects.

Powering Nano 33 IoT

The board can be powered from:

  • USB;
  • VIN;
  • the regulated 3.3 V rail in specialised designs.

Arduino’s pinout specifies:

using the onboard MPM3610 regulator.

5 V / VUSB Header Position

The Nano 33 IoT power arrangement is different from classic Nano.

The board includes a 5 V/VUSB header position and solder jumper configuration.

Arduino documents that:

  • the 5 V USB rail can be made available through the header when configured appropriately;
  • USB host operation requires the VUSB power path to be configured correctly.

Do not assume the 5 V header behaves identically to the classic Nano’s regulated 5 V rail in every configuration.

3.3 V Pin

The main MCU and GPIO operate from 3.3 V.

The 3.3 V pin can power compatible external peripherals, but total regulator and board-current limits still apply.

AREF

The AREF pin is available for analog-reference configuration.

External reference voltage must stay within SAMD21 electrical limits and the Arduino core must be configured accordingly.

Nano 33 IoT vs Classic Nano

Feature Classic Nano Nano 33 IoT
Main MCU ATmega328P SAMD21G18A
CPU 8-bit AVR, 16 MHz 32-bit Cortex-M0+, 48 MHz
Flash 32 kB 256 kB
SRAM 2 kB 32 kB
Logic 5 V 3.3 V
ADC 10 bit 12 bit
True DAC No 10-bit on A0
Native USB No Yes
Wi-Fi/BLE No Yes, via NINA-W102
IMU No Yes

For the original board’s mapping, see our classic Arduino Nano pinout guide.

Nano 33 IoT vs Nano ESP32

These two boards may look similar but use completely different system architectures.

Nano 33 IoT:

Nano ESP32:

Nano ESP32 is dramatically faster and has much more memory, while Nano 33 IoT remains interesting for SAMD21 projects, native USB, low-power embedded work and existing SAMD software.

See our Nano ESP32 pinout guide for the newer ESP32-S3 architecture.

Quick Pin Reference

Best Practices

  1. Never connect 5 V logic directly to Nano 33 IoT GPIO.
  2. Use Serial for USB and Serial1 for D0/D1.
  3. Remember A0 is the true DAC output.
  4. Treat A4/A5 primarily as I²C because of their pull-ups and board design.
  5. Use the standard D10-D13 SPI mapping for portable code.
  6. Keep GPIO current below Arduino’s 7 mA-per-pin limit.
  7. Leave official NINA firmware installed unless you specifically need advanced radio development.
  8. Use the ATECC608A when protected credentials matter.
  9. Remember Wi-Fi/BLE runs on NINA, not directly on the SAMD21.
  10. Use double-reset bootloader recovery if a sketch makes the native USB port disappear.

Final Thoughts

The Arduino Nano 33 IoT is best understood as a SAMD21 application board with a separate ESP32-based wireless coprocessor.

The main pin mappings are:

The most important electrical warning is equally simple:

Compared with the classic Nano, the board provides much more memory, native USB, better analog hardware, an IMU and wireless connectivity. Compared with Nano ESP32, it is slower and far more memory-constrained, but it remains a clean SAMD21 platform with a mature Arduino software ecosystem and a useful separation between the application MCU and wireless module.

Share your love