Raspberry Pi Pico pinout

A small, low-cost board with the Raspberry Pi RP2040 chip. 3.3 V logic (not 5 V tolerant), breadboard friendly, and flashed by dragging a file onto it.

Raspberry Pi Pico pinoutRP2040GP0UART0_TXGP1UART0_RXGNDGNDGP2UART0_CTSGP3UART0_RTSGP4I2C_SDAGP5I2C_SCLGNDGNDGP6UART1_CTSGP7UART1_RTSGP8UART1_TXGP9UART1_RXGNDGNDGP10UART1_CTSGP11UART1_RTSGP12UART0_TXGP13UART0_RXGNDGNDGP14UART0_CTSGP15UART0_RTSGP16SPI_MISOGP17SPI_CSGNDGNDGP18SPI_SCKGP19SPI_MOSIGP20UART1_TXGP21UART1_RXGNDGNDGP22UART1_CTSRUNRESETGP26ADC0GP27ADC1AGNDGNDGP28ADC2ADC_VREFADC_VREF3V3(OUT)3V3_OUT3V3_EN3V3_ENGNDGNDVSYSVSYSVBUSVBUSSWCLKSWD_CLKGNDGNDSWDIOSWD_IO
Top view, USB connector on the left. Colors: red power, grey ground, green GPIO, yellow analog, orange USB serial, blue I2C.
BoardPilot showing the Raspberry Pi Pico in 3D
Try it live

The real app with a simulated Raspberry Pi Pico, running in your browser. No install, nothing to plug in.

At a glance

Chip
RP2040
Processor
Dual-core Arm Cortex-M0+ at 133 MHz, 264 KB SRAM, 2 MB flash
Logic level
3.3 V. Not 5 V tolerant unless marked below.
Flashing tool
picotool (UF2)
Arduino board (FQBN)
rp2040:rp2040:rpipico
Live pin view in BoardPilot
Yes (diagnostic agent available)

Pins to avoid or use with care

Debug port: SWCLK, SWDIO

SWD/JTAG. Using them can stop a debugger from reaching the chip.

Good pins for LEDs, buttons and signals

GP15, GP14, GP13, GP12, GP11, GP10, GP22, GP21, GP20, GP6, GP7, GP2, GP3

Default pins in Arduino

I2C
SDA = GP4, SCL = GP5. Only these pins work with the Wire library defaults. Only certain pin pairs can be I2C on this chip, and SDA and SCL cannot be swapped in software. Wire uses GP4 (SDA) and GP5 (SCL); Wire.setSDA()/Wire.setSCL() before Wire.begin() can move I2C0 to GP0/GP1, GP8/GP9, GP12/GP13, GP16/GP17 or GP20/GP21. Wire1 defaults to GP26/GP27.
SPI
MOSI = GP19, MISO = GP16, SCK = GP18, CS = GP17.
Analog inputs
GP26, GP27, GP28 (0–3.3 V)

How to flash it

If the board is not found, hold the BOOTSEL button while plugging in the USB cable.

All 43 pins

PinGPIOChip pinFunctionsNotes
GP00GPIO, UART0_TX, SPI0_MISO, I2C0_SDA, PWM0_A, Serial1_TX
GP11GPIO, UART0_RX, SPI0_CS, I2C0_SCL, PWM0_B, Serial1_RX
GND—GND
GP22GPIO, UART0_CTS, SPI0_SCK, I2C1_SDA, PWM1_A
GP33GPIO, UART0_RTS, SPI0_MOSI, I2C1_SCL, PWM1_B
GP44GPIO, I2C_SDA (default), UART1_TX, SPI0_MISO, I2C0_SDA, PWM2_A
GP55GPIO, I2C_SCL (default), UART1_RX, SPI0_CS, I2C0_SCL, PWM2_B
GND—GND
GP66GPIO, UART1_CTS, SPI0_SCK, I2C1_SDA, PWM3_A
GP77GPIO, UART1_RTS, SPI0_MOSI, I2C1_SCL, PWM3_B
GP88GPIO, UART1_TX, SPI1_MISO, I2C0_SDA, PWM4_A, Serial2_TX
GP99GPIO, UART1_RX, SPI1_CS, I2C0_SCL, PWM4_B, Serial2_RX
GND—GND
GP1010GPIO, UART1_CTS, SPI1_SCK, I2C1_SDA, PWM5_A
GP1111GPIO, UART1_RTS, SPI1_MOSI, I2C1_SCL, PWM5_B
GP1212GPIO, UART0_TX, SPI1_MISO, I2C0_SDA, PWM6_A
GP1313GPIO, UART0_RX, SPI1_CS, I2C0_SCL, PWM6_B
GND—GND
GP1414GPIO, UART0_CTS, SPI1_SCK, I2C1_SDA, PWM7_A
GP1515GPIO, UART0_RTS, SPI1_MOSI, I2C1_SCL, PWM7_B
GP1616GPIO, SPI_MISO (default), UART0_TX, SPI0_MISO, I2C0_SDA, PWM0_A
GP1717GPIO, SPI_CS (default), UART0_RX, SPI0_CS, I2C0_SCL, PWM0_B
GND—GND
GP1818GPIO, SPI_SCK (default), UART0_CTS, SPI0_SCK, I2C1_SDA, PWM1_A
GP1919GPIO, SPI_MOSI (default), UART0_RTS, SPI0_MOSI, I2C1_SCL, PWM1_B
GP2020GPIO, UART1_TX, SPI0_MISO, I2C0_SDA, PWM2_A
GP2121GPIO, UART1_RX, SPI0_CS, I2C0_SCL, PWM2_B
GND—GND
GP2222GPIO, UART1_CTS, SPI0_SCK, I2C1_SDA, PWM3_A
RUN—RESETReset pin. Connect it to GND for a moment to restart the board. It has an internal pull-up.
GP2626GPIO, ADC0, UART1_CTS, SPI1_SCK, I2C1_SDA, PWM5_A, Wire1_SDAAnalog input ADC0 (0 to 3.3 V). Never put more than 3.3 V on this pin.
GP2727GPIO, ADC1, UART1_RTS, SPI1_MOSI, I2C1_SCL, PWM5_B, Wire1_SCLAnalog input ADC1 (0 to 3.3 V). Never put more than 3.3 V on this pin.
AGND—GND, ADC_GNDAnalog ground for GP26 to GP28. Use it as the ground for analog sensors.
GP2828GPIO, ADC2, UART0_TX, SPI1_MISO, I2C0_SDA, PWM6_AAnalog input ADC2 (0 to 3.3 V). Never put more than 3.3 V on this pin.
ADC_VREF—ADC_VREFReference voltage for the analog inputs (filtered 3.3 V). Do not power parts from it.
3V3(OUT)—3V3_OUT3.3 V output for sensors and modules. Keep the load under 300 mA.
3V3_EN—3V3_ENTurns the 3.3 V supply on or off. Leave it unconnected; connecting it to GND switches the board off.
GND—GND
VSYS—VSYSMain power input (1.8 to 5.5 V). From USB it is about 4.7 V (5 V minus a diode drop).
VBUS—VBUS5 V straight from the USB cable. It is 0 V when USB is not plugged in.
SWCLK—SWD_CLKDebug clock for a debug probe (SWD). Not a GPIO.
GND—GNDGround pin of the 3-pin debug header.
SWDIO—SWD_IODebug data for a debug probe (SWD). Not a GPIO.

Questions

Which pins are I2C on the Raspberry Pi Pico?

SDA is GP4 and SCL is GP5 (the defaults of the Arduino Wire library). Only certain pins support I2C in hardware, so use these unless you know your core allows others.

Which Raspberry Pi Pico pins should I avoid?

SWCLK, SWDIO (debug port).

Is the Raspberry Pi Pico 5 V tolerant?

No. The pins take at most 3.3 V. Use a level shifter or a voltage divider for 5 V signals.

Which pins can read analog voltage on the Raspberry Pi Pico?

GP26, GP27, GP28, from 0 to 3.3 V.

How do I upload code to the Raspberry Pi Pico?

In the Arduino IDE pick the board rp2040:rp2040:rpipico (core rp2040:rp2040). If the board is not found, hold the BOOTSEL button while plugging in the USB cable.

Wiring guides for the Raspberry Pi Pico

Step-by-step wiring, voltage checks and test code for the most used parts:

Compare

Learn the basics

Check your wiring with BoardPilot

BoardPilot shows this board in 3D, flags risky pins as you wire, and flashes it safely with a backup first.

Download BoardPilot

Sources

← All boards