Overview
The Raspberry Pi Pico 2 is a powerful, low-cost microcontroller board built on the RP2350 chip designed by Raspberry Pi. It features a dual-core Arm Cortex-M33 processor running at up to 150 MHz, 520 KB of on-chip SRAM, and 4 MB of onboard QSPI flash memory — a major step up from the original Pico. Our ShillehTek version ships with pre-soldered headers and a USB-C connector, so you can plug it in and start coding immediately.
With 26 multifunction GPIO pins (including 3 analog inputs), 2× UART, 2× SPI, 2× I2C, and 24 PWM channels, the Pico 2 is ideal for anything from simple blink-an-LED projects to complex robotics, data logging, and real-time sensor systems. It works with MicroPython, CircuitPython, the Arduino IDE, and the official C/C++ Pico SDK — whatever your preferred environment is.
Because the Pico 2 is the non-wireless variant, it's a great choice for projects where you need reliable computing and I/O but don't need WiFi or Bluetooth. If you do need wireless connectivity, check out our Pico 2W with Pre-Soldered Headers.
At a Glance
Specifications
| Parameter | Value |
| Microcontroller | Raspberry Pi RP2350 (dual Arm Cortex-M33 or RISC-V Hazard3) |
| Clock Speed | Up to 150 MHz |
| SRAM | 520 KB on-chip |
| Flash | 4 MB QSPI |
| Input Voltage (VSYS) | 1.8V - 5.5V |
| GPIO Logic Level | 3.3V |
| GPIO Pins | 26 multifunction pins |
| ADC Channels | 3 × 12-bit ADC (GP26, GP27, GP28) + internal temperature sensor |
| Communication | 2 × UART, 2 × SPI, 2 × I2C, 24 × PWM channels |
| PIO | 3 × PIO blocks with 12 state machines |
| USB | USB-C 1.1 host and device (presoldered USB-C) |
| Onboard LED | User LED on GP25 |
| Dimensions | 21 × 51 mm |
| Headers | Pre-soldered 2.54 mm male headers |
Pinout Diagram
Wiring Guide
Powering the Pico 2
You have three ways to power the Pico 2: USB-C (most common), an external supply on VSYS, or regulated 3.3V directly on 3V3. The onboard buck-boost regulator accepts 1.8V to 5.5V on VSYS, making the board happy with anything from a LiPo to a USB power bank.
| Pin | Role | Details |
|---|---|---|
| VBUS | +5V from USB | Only live when USB-C is connected |
| VSYS | Main input | 1.8V to 5.5V (LiPo, power bank, battery) |
| 3V3 (OUT) | Regulated 3.3V output | Use to power 3.3V peripherals, max ~300mA |
| 3V3_EN | Regulator enable | Pull to GND to shut down the board |
| GND | Ground | Multiple GND pins around the board |
External LED Wiring
Pico 2 GPIO outputs 3.3V logic. For a basic blink project, connect an LED through a 330 Ω current-limiting resistor. The onboard user LED on GP25 also works with no wiring required.
| Component | Pico 2 Pin |
|---|---|
| LED anode (+) | GP15 (via 330 Ω resistor) |
| LED cathode (−) | GND |
I2C Sensor Wiring
The Pico 2 has two I2C blocks. I2C0 defaults to GP4 (SDA) and GP5 (SCL), and I2C1 defaults to GP14 (SDA) and GP15 (SCL) — but almost any GPIO pair can be remapped to I2C.
| Sensor Pin | Pico 2 Pin | Details |
|---|---|---|
| VCC | 3V3 (OUT) | For 3.3V sensors; use VBUS for 5V sensors |
| GND | GND | |
| SDA | GP4 (I2C0) | |
| SCL | GP5 (I2C0) |
SPI Module Wiring
The Pico 2 has two SPI blocks. SPI0 defaults to GP16 (RX/MISO), GP17 (CSn), GP18 (SCK), and GP19 (TX/MOSI). These are the typical pins used in most Pico tutorials and libraries.
| Module Pin | Pico 2 Pin |
|---|---|
| VCC | 3V3 (OUT) or VBUS (5V) |
| GND | GND |
| MOSI | GP19 |
| MISO | GP16 |
| SCK | GP18 |
| CS | GP17 |
Code Examples
MicroPython — Blink the Onboard LED
# Raspberry Pi Pico 2 - MicroPython Blink Example
# Blinks the onboard LED on GP25
from machine import Pin
import time
led = Pin(25, Pin.OUT)
while True:
led.value(1)
time.sleep(0.5)
led.value(0)
time.sleep(0.5)
MicroPython — Read the Onboard Temperature Sensor
# Raspberry Pi Pico 2 - Read the internal temperature sensor
# The RP2350 has a built-in temperature sensor on ADC channel 4
from machine import ADC
import time
sensor_temp = ADC(4)
conversion_factor = 3.3 / 65535
while True:
reading = sensor_temp.read_u16() * conversion_factor
# Formula from the RP2350 datasheet
temperature = 27 - (reading - 0.706) / 0.001721
print("Temperature: {:.2f} C".format(temperature))
time.sleep(1)
CircuitPython — Blink
# Raspberry Pi Pico 2 - CircuitPython Blink Example
# Flash the latest CircuitPython .uf2 first, then save this as code.py
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
Arduino IDE
// Raspberry Pi Pico 2 - Arduino IDE Blink Example
// Install "Raspberry Pi Pico/RP2040/RP2350" board package by Earle Philhower
// Select: Tools > Board > Raspberry Pi Pico 2
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("LED ON");
delay(500);
digitalWrite(LED_BUILTIN, LOW);
Serial.println("LED OFF");
delay(500);
}
C/C++ Pico SDK
// Raspberry Pi Pico 2 - Pico SDK Blink Example
// Build with the official pico-sdk (>= 2.0.0 for RP2350 support)
#include "pico/stdlib.h"
int main() {
const uint LED_PIN = 25;
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
while (true) {
gpio_put(LED_PIN, 1);
sleep_ms(500);
gpio_put(LED_PIN, 0);
sleep_ms(500);
}
}