Overview

The Arduino Nano RP2040 Connect, released in 2021, is a uniquely positioned board that brings the Raspberry Pi RP2040 microcontroller — best known from the Raspberry Pi Pico — into the Arduino ecosystem, complete with the Nano form factor, wireless connectivity, onboard sensors, and official support for MicroPython and CircuitPython alongside the Arduino IDE.

The RP2040 is a dual-core ARM Cortex-M0+ running at up to 133 MHz with 264 KB of SRAM and access to 16 MB of external QSPI Flash on this board. Its standout feature is the Programmable I/O (PIO) subsystem: eight independent state machines that can implement custom high-speed digital protocols (SPI, I2S, WS2812, etc.) in hardware without using the CPU.

Wireless connectivity comes from the same u-blox NINA-W102 module found on the Nano 33 IoT, providing Wi-Fi 802.11 b/g/n and Bluetooth 4.2 LE. The ATECC608A hardware crypto chip enables secure Arduino IoT Cloud provisioning. Onboard sensors include the LSM6DSOX 6-axis IMU and an MP34DT05 PDM MEMS digital microphone, making the board suitable for TinyML audio and motion applications.

The Nano RP2040 Connect is particularly approachable for Python developers: it can be programmed using MicroPython or CircuitPython by simply copying a .py file to the board over USB, with no IDE setup required.

IMPORTANT: The Nano RP2040 Connect operates at 3.3V logic. I/O pins are NOT 5V tolerant.

Quick Overview

Feature Detail
Microcontroller RP2040 (dual-core ARM Cortex-M0+)
Clock Speed Up to 133 MHz
Operating/Logic Voltage 3.3V (NOT 5V tolerant)
Flash Memory 16 MB (QSPI external)
SRAM 264 KB (on-chip)
Wireless Module u-blox NINA-W102 (ESP32-based)
Wi-Fi 802.11 b/g/n (2.4 GHz)
Bluetooth BLE 4.2
IMU LSM6DSOX (6-axis accelerometer + gyroscope)
Microphone MP34DT05 (PDM MEMS digital)
Crypto ATECC608A
PIO State Machines 8 (2 PIO blocks × 4 state machines)
Digital I/O Pins 22
Analog Input Pins 8
USB Interface micro-USB
IoT Cloud Yes (officially supported)
Languages C/C++ (Arduino IDE), MicroPython, CircuitPython
Dimensions 18 × 45 mm

Key Features

  • RP2040 dual-core Cortex-M0+ at 133 MHz — the same chip as the Raspberry Pi Pico
  • 16 MB QSPI Flash and 264 KB SRAM
  • 8 Programmable I/O (PIO) state machines for custom hardware-level protocols
  • Wi-Fi 802.11 b/g/n and Bluetooth 4.2 LE via u-blox NINA-W102
  • LSM6DSOX 6-axis IMU (accelerometer + gyroscope) onboard
  • MP34DT05 PDM MEMS digital microphone for audio capture and TinyML
  • ATECC608A hardware crypto for secure IoT Cloud pairing
  • Supports Arduino IDE (C/C++), MicroPython, and CircuitPython
  • Officially supported on Arduino IoT Cloud
  • WiFiNINA library for Wi-Fi from C/C++ sketches
  • Pin-compatible with classic Arduino Nano (18 × 45 mm, 0.1" pitch)
  • 3.3V logic — compatible with modern low-voltage peripherals

Technical Specifications

Parameter Value
Microcontroller RP2040
CPU Cores 2× ARM Cortex-M0+
Clock Speed Up to 133 MHz
Operating/Logic Voltage 3.3V
Input Voltage (USB) 5V via micro-USB
Input Voltage (VIN) 4.5–21V
USB Connector micro-USB
Flash Memory 16 MB (QSPI, external)
SRAM 264 KB (on-chip)
PIO State Machines 8 (2 × PIO blocks)
Wireless Module u-blox NINA-W102 (ESP32-based)
Wi-Fi 802.11 b/g/n, 2.4 GHz
Bluetooth BLE 4.2
IMU LSM6DSOX (3-axis accelerometer, 3-axis gyroscope)
Microphone MP34DT05 (PDM digital MEMS)
Crypto Chip ATECC608A
Digital I/O Pins 22
Analog Input Pins 8 (A0–A7)
ADC Resolution 12-bit (3 ADC channels on RP2040)
UART 2
I2C 2
SPI 2
IoT Cloud Yes
Board Dimensions 18 × 45 mm

Pinout

Arduino Nano RP2040 Connect pinout diagram

Digital Pins

22 digital I/O pins are available in the standard Nano layout. D0 (RX) and D1 (TX) are shared with hardware UART0. D13 is LED_BUILTIN.

Analog Pins

A0–A7 map to analog-capable pins. Note: the RP2040 has only 3 dedicated ADC channels (GPIO26–28). The remaining analog pin mappings may be multiplexed or handled via the Arduino core's pin mapping — refer to the official pinout for accurate ADC assignments.

Communication Pins

Interface Pins
UART0 D0 (RX), D1 (TX)
I2C0 A4 (SDA), A5 (SCL)
SPI0 D10 (SS), D11 (MOSI), D12 (MISO), D13 (SCK)

Power Pins

Pin Function
VIN External supply input (4.5–21V)
5V 5V output from regulator
3.3V 3.3V regulated output
GND Ground
RESET Resets the microcontroller

Power

The Nano RP2040 Connect is powered via micro-USB (5V) or the VIN pin (4.5–21V). All logic operates at 3.3V. The NINA-W102 Wi-Fi module can draw up to 200 mA peak during transmissions. Total system current with Wi-Fi active may reach 250 mA or more — use a USB port or power adapter rated for at least 500 mA.

On-Board Components

Component Part Function
Main MCU RP2040 Dual-core Cortex-M0+ application processor
Wireless Module u-blox NINA-W102 Wi-Fi 802.11 b/g/n + Bluetooth 4.2 LE
IMU LSM6DSOX 6-axis accelerometer and gyroscope
Microphone MP34DT05 PDM MEMS digital microphone for audio capture
Crypto Chip ATECC608A Hardware key storage for secure cloud provisioning
Flash External QSPI 16 MB program and data storage
LED Onboard LED on D13 (LED_BUILTIN)
RGB LED Onboard User-addressable RGB LED

Microcontroller

The RP2040 is designed by Raspberry Pi Ltd and is distinct from any previous Arduino MCU. Key architectural features:

  • Dual Cortex-M0+ cores: the second core can run concurrently (multiprocessing)
  • No internal Flash: code executes from the external 16 MB QSPI Flash via XIP (execute-in-place)
  • 8 PIO state machines: configurable hardware I/O engines for custom protocols, running independently of the CPU
  • USB 1.1 host/device in hardware (used internally)
  • 6 independent timer alarms, 4 DMA channels
  • 30 GPIO on the RP2040 chip (22 exposed on the Nano footprint)

PIO state machines can implement protocols such as WS2812 LED control, I2S audio, custom UART variants, and stepper motor step/direction — all at precise timing without CPU involvement.

Wireless Connectivity

Wi-Fi 802.11 b/g/n and Bluetooth 4.2 LE are handled by the u-blox NINA-W102 module. The RP2040 communicates with NINA-W102 over an internal SPI interface, controlled via the WiFiNINA library in Arduino C/C++ or via the nina-fw AT-command firmware in MicroPython.

Wi-Fi Example (Arduino C/C++)

#include <WiFiNINA.h> const char* ssid = "YourNetwork"; const char* password = "YourPassword"; void setup() { Serial.begin(115200); while (!Serial); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected! IP: "); Serial.println(WiFi.localIP()); } void loop() { // Your connected application logic here }

IoT Cloud

The Nano RP2040 Connect is officially supported on the Arduino IoT Cloud platform. During provisioning, credentials are stored in the ATECC608A for secure communication. Cloud variables synced over Wi-Fi allow remote monitoring, dashboards, and automations.

Setup steps:

  1. Create an account at https://cloud.arduino.cc
  2. Add a new device and select Arduino Nano RP2040 Connect
  3. Follow the provisioning wizard (requires the Arduino Create Agent on your computer)
  4. Create IoT Cloud variables and a dashboard panel

Getting Started

Install the Board Package (Arduino IDE)

Open Tools > Board > Boards Manager. Search for "Arduino Mbed OS Nano Boards" and install. Select Arduino Nano RP2040 Connect. Install the WiFiNINA and Arduino_LSM6DSOX libraries.

Blink (Arduino C/C++)

void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); }

MicroPython Setup

  1. Download the MicroPython firmware for the Arduino Nano RP2040 Connect from https://micropython.org/download/ARDUINO_NANO_RP2040_CONNECT/
  2. Hold the BOOTSEL button while plugging in USB — the board mounts as a USB drive.
  3. Copy the .uf2 firmware file to the drive — it will reboot automatically.
  4. Use Thonny IDE or rshell to write and upload .py scripts.

Programming

The Nano RP2040 Connect supports three programming environments:

  • Arduino IDE (C/C++): Uses the Arduino Mbed OS Nano Boards package. Full access to WiFiNINA, ArduinoBLE, PDM, and sensor libraries.
  • MicroPython: Upload .py files over the USB serial interface after flashing MicroPython firmware.
  • CircuitPython: Flash CircuitPython firmware from Adafruit; copy .py files to the CIRCUITPY drive.

Arduino C/C++ — Read IMU

#include <Arduino_LSM6DSOX.h> void setup() { Serial.begin(9600); while (!Serial); if (!IMU.begin()) { Serial.println("IMU failed"); while (1); } Serial.println("IMU ready."); } void loop() { float ax, ay, az; if (IMU.accelerationAvailable()) { IMU.readAcceleration(ax, ay, az); Serial.print("Accel: "); Serial.print(ax); Serial.print(", "); Serial.print(ay); Serial.print(", "); Serial.println(az); } delay(200); }

MicroPython — Blink and Wi-Fi

import time from machine import Pin import network led = Pin(6, Pin.OUT) wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect("YourNetwork", "YourPassword") while not wlan.isconnected(): print("Connecting...") time.sleep(0.5) print("Connected:", wlan.ifconfig()) while True: led.value(1) time.sleep(0.5) led.value(0) time.sleep(0.5)

Package Contents

Item Quantity
Arduino Nano RP2040 Connect board 1
micro-USB cable 1 (included with some retail versions; check listing)

Applications

  • Wi-Fi and BLE connected IoT sensors and edge nodes
  • Audio processing and keyword spotting with onboard PDM microphone
  • Motion detection and gesture classification using LSM6DSOX
  • TinyML inference on dual-core RP2040 (audio + motion models)
  • MicroPython and CircuitPython teaching and education
  • Rapid prototyping with Python scripting
  • Arduino IoT Cloud monitoring dashboards
  • Custom hardware protocols using RP2040 PIO state machines (WS2812, I2S, etc.)
  • Robotics and motor control with concurrent dual-core processing

Where to Buy

Retailer Link
Arduino Official Store https//store.arduino.cc/products/arduino-nano-rp2040-connect
Amazon https//www.amazon.com/s?k=Arduino+Nano+RP2040+Connect

Equivalent Boards

Board Key Difference
Arduino Nano 33 IoT Same NINA-W102 module, SAMD21 MCU (single Cortex-M0+), no microphone, 3.3V
Raspberry Pi Pico W Same RP2040 chip, Wi-Fi via CYW43439 (not NINA-W102), MicroPython, no Arduino Cloud
Arduino Nano 33 BLE nRF52840 ARM M4, BLE only (no Wi-Fi), no microphone, 3.3V

Documentation

Resource Link
Official Product Page https//store.arduino.cc/products/arduino-nano-rp2040-connect
Documentation & Pinout https//docs.arduino.cc/hardware/nano-rp2040-connect
MicroPython for RP2040 https//micropython.org/download/ARDUINO_NANO_RP2040_CONNECT/
WiFiNINA Library https//www.arduino.cc/reference/en/libraries/wifinina/
Arduino IoT Cloud https//cloud.arduino.cc
RP2040 Datasheet https//datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf

Notes

  • WARNING: The Nano RP2040 Connect operates at 3.3V logic. I/O pins are NOT 5V tolerant. Do not connect 5V signals to any I/O pin without a level shifter.
  • The RP2040 has only 3 hardware ADC pins (GPIO26, 27, 28). The Arduino core maps A0–A7 to the Nano footprint, but not all analog pins have true ADC capability on the RP2040. Refer to the official pinout diagram to identify which pins have hardware ADC.
  • To enter bootloader mode for firmware flashing (MicroPython/CircuitPython), hold the BOOTSEL button while connecting USB. The board mounts as a USB mass-storage drive.
  • If using MicroPython, ensure you use the build specifically compiled for the Arduino Nano RP2040 Connect — it includes the NINA-W102 firmware interface for Wi-Fi.
  • The RP2040's PIO state machines are a powerful but low-level feature. The Arduino_MachineControl and other community libraries provide high-level wrappers for common PIO use cases.
  • The onboard microphone (MP34DT05) outputs PDM audio. In Arduino C/C++ use the PDM library. In MicroPython/CircuitPython, access depends on the specific firmware version.

Community

Revision History

Version Date Notes
v1.0 2026-06 Initial entry