The Arduino Nano RP2040 Connect is arguably the most powerful Arduino Nano ever made. Built around the Raspberry Pi RP2040 chip — the same dual-core Cortex-M0+ processor found in the Pi Pico — this tiny 45 × 18 mm board packs Wi-Fi, Bluetooth Low Energy, a 6-axis IMU, a digital microphone, and a cryptographic element into the classic Nano form factor. For makers, students, and professionals who have outgrown the traditional Nano’s processing limits but still want the familiar Arduino ecosystem, the RP2040 Connect is a compelling upgrade that unlocks machine learning on the edge, real-time audio processing, and complex IoT applications.
- Key Specifications and What Sets It Apart
- Pinout and GPIO Guide
- Getting Started: IDE Setup and First Sketch
- Wi-Fi and Bluetooth Projects
- Using the IMU and Microphone
- Dual-Core Programming with Mbed OS
- Machine Learning at the Edge
- Frequently Asked Questions
Key Specifications and What Sets It Apart
Understanding the hardware is the first step to leveraging the Nano RP2040 Connect effectively. Here is a full rundown:
- Processor: RP2040 — dual-core ARM Cortex-M0+ at up to 133 MHz
- RAM: 264 KB SRAM on-chip + 16 MB external QSPI Flash
- Wireless: Nina-W102 module (ESP32-based) providing IEEE 802.11 b/g/n Wi-Fi 2.4 GHz + Bluetooth 4.2 (BLE and Classic)
- IMU: LSM6DSOX 6-axis inertial measurement unit (3-axis accelerometer + 3-axis gyroscope) with ML core
- Microphone: MP34DT05 digital MEMS microphone (PDM interface)
- Security: ATECC608A cryptographic element (secure key storage, AES-128)
- GPIO: 20 digital I/O pins, 8 ADC channels (12-bit), hardware SPI, I2C, UART, 4 PWM slices (up to 8 PWM outputs)
- Operating voltage: 3.3 V logic (NOT 5 V tolerant — use level shifters with 5 V peripherals)
- USB: Native USB (acts as a USB device: serial, HID, MIDI, mass storage)
- Form factor: Nano (45 × 18 mm), pin-compatible with all standard Nano accessories
What genuinely differentiates this board from a standard Nano Every or Nano 33 IoT is the combination of raw processing power (dual cores at 133 MHz versus the SAMD21’s single core at 48 MHz), substantial RAM (264 KB versus 32 KB), and native USB — which means the RP2040 Connect can present itself as a keyboard, mouse, or MIDI instrument without any additional chips.
Pinout and GPIO Guide
The Nano RP2040 Connect uses the standard 30-pin Nano pinout but with important differences versus older Nano boards.
Analog Pins (ADC)
Pins A0–A7 are all 12-bit ADC inputs, giving 4096 steps of resolution versus the 10-bit (1024 steps) ADC on the older ATmega328-based Nanos. This is a significant improvement for precision sensor readings. Note that A4 and A5 are also the I2C pins (SDA and SCL).
PWM
The RP2040 has flexible PWM: almost every GPIO can be a PWM output. In the Arduino Mbed OS core, PWM is available on D2–D12 and A0–A3. Frequency and resolution can be customised.
UART
Hardware UART is on D0 (RX) and D1 (TX). Unlike the ATmega328 Nano, the RP2040 has a native USB serial port that does NOT share pins with D0/D1, so you can use both simultaneously.
Important: 3.3 V Only
The RP2040 is a 3.3 V device. All GPIO pins are rated for 3.3 V maximum. Connecting 5 V signals directly will damage the chip. When interfacing with 5 V sensors or modules (HC-05, servo motors), use a logic level shifter.
Getting Started: IDE Setup and First Sketch
Installing the Board Package
- Open Arduino IDE (2.x recommended).
- Go to File → Preferences and confirm the board manager URL for Arduino is present.
- Tools → Board → Boards Manager → search for Arduino Mbed OS Nano Boards (by Arduino) → Install.
- Select Tools → Board → Arduino Mbed OS Nano Boards → Arduino Nano RP2040 Connect.
- Connect the board via USB. If no COM port appears, double-press the RESET button to enter bootloader mode (a mass storage device named RPI-RP2 will appear).
Blink Test
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
If the onboard LED blinks, your toolchain is working correctly.
Note on Boot and Firmware Updates
The Nina-W102 Wi-Fi/BLE module has its own firmware that may need updating. Use the WiFiNINA Firmware Updater sketch (File → Examples → WiFiNINA → Tools → FirmwareUpdater) periodically to keep the wireless stack current.
Wi-Fi and Bluetooth Projects
Connecting to Wi-Fi and Fetching Data
The WiFiNINA library handles all Wi-Fi operations. Install it via Library Manager. A basic HTTP GET:
#include <WiFiNINA.h>
const char* ssid = "YourSSID";
const char* pass = "YourPassword";
void setup() {
Serial.begin(9600);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial.println("Connected!");
Serial.println(WiFi.localIP());
}
BLE Peripheral (Sensor Broadcaster)
Use the ArduinoBLE library to broadcast sensor data that a smartphone can read:
#include <ArduinoBLE.h>
BLEService tempService("180F");
BLEFloatCharacteristic tempChar("2A19", BLERead | BLENotify);
void setup() {
BLE.begin();
BLE.setLocalName("NanoRP2040");
BLE.setAdvertisedService(tempService);
tempService.addCharacteristic(tempChar);
BLE.addService(tempService);
BLE.advertise();
}
void loop() {
BLE.poll();
tempChar.writeValue(25.5f); // replace with real sensor reading
delay(1000);
}
Using the IMU and Microphone
Reading the LSM6DSOX IMU
Install the Arduino_LSM6DSOX library. The IMU is on the internal I2C bus (not exposed on the header pins).
#include <Arduino_LSM6DSOX.h>
void setup() {
Serial.begin(9600);
IMU.begin();
}
void loop() {
float ax, ay, az;
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(ax, ay, az);
Serial.print(ax); Serial.print("t");
Serial.print(ay); Serial.print("t");
Serial.println(az);
}
delay(100);
}
Recording Audio from the PDM Microphone
Install PDM library (included with the Mbed core). You can buffer audio samples and analyse them for sound level, frequency content, or feed them into a TinyML keyword detection model.
#include <PDM.h>
short sampleBuffer[256];
volatile int samplesRead;
void onPDMdata() {
samplesRead = PDM.available() / 2;
PDM.read(sampleBuffer, samplesRead * 2);
}
void setup() {
Serial.begin(9600);
PDM.onReceive(onPDMdata);
PDM.begin(1, 16000); // 1 channel, 16 kHz
}
void loop() {
if (samplesRead) {
for (int i = 0; i < samplesRead; i++) Serial.println(sampleBuffer[i]);
samplesRead = 0;
}
}
Dual-Core Programming with Mbed OS
The RP2040’s second CPU core is accessible via the Arduino Mbed OS core using the mbed::Thread class or the rp2040.fifo FIFO API.
Simple Two-Core Example
#include "mbed.h"
void core1Task() {
while(true) {
// Heavy computation runs here on Core 1
rp2040.fifo.push(42); // send result to Core 0
delay(100);
}
}
void setup() {
Serial.begin(9600);
// Launch task on second core
rp2040.fifo.begin();
}
void loop() {
// Core 0: handle I/O, sensors, communication
if (rp2040.fifo.available()) {
uint32_t result = rp2040.fifo.pop();
Serial.println(result);
}
}
A practical split: run Wi-Fi stack polling and HTTP requests on Core 0, and run sensor sampling + signal processing on Core 1. This prevents the Wi-Fi keep-alive activity from disrupting time-critical sensor reads.
Machine Learning at the Edge
The Arduino Nano RP2040 Connect is an official target board for the Arduino Machine Learning (ML) tools. With 264 KB RAM and a 133 MHz dual-core processor, it can run quantised TensorFlow Lite models for tasks like:
- Keyword spotting: Detect “yes” / “no” / custom wake words using the onboard PDM microphone. The Edge Impulse and Arduino ML Tools workflows export a TFLite model directly as an Arduino library.
- Gesture recognition: Classify hand gestures (shake, flip, rotate) using the LSM6DSOX IMU. Train a model in Edge Impulse, export as a library, include in your sketch.
- Anomaly detection: Run the IMU at 104 Hz and detect when vibration patterns deviate from a learned baseline — useful for predictive maintenance of motors or machinery.
The Arduino Tiny Machine Learning Kit bundles the Nano RP2040 Connect (or Nano 33 BLE Sense) with an OV7675 camera module and a custom shield, providing a complete out-of-the-box ML platform.
Frequently Asked Questions
Is the Arduino Nano RP2040 Connect compatible with the Arduino IDE and libraries written for the Nano 33 IoT?
Mostly yes. Libraries that use standard Arduino APIs (WiFiNINA, ArduinoBLE, Wire, SPI) work without changes. Libraries that rely on SAMD21-specific registers or interrupts will not compile. The Mbed OS core differs slightly from the SAMD core, so some timing-sensitive libraries may need minor adjustments.
Can I program the Nano RP2040 Connect with MicroPython?
Yes. While this guide focuses on the Arduino C++ environment, the RP2040 supports MicroPython. Flash the official MicroPython firmware (available from micropython.org) onto the board. Note that the Arduino Mbed OS firmware must be removed first, and MicroPython does not support the Nina-W102 Wi-Fi module natively — you would need a custom firmware build.
How much current does the board draw at full operation?
With both cores running at 133 MHz, Wi-Fi active, and the Nina module transmitting, expect 150–200 mA at 3.3 V. In deep sleep with Wi-Fi off, the RP2040 can drop to under 1 mA. Design your power budget accordingly if you are running on a battery.
Why does my COM port disappear after uploading a sketch?
The Nano RP2040 Connect uses native USB (no USB-to-serial converter chip). When a sketch that does not call Serial.begin() is running, the USB CDC serial port may not enumerate. Double-press RESET to enter bootloader mode and upload a working sketch. Always include Serial.begin(9600); in setup if you need the serial port.
What is the difference between the Nano RP2040 Connect and the Raspberry Pi Pico W?
Both use the RP2040 chip. The Pico W is cheaper and has Wi-Fi (via a CYW43439 chip) but lacks BLE Classic support, has no IMU, no microphone, and no cryptographic element. The Nano RP2040 Connect is a more complete sensor platform with the Arduino shield ecosystem. Choose the Pico W for low-cost Wi-Fi connectivity; choose the Nano RP2040 Connect for sensing, ML, and BLE use cases.
Upgrade your projects with the Nano RP2040 Connect and browse our full selection of Arduino boards and accessories at Zbotic — India’s trusted electronics components store.
Add comment