The Raspberry Pi Pico 2 is what the original Pico would look like if it were designed today -- same 40-pin castellated layout, same rough price point, but built around the newer RP2350 chip instead of the RP2040. No wireless radio on this one; that's the Pico 2 W's job. This is the plain, wired sibling, and it's the board to reach for when a project wants the RP2350's extra RAM, extra flash, and hardware security features without paying for -- or needing -- WiFi and Bluetooth at all.
The headline change from the original RP2040-based Pico is the chip underneath. The RP2350 doubles the RAM (520KB versus 264KB), doubles the flash (4MB versus 2MB on most boards), and adds hardware security features that the RP2040 never had. It also introduces something genuinely unusual: a choice of processor architecture, selectable at boot, between dual Arm Cortex-M33 cores and dual Hazard3 RISC-V cores on the same silicon -- a feature no other mainstream hobbyist board currently offers.
This guide covers the plain Pico 2's pinout in full -- GPIO, ADC, PWM, the communication buses, and the practical differences that matter when migrating an existing RP2040 project over.
GPIO Pins and Numbering
Same 26 usable GPIOs as the original Pico, numbered GP0 through GP28 with a few gaps, laid out across the familiar 40-pin castellated edge.
// Arduino-style
pinMode(15, OUTPUT);
digitalWrite(15, HIGH);
# MicroPython
from machine import Pin
led = Pin(15, Pin.OUT)
led.value(1)
GPIO numbering and function assignment carries over pin-for-pin from the original RP2040 Pico -- an existing Pico wiring diagram applies directly to the Pico 2, no relearning needed. This is one of the friendlier chip upgrades in the hobbyist microcontroller space specifically because Raspberry Pi kept the pin map identical rather than reshuffling anything for the new silicon.
Dual-Architecture Boot Selection
The RP2350's ability to run either Arm Cortex-M33 or RISC-V Hazard3 cores, selectable at boot, doesn't change GPIO behavior or pin assignment at all -- it's purely a processor-architecture choice under the hood. Nearly all existing tooling (the Pico SDK, MicroPython, the Arduino core) targets the Arm cores by default, and that's what ships active out of the box. Switching to RISC-V requires flashing a different UF2 build specifically compiled for the Hazard3 target -- it's not a runtime toggle, and GPIO pin numbers stay identical either way.
ADC Pins
Three general-purpose analog inputs on GP26, GP27, and GP28, plus a fourth internal channel reading the chip's own temperature sensor with no external pin.
from machine import ADC
sensor = ADC(26)
reading = sensor.read_u16()
The ADC is still 12-bit, same resolution as the RP2040, but the RP2350's reference stability is improved in practice -- readings show noticeably less jitter than on the original Pico without any code changes, which matters for anything reading a low-voltage sensor like a thermistor or an LDR where a few ADC counts of noise used to be significant.
PWM
The RP2350 keeps the RP2040's PWM slice architecture -- GPIOs are grouped into slices, each with two channels sharing a base frequency but capable of independent duty cycles. The updated SDK gives slightly more flexible slice-to-pin mapping than the RP2040 had, which helps avoid conflicts on projects juggling several simultaneous PWM outputs (multiple servos, for instance).
from machine import Pin, PWM
servo = PWM(Pin(15))
servo.freq(50)
servo.duty_u16(4000)
Nearly every GPIO supports PWM output -- the real constraint is avoiding slice conflicts between multiple assigned signals, not whether a given pin can do PWM at all.
The Onboard LED
Unlike the wireless Pico W variants, the plain Pico 2's onboard LED is wired to a standard GPIO -- GP25 -- rather than being routed through a wireless chip. Simple Pin(25, Pin.OUT) toggling works directly here, without the Pin("LED") string-based workaround the wireless variants need.
from machine import Pin
led = Pin(25, Pin.OUT)
led.toggle()
I2C, SPI, and UART
I2C: Two peripherals, I2C0 and I2C1, each mappable to several GPIO pairs. The most common defaults are I2C0 on GP4 (SDA) / GP5 (SCL) and I2C1 on GP6 (SDA) / GP7 (SCL), though any compatible pin can be reassigned in software. Only one instance of each peripheral can be active at a time -- two simultaneous I2C buses total.
from machine import I2C, Pin
i2c = I2C(0, sda=Pin(4), scl=Pin(5))
SPI: SPI0 and SPI1, also flexibly mappable. Common defaults are SPI0 on GP16 (MISO) / GP18 (SCK) / GP19 (MOSI) / GP17 (CS), and SPI1 on GP8 (MISO) / GP10 (SCK) / GP11 (MOSI) / GP9 (CS).
UART: UART0 and UART1, remappable, with GP0 (TX) / GP1 (RX) as the most common default for UART0 -- also the pair most project templates use for USB-serial-style debugging.
Hardware Security Features
Beyond the doubled RAM and flash, the RP2350 introduces hardware-backed security partitioning based on Arm TrustZone, plus support for signed boot -- letting firmware separate a "secure world" handling credentials or cryptographic keys from the main application code at the silicon level. This rarely matters for a one-off hobbyist project, but it's a meaningful part of why the RP2350 positions itself as more production-ready than a pure speed bump over the RP2040, and it's one of the features that separates the RP2350 from cheaper competing microcontrollers that only offer more RAM without any of the security tooling to go with it.
Power Pins
| Pin | Function | Notes |
|---|---|---|
| VBUS | 5V from USB | Present only when USB is connected -- not a reliable always-on 5V source |
| VSYS | 1.8-5.5V input | The preferred external power input for battery packs, solar, or a regulated supply -- not VBUS |
| 3V3 | Onboard 3.3V output | Regulated output for small peripherals -- check current draw against the datasheet before relying on it |
| 3V3_EN | Regulator enable | Pull LOW to disable the onboard 3.3V regulator entirely -- useful for ultra-low-power sleep designs |
| GND | Ground | Multiple ground pins broken out around the board edge |
For battery-powered builds, VSYS is almost always the right connection point rather than VBUS, which is physically tied to the USB connector's 5V line and isn't meant to be back-fed externally.
How the Pico 2 Compares
| Board | Chip | RAM | Flash | Wireless | Best for |
|---|---|---|---|---|---|
| Pico (original) | RP2040 | 264KB | 2MB typical | None | Budget projects, huge existing library base |
| Pico W | RP2040 | 264KB | 2MB typical | WiFi + BLE | Same as Pico, plus wireless |
| Pico 2 | RP2350 | 520KB | 4MB typical | None | RP2350's extra RAM/security, no wireless needed |
| Pico 2 W | RP2350 | 520KB | 4MB typical | WiFi + BLE | Same as Pico 2, plus wireless |
The decision between the four essentially comes down to two independent questions: does the project need wireless, and does it need the RP2350's extra RAM and security features? The plain Pico 2 is the answer whenever the second is yes but the first is no.
Practical Pin Usage Tips
Reach for GP26-28 first for any analog sensor. They're the only true analog-capable pins, so plan around them early rather than assuming any GPIO will read analog.
Use GP14 and GP15 for general digital I/O when possible. They carry no default peripheral role, which keeps early debugging free of unexpected peripheral conflicts.
Confirm firmware is built against the RP2350 target, not the RP2040. The two chips need separately compiled firmware even when the source code itself is unchanged -- a common gotcha for anyone porting an existing Pico project over.
Don't assume Hazard3 RISC-V support in every library. The Arm Cortex-M33 cores are what ship active by default and what essentially all existing MicroPython and C SDK tooling targets -- the RISC-V option is there, but expect less mature library support if switching to it.
Summary: Pico 2 Pin Reference at a Glance
Raspberry Pi Pico 2 · RP2350 · Dual Arm Cortex-M33 (or Hazard3 RISC-V) @ 150MHz · 520KB SRAM · 4MB Flash · 26 Usable GPIO · 3x ADC · 2x I2C · 2x SPI · 2x UART · No wireless radio
Which Projects the Pico 2 Actually Fits
A strong fit: anything the original RP2040 Pico already handled well, but running short on RAM or flash -- a data-logging project buffering more samples between SD card writes, a project storing larger lookup tables or fonts in flash, or anything using PIO (Programmable I/O) state machines intensively enough to benefit from the RP2350's refinements to that peripheral. It's also the natural choice for anyone wanting to experiment with the RISC-V Hazard3 cores specifically, since it's the cheapest mainstream board offering that option at all.
A weaker fit: anything needing wireless (the Pico 2 W exists specifically for that, at a modest price premium), or projects with no real RAM/flash pressure where the original RP2040 Pico's lower price and enormous existing tutorial base make it the simpler starting point.
A Note on PIO (Programmable I/O)
One RP2040 feature that carries over to the RP2350 largely unchanged deserves a mention here even though it's not GPIO in the traditional sense: the Programmable I/O (PIO) subsystem, which lets a project implement custom, precisely-timed digital protocols in a small dedicated assembly-like language, running independently of the main CPU cores. It's how the Pico family implements things like WS2812 LED strip control, custom serial protocols, or precise square-wave generation without consuming CPU cycles on tight timing loops. The RP2350 keeps three PIO blocks (versus the RP2040's two), which in practice means slightly more headroom for projects layering multiple PIO-driven peripherals at once -- a driving factor behind several RP2350-specific project write-ups that wouldn't have fit comfortably on the original chip's two-block budget.
Quick Answers to Common Pico 2 Pin Questions
Does my existing Pico (RP2040) code run unmodified on the Pico 2? Almost always, for anything using standard GPIO, I2C, SPI, ADC, and PWM calls -- pin numbering and the API are identical. Firmware just needs rebuilding against the RP2350 target rather than assuming the RP2040 binary works.
Should I get the Pico 2 or the Pico 2 W? If a project has no wireless requirement, the plain Pico 2 is cheaper with the identical core pinout, RAM, and flash -- the W variant only adds WiFi/Bluetooth on top, routed through the same CYW43439 chip as the original Pico W.
Is the onboard LED wired the same as the Pico W's? No -- on the plain Pico 2 it's a standard GPIO25 LED, simpler than the wireless variants' chip-routed LED.
What's the RISC-V option actually for? Mostly experimentation and open-source-architecture projects at this point -- the Arm cores have far more mature tooling and library support for typical hobbyist work.
Can I use 3.3V sensors without a level shifter? Yes -- the RP2350 runs 3.3V logic throughout, same as the RP2040.
How many analog pins does it have compared to the RP2040 Pico? The same three -- GP26, GP27, and GP28 -- the RP2350 didn't add additional ADC channels over its predecessor.
Where to Go From Here
Once the RP2350's RAM and flash headroom feel like the new normal, the hardware security features covered above are worth exploring the moment a project moves from a one-off build toward something meant to ship, since that's the use case they're actually aimed at. From there, if a project ends up needing WiFi or Bluetooth after all, the Pico 2 W carries the exact same core pinout with those radios added on top -- no rewiring required for anything covered here.