Raspberry Pi Pico 2 / RP2350 Pinout + Safe GPIOs & Interfaces (2026)

Complete Raspberry Pi Pico 2 / RP2350 pinout guide for 2026: safe GPIOs, ADC, I2C, SPI, UART, PWM, PIO, USB, power pins, BOOTSEL, SWD and MicroPython/Arduino setup.

Quick Summary (TL;DR):
The Raspberry Pi Pico 2 is a 21 × 51 mm microcontroller board based on the RP2350A. It provides dual 150 MHz Arm Cortex-M33 cores or dual Hazard3 RISC-V cores, 520 KB SRAM, 4 MB onboard QSPI flash, USB 1.1 device/host, two UARTs, two SPI controllers, two I²C controllers, a 12-bit 500 kS/s ADC, 12 PWM slices and three PIO blocks with 12 state machines. The board exposes 26 multi-function 3.3 V GPIOs: GPIO0–22 and GPIO26–28. GPIO26, GPIO27 and GPIO28 are the three exposed ADC inputs. Unlike ESP32, Pico 2 has no exposed boot-strapping GPIOs that need to be avoided for normal startup; the board keeps GPIO23, GPIO24, GPIO25 and GPIO29 for internal SMPS, VBUS, LED and VSYS functions. The main safety rule is electrical: Pico 2 GPIO is 3.3 V logic and is not a 5 V GPIO interface. GPIO26–28 have an additional analogue-pad restriction and should never be driven beyond the 3.3 V domain. Programming is exceptionally simple: hold BOOTSEL while connecting USB and copy a UF2 file to the mass-storage device. SWD is available for debugging.

What Is Raspberry Pi Pico 2?

Raspberry Pi Pico 2 is the second-generation Pico microcontroller board. It looks deliberately similar to the original RP2040-based Pico so that existing breadboards, carrier boards and many accessories can continue to work, but the microcontroller underneath has changed substantially.

The board uses the RP2350A, Raspberry Pi’s second-generation microcontroller. The standard Pico 2 has no Wi-Fi or Bluetooth. If you need wireless connectivity, the Pico 2 W uses the same RP2350 generation while adding 2.4 GHz Wi-Fi and Bluetooth.

Like the original Pico, Pico 2 is a microcontroller board rather than a Linux single-board computer. It boots directly into your firmware and is programmed using MicroPython, C/C++, Arduino-compatible cores and other RP2350 toolchains.

Raspberry Pi Pico 2 Specifications

FeatureRaspberry Pi Pico 2
MicrocontrollerRP2350A
CPU optionsDual Arm Cortex-M33 or dual Hazard3 RISC-V
Maximum clock150 MHz
SRAM520 KB
Onboard flash4 MB QSPI
Exposed GPIO26 multi-function 3.3 V GPIO
Exposed ADC inputs3 — GPIO26, GPIO27, GPIO28
ADC12-bit SAR, 500 kS/s
UART2
SPI2
I²C2
PWM12 slices / up to 24 controllable PWM outputs at RP2350 level
PIO3 blocks / 12 state machines
USBUSB 1.1 controller + PHY, device and host support
ProgrammingUSB BOOTSEL mass-storage UF2 or SWD
Board dimensions21 × 51 mm
Input supply via VSYS1.8–5.5 V
GPIO voltage3.3 V fixed on Pico 2
Operating temperature−20 °C to +85 °C component limit; Raspberry Pi recommends max 70 °C ambient

RP2350’s unusual feature is the choice of processor architecture. Firmware can target either the pair of Cortex-M33 cores or the pair of Hazard3 RISC-V cores. It is not a four-core processor running two Arm and two RISC-V cores simultaneously.

Pico 2 Pinout at a Glance

                    Micro-USB
                       │
                       ▼
          ┌─────────────────────────┐
 GP0   1  │●                       ●│ 40  VBUS
 GP1   2  │●                       ●│ 39  VSYS
 GND   3  │●                       ●│ 38  GND
 GP2   4  │●                       ●│ 37  3V3_EN
 GP3   5  │●                       ●│ 36  3V3(OUT)
 GP4   6  │●                       ●│ 35  ADC_VREF
 GP5   7  │●                       ●│ 34  GP28 / ADC2
 GND   8  │●                       ●│ 33  AGND
 GP6   9  │●                       ●│ 32  GP27 / ADC1
 GP7  10  │●       RP2350A         ●│ 31  GP26 / ADC0
 GP8  11  │●                       ●│ 30  RUN
 GP9  12  │●                       ●│ 29  GP22
 GND  13  │●                       ●│ 28  GND
 GP10 14  │●                       ●│ 27  GP21
 GP11 15  │●                       ●│ 26  GP20
 GP12 16  │●                       ●│ 25  GP19
 GP13 17  │●                       ●│ 24  GP18
 GND  18  │●                       ●│ 23  GND
 GP14 19  │●                       ●│ 22  GP17
 GP15 20  │●                       ●│ 21  GP16
          └──────────┬──────────────┘
                 SWD DEBUG
             SWCLK | GND | SWDIO

The 40 main pins are numbered physically from pin 1 at the top-left, down to pin 20, then from pin 21 at the bottom-right up to pin 40. The three SWD pads/connectors at the lower edge are separate from the 40-pin header.

Complete Pico 2 40-Pin Header

Physical pinSignalMain useful functions
1GPIO0UART0 TX / I²C0 SDA / SPI0 RX / PWM / PIO
2GPIO1UART0 RX / I²C0 SCL / SPI0 CSn / PWM / PIO
3GNDGround
4GPIO2I²C1 SDA / SPI0 SCK / PWM / PIO
5GPIO3I²C1 SCL / SPI0 TX / PWM / PIO
6GPIO4UART1 TX / I²C0 SDA / SPI0 RX / PWM / PIO
7GPIO5UART1 RX / I²C0 SCL / SPI0 CSn / PWM / PIO
8GNDGround
9GPIO6I²C1 SDA / SPI0 SCK / PWM / PIO
10GPIO7I²C1 SCL / SPI0 TX / PWM / PIO
11GPIO8UART1 TX / I²C0 SDA / SPI1 RX / PWM / PIO
12GPIO9UART1 RX / I²C0 SCL / SPI1 CSn / PWM / PIO
13GNDGround
14GPIO10I²C1 SDA / SPI1 SCK / PWM / PIO
15GPIO11I²C1 SCL / SPI1 TX / PWM / PIO
16GPIO12UART0 TX / I²C0 SDA / SPI1 RX / PWM / PIO
17GPIO13UART0 RX / I²C0 SCL / SPI1 CSn / PWM / PIO
18GNDGround
19GPIO14I²C1 SDA / SPI1 SCK / PWM / PIO
20GPIO15I²C1 SCL / SPI1 TX / PWM / PIO
21GPIO16SPI0 RX / I²C0 SDA / UART0 TX / PWM / PIO
22GPIO17SPI0 CSn / I²C0 SCL / UART0 RX / PWM / PIO
23GNDGround
24GPIO18SPI0 SCK / I²C1 SDA / PWM / PIO
25GPIO19SPI0 TX / I²C1 SCL / PWM / PIO
26GPIO20I²C0 SDA / PWM / PIO
27GPIO21I²C0 SCL / PWM / PIO
28GNDGround
29GPIO22GPIO / PWM / PIO
30RUNRP2350 enable/reset; pull low to reset
31GPIO26 / ADC0Digital GPIO / ADC0 / I²C1 SDA
32GPIO27 / ADC1Digital GPIO / ADC1 / I²C1 SCL
33AGNDAnalogue ground
34GPIO28 / ADC2Digital GPIO / ADC2
35ADC_VREFADC supply/reference
363V3(OUT)Regulated 3.3 V output
373V3_ENSMPS enable; pull low to turn off 3.3 V rail
38GNDGround
39VSYSMain system input, 1.8–5.5 V
40VBUSUSB 5 V input rail

Which Pico 2 GPIOs Are Safe to Use?

This question has a simpler answer than on many ESP32 boards. The Pico 2 does not expose a set of boot-strapping GPIOs that must sit at particular logic levels during startup. The 26 GPIOs on the main header are intended for user I/O.

GPIO groupRecommendationReason
GPIO0–22Safe general-purpose GPIOAll are exposed user GPIO; no board boot strapping on these header pins
GPIO26–28Safe GPIO with ADC precautionsDigital or ADC use; keep voltage inside 3.3 V analogue limits
GPIO23Do not treat as user GPIOInternal: controls SMPS power-save mode; only available as test point
GPIO24InternalVBUS sense
GPIO25Internal / LEDDrives onboard LED; not on main header
GPIO29InternalADC3 used to monitor VSYS/3
SWDIO / SWCLKReserve for debuggingSeparate debug interface, not part of the 26 main GPIO header pins

So, for a normal project, GPIO0–22 are the easiest pins to allocate freely. GPIO26–28 are equally usable as digital GPIO, but if you might need analogue measurements later it is sensible to reserve them for ADC.

Pico 2 Is 3.3 V Logic — Do Not Feed GPIO 5 V

Pico 2’s GPIO rail is fixed at 3.3 V. The fact that the board itself can be powered from USB 5 V or from up to 5.5 V on VSYS does not make the GPIO pins 5 V-compatible.

  • Do not connect a 5 V push-pull output directly to a Pico 2 GPIO.
  • Use a resistor divider or level shifter for 5 V sensor/logic outputs where appropriate.
  • Use 3.3 V pull-ups on I²C when devices connect directly to the RP2350.
  • Do not drive motors, relays or other high-current loads directly from GPIO; use a transistor, MOSFET, driver or H-bridge.
  • GPIO outputs are logic signals, not power outputs.
  • If a peripheral can run at both 3.3 V and 5 V, powering its logic side at 3.3 V usually makes interfacing simpler.

Special ADC Warning for GPIO26–GPIO28

GPIO26, GPIO27 and GPIO28 are connected to RP2350’s ADC-capable pads. Raspberry Pi specifically notes that the ADC-capable GPIO26–29 group has an internal reverse diode to the I/O supply rail.

The practical rule is simple: do not let the voltage on GPIO26–28 exceed the 3.3 V I/O rail by more than the small diode margin. Treat 0–3.3 V as the normal working range.

There is another subtle difference: if RP2350 is unpowered while voltage is applied to an ADC-capable GPIO, current can leak through that diode into the 3.3 V rail. Avoid externally driving GPIO26–28 while the Pico 2 is powered off.

The ordinary digital GPIO0–22 do not have that same ADC-pad diode restriction, but they are still 3.3 V logic pins and should not be treated as 5 V inputs.

RP2350 E9 GPIO Erratum: What Pico 2 Owners Should Know

Early RP2350 silicon, the original A2 stepping, has a documented GPIO pad issue known as Erratum E9. Under affected input conditions, a pin that has been driven high can exhibit unwanted leakage instead of returning cleanly to a high-impedance/weakly pulled-low state.

This is most relevant to circuits that rely on floating inputs, very weak pull-down resistors, open-drain behaviour or high-impedance input switching. A conventional actively driven push-pull digital signal is less likely to expose the problem.

Raspberry Pi announced the A4 stepping in 2025 and states that A4 fixes E9 by correcting the GPIO pad design. If you are designing a production board or a circuit where weak pull-down/high-impedance behaviour is critical, identify the silicon revision rather than assuming every RP2350 in circulation behaves identically.

  • For ordinary buttons, sensors and actively driven logic, follow the normal SDK/library recommendations.
  • For an A2-based design that depends on weak pull-downs or truly high-impedance inputs, read the current RP2350 E9 erratum.
  • For a new commercial design where E9 matters, prefer confirmed A4 or later silicon.
  • Do not confuse E9 with a reason to avoid specific Pico 2 header GPIO numbers — it is a silicon-pad behaviour issue, not an ESP32-style list of ‘bad boot pins’.

ADC Pins and Analogue Measurements

Physical pinGPIOADC channel
31GPIO26ADC0
32GPIO27ADC1
34GPIO28ADC2
InternalGPIO29ADC3 — measures VSYS/3
InternalTemperature sensorInternal ADC mux input

RP2350’s ADC is a 12-bit SAR converter running at up to 500 kS/s. The Pico 2 exposes three external analogue inputs; the fourth RP2350A ADC-capable GPIO, GPIO29, is used internally to measure the system supply through a divide-by-three network.

Pico 2 provides separate ADC_VREF and AGND pins to make cleaner analogue designs possible. The standard ADC reference is derived from the board’s 3.3 V supply through filtering, so absolute measurement accuracy is limited by supply accuracy, noise and ADC offset.

For precision measurement, Raspberry Pi documents the option of using a suitable external shunt reference on ADC_VREF. For ordinary potentiometers, light sensors and analogue sensors, the standard arrangement is normally sufficient.

MicroPython ADC Example

from machine import ADC
from time import sleep

adc = ADC(26)   # GPIO26 / ADC0

while True:
    raw = adc.read_u16()
    voltage = raw * 3.3 / 65535
    print(raw, voltage)
    sleep(0.5)

MicroPython presents ADC readings using its standard API scaling, so the returned numerical width is an API representation rather than a claim that the RP2350 ADC hardware is 16-bit. The hardware converter is 12-bit.

I²C Pin Options

RP2350 has two hardware I²C controllers, and the GPIO matrix exposes each controller on multiple pin pairs. That means you are not locked to one SDA/SCL pair.

I²C busConvenient SDA pinsConvenient SCL pins
I²C0GPIO0, GPIO4, GPIO8, GPIO12, GPIO16, GPIO20GPIO1, GPIO5, GPIO9, GPIO13, GPIO17, GPIO21
I²C1GPIO2, GPIO6, GPIO10, GPIO14, GPIO18, GPIO26GPIO3, GPIO7, GPIO11, GPIO15, GPIO19, GPIO27

Choose the pair that best fits your physical wiring and other peripheral assignments. SDA and SCL need to come from the same I²C controller and a valid matching mapping.

from machine import I2C, Pin

i2c = I2C(
    0,
    scl=Pin(1),
    sda=Pin(0),
    freq=400000
)

print(i2c.scan())

I²C requires pull-up resistors. Many breakout boards already include them; make sure any pull-ups connected directly to Pico 2 go to 3.3 V rather than 5 V.

SPI Pin Options

Pico 2 includes two hardware SPI controllers. The official pinout highlights several convenient mappings.

Example SPI busRX / MISOCSnSCKTX / MOSI
SPI0 option AGPIO0GPIO1GPIO2GPIO3
SPI0 option BGPIO4GPIO5GPIO6GPIO7
SPI0 option CGPIO16GPIO17GPIO18GPIO19
SPI1 option AGPIO8GPIO9GPIO10GPIO11
SPI1 option BGPIO12GPIO13GPIO14GPIO15

Chip-select is often controlled as an ordinary GPIO in software, so practical SPI wiring can be even more flexible than the table suggests. Keep fast SPI traces short and provide a solid ground reference.

from machine import SPI, Pin

spi = SPI(
    0,
    baudrate=10_000_000,
    polarity=0,
    phase=0,
    sck=Pin(18),
    mosi=Pin(19),
    miso=Pin(16)
)

cs = Pin(17, Pin.OUT, value=1)

UART Pin Options

RP2350 provides two UART controllers. As with I²C and SPI, UART functions appear on several GPIO pairs.

UARTTX examplesRX examples
UART0GPIO0, GPIO12, GPIO16GPIO1, GPIO13, GPIO17
UART1GPIO4, GPIO8GPIO5, GPIO9
from machine import UART, Pin

uart = UART(
    0,
    baudrate=115200,
    tx=Pin(0),
    rx=Pin(1)
)

uart.write("Pico 2 UART ready\r\n")

The USB port can also provide a serial console through firmware, so hardware UART pins can remain available for GPS modules, motor controllers, industrial interfaces or other peripherals.

PWM on Pico 2

RP2350 expands the PWM subsystem to 12 slices, each with two channels. At the microcontroller level that provides up to 24 controllable PWM outputs, subject to GPIO mapping and shared slice-frequency constraints.

PWM is useful for LED dimming, servo control, motor-driver commands, switching regulators, audio experiments and pulse/frequency generation. It is not a true analogue voltage output; the pin still switches between logic low and high.

from machine import Pin, PWM
from time import sleep

pwm = PWM(Pin(15))
pwm.freq(1000)

while True:
    for duty in range(0, 65535, 1024):
        pwm.duty_u16(duty)
        sleep(0.01)

PIO: Pico 2’s Most Flexible Interface

Programmable I/O is one of the defining features of Raspberry Pi microcontrollers. Instead of relying only on fixed UART, SPI or I²C blocks, PIO uses small deterministic state machines that can generate or sample digital waveforms with precise timing.

RP2350 increases the count from two PIO blocks on RP2040 to three PIO blocks with 12 state machines total. PIO can implement protocols and timing engines that would otherwise require a dedicated peripheral, CPLD or carefully timed CPU code.

  • WS2812 / NeoPixel LED output
  • Custom serial protocols
  • VGA-style signalling
  • I²S and digital audio
  • Additional UART/SPI-style interfaces
  • Precise pulse generation and capture
  • Quadrature and protocol decoding
  • SD-card-style interfaces and other high-speed digital tasks

PIO is one reason the answer to ‘which pin can do this?’ is often ‘almost any sensible digital GPIO’ on Pico 2. PIO includes flexible internal pin mapping rather than requiring one fixed peripheral location.

USB: Device, Host and BOOTSEL

RP2350 includes a USB 1.1 controller and PHY with both device and host support. Pico 2 connects it to the Micro-USB socket.

In normal firmware, USB can provide CDC serial, HID, MIDI and other supported classes. In host mode the Pico 2 can communicate with USB devices, but host-mode power requires more care: Raspberry Pi specifies that Pico 2 must be provided with 5 V on VBUS for USB-host operation.

BOOTSEL Programming

  • Disconnect/depower the Pico 2.
  • Hold the BOOTSEL button.
  • Connect USB while continuing to hold BOOTSEL.
  • Release the button after the board enumerates.
  • A USB mass-storage device appears on the computer.
  • Copy the appropriate .uf2 firmware file to the drive.
  • Pico 2 writes the flash and reboots into the new firmware.

The USB boot code lives in RP2350 mask ROM, so a broken application cannot erase it. That makes Pico 2 unusually easy to recover compared with microcontroller boards that depend on a flash-resident bootloader.

BOOTSEL Is Not a GPIO-Strapping Problem

BOOTSEL is sometimes mistaken for an ESP32-style boot strap attached to one of the exposed GPIO pins. It is not. On the Pico 2 board, BOOTSEL is handled as a dedicated boot mechanism and does not require you to keep GPIO0, GPIO2 or another header GPIO at a particular state during normal startup.

That is why the Pico 2 ‘safe GPIO’ list is refreshingly simple: allocate GPIO0–22 as your project requires, reserve GPIO26–28 when you need ADC, and obey the voltage/electrical rules.

SWD Debugging

Debug signalPico 2 debug connector
SWCLKSWCLK
GNDGND
SWDIOSWDIO

Serial Wire Debug lets a debugger/programmer reset the RP2350, load firmware and inspect a running program. The original headerless Pico 2 exposes three debug pads/holes at the lower edge; some header-equipped versions use a small keyed debug connector.

A Raspberry Pi Debug Probe or another compatible SWD debugger is useful when projects become too complex for print statements and USB serial debugging.

Power Pins Explained

PinMeaningPractical use
VBUS — pin 40USB input voltage, nominal 5 VUSB power rail; not a GPIO supply level
VSYS — pin 391.8–5.5 V main system inputBattery/external supply input to board SMPS
3V3(OUT) — pin 36Regulated 3.3 V outputPower 3.3 V sensors and logic; Raspberry Pi recommends external load under 300 mA
3V3_EN — pin 37SMPS enablePull low to turn off 3.3 V rail and RP2350
ADC_VREF — pin 35ADC reference/supplyAnalogue reference; can be externally conditioned for precision
AGND — pin 33Analogue groundPreferred return for analogue sensor circuitry
RUN — pin 30RP2350 enable/resetShort low to reset the MCU

Pico 2 uses a buck-boost SMPS, which is why VSYS can operate across such a wide 1.8–5.5 V input range. That makes single-cell battery and multi-cell AA applications straightforward.

The board’s USB-to-VSYS path includes a Schottky diode. Raspberry Pi documents diode-OR and P-channel MOSFET arrangements for safely combining USB with an external power source instead of simply tying independent supplies together.

Onboard LED

On the non-wireless Pico 2, the onboard LED is connected internally to GPIO25. GPIO25 is not one of the 26 GPIO pins exposed on the main 40-pin header.

from machine import Pin
from time import sleep

led = Pin("LED", Pin.OUT)

while True:
    led.toggle()
    sleep(0.5)

Using the symbolic LED name is preferable when you want code that can also run on wireless Pico variants, because the LED implementation differs on W models.

MicroPython Setup

  • Download the current MicroPython UF2 for Raspberry Pi Pico 2 from Raspberry Pi/MicroPython.
  • Hold BOOTSEL while connecting Pico 2 by USB.
  • Copy the UF2 file to the mass-storage drive.
  • Open Thonny or another MicroPython editor/serial REPL.
  • Select the Pico 2 MicroPython interpreter/serial device.
  • Test with the onboard LED example.

MicroPython is the fastest route to a working Pico 2 project and is excellent for sensors, I²C displays, prototypes and teaching. C/C++ is a better fit when deterministic timing, maximum performance or direct SDK features matter.

Arduino IDE on Pico 2

Pico 2 can also be used from Arduino IDE through the widely used community Arduino-Pico core by Earle F. Philhower. The core supports both RP2040 and RP2350, including the Raspberry Pi Pico 2 target.

Add the following Boards Manager URL in Arduino IDE’s Additional Boards Manager URLs:

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  • Open Boards Manager and install the Raspberry Pi Pico/RP2040/RP2350 Arduino package.
  • Select Raspberry Pi Pico 2.
  • For the first upload, use BOOTSEL while connecting the board if required.
  • After a successful Arduino-Pico upload, normal auto-reset uploading is usually available while the firmware/USB connection remains responsive.
const int led = LED_BUILTIN;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  delay(500);
}

Pico 2 vs Pico 2 W Pinout

Pico 2 W keeps the same broad 40-pin compatibility concept, but the wireless board has internal differences because the radio subsystem and onboard LED are connected through the wireless hardware. Do not assume every internal GPIO detail from the non-wireless Pico 2 also applies to Pico 2 W.

For ordinary external GPIO, I²C, SPI, UART, ADC and power wiring, the Pico 2 W is deliberately designed to preserve Pico-family compatibility. For radio-specific or onboard-LED behaviour, use the Pico 2 W documentation.

Pico 2 vs Original Pico: Pin Compatibility

One of Raspberry Pi’s design goals was hardware and software compatibility with the original Pico. The non-wireless Pico 2 maintains the same 40-pin header layout, which makes it unusually easy to upgrade an existing RP2040 project.

FeatureOriginal Pico / RP2040Pico 2 / RP2350
Header format40-pin Pico layoutSame layout
Exposed GPIO2626
External ADC pins33
CPUDual Cortex-M0+ @ 133 MHzDual Cortex-M33 or Hazard3 @ 150 MHz
SRAM264 KB520 KB
Onboard flash2 MB4 MB
PIO2 blocks / 8 state machines3 blocks / 12 state machines
USBUSB 1.1 device/hostUSB 1.1 device/host
SecurityBasicTrustZone, secure boot features, OTP, SHA-256, TRNG

Recommended Pin Allocation for a Typical Project

Raspberry Pi Pico 2
├─ I2C sensors
│  ├─ GPIO0  SDA
│  └─ GPIO1  SCL
├─ SPI display / SD / peripheral
│  ├─ GPIO18 SCK
│  ├─ GPIO19 MOSI
│  ├─ GPIO16 MISO
│  └─ GPIO17 CS
├─ UART device
│  ├─ GPIO4 TX
│  └─ GPIO5 RX
├─ Analogue sensors
│  ├─ GPIO26 ADC0
│  ├─ GPIO27 ADC1
│  └─ GPIO28 ADC2
├─ General digital I/O
│  └─ GPIO2–15, GPIO20–22 as required
├─ Debug
│  └─ Separate SWD header
└─ Power
   ├─ 3V3(OUT) for 3.3 V sensors
   ├─ GND / AGND
   └─ VSYS for external board power

This is only one clean allocation. Pico 2’s peripheral multiplexing and PIO mean there are many equally valid layouts. The best pinout is the one that avoids physical crossing, preserves ADC pins if needed and keeps fast digital signals short and well-grounded.

Common Pico 2 Wiring Mistakes

MistakeWhy it causes problemsBetter approach
Feeding a GPIO with 5 VPico 2 I/O is fixed at 3.3 VLevel-shift or divide the signal
Driving GPIO26–28 while Pico 2 is offADC pads can leak into IOVDD railRemove the external drive or provide proper isolation
Confusing VSYS with a 3.3 V pinVSYS is the SMPS input and can be up to 5.5 VUse 3V3(OUT) for 3.3 V peripherals
Using VBUS as logic powerVBUS is nominal USB 5 VUse 3V3(OUT) unless the peripheral explicitly needs 5 V
No I²C pull-upsOpen-drain bus needs pull-upsUse appropriate pull-ups to 3.3 V
Powering a motor directly from GPIOGPIO cannot supply motor current or absorb inductive transientsUse driver/MOSFET/H-bridge and protection
Assuming ADC is precision 12-bit instrumentationReference/supply noise and offset matterCalibrate, average or use external reference/ADC
Treating E9 as a list of bad GPIO numbersE9 is an early-silicon pad behaviour issueRead E9 if weak pull-down/high-Z behaviour matters; A4 fixes it
Losing a broken firmware upload pathApplication USB can crashBOOTSEL ROM USB mode remains recoverable

Who Should Choose Pico 2?

  • You want a low-cost microcontroller with significantly more RAM than classic Arduino-class boards.
  • You need deterministic GPIO and programmable PIO rather than built-in wireless.
  • You want to learn Arm Cortex-M33 or experiment with RISC-V on the same RP2350 platform.
  • You need USB device or USB host support.
  • You are upgrading an existing original Pico design and want strong pin compatibility.
  • You want MicroPython for fast prototyping but also a serious C/C++ SDK when the project grows.
  • You need flexible battery input through the board’s 1.8–5.5 V VSYS power architecture.

When ESP32 Is the Better Choice

Pico 2 is a powerful microcontroller, but it does not have built-in Wi-Fi or Bluetooth. If the project is primarily about MQTT, ESPHome, Home Assistant, BLE or Wi-Fi connectivity, an ESP32 is normally the simpler choice.

If you like the RP2350 platform but need wireless, use Pico 2 W. If you need ESPHome’s mature device ecosystem and deep Home Assistant integration, ESP32 remains the natural fit.

For precise custom digital interfaces, PIO-heavy designs, USB devices or projects where you want to explore both Arm and RISC-V, Pico 2 has a very different and compelling set of strengths.

Final Recommendation

Raspberry Pi Pico 2 is one of the easiest modern microcontroller boards to allocate pins on because Raspberry Pi has kept the special board functions away from the main user GPIO header. You get 26 genuinely useful 3.3 V GPIOs, with GPIO26–28 adding ADC capability.

The essential safety rules are simple: do not feed 5 V into GPIO, pay extra attention to the ADC-pad restrictions on GPIO26–28, use the correct VBUS/VSYS/3V3 power pin, and use external drivers for loads that require real current.

For early A2 RP2350 silicon, also understand E9 if your circuit depends on high-impedance inputs or weak pull-downs. The later A4 stepping fixes that pad issue. For normal development, BOOTSEL gives you an almost impossible-to-brick USB recovery path, while SWD is available when you need real debugging.

Related Guides

Datasheets & External Resources

Share your love