Raspberry Pi Pico is a small, inexpensive development board with the RP2040 microcontroller – the first chip Raspberry Pi designed in-house. It has two cores, plenty of peripherals and, above all, PIO, which lets you build interfaces the chip doesn’t otherwise have. You program it over USB by dragging and dropping a UF2 file, no programmer needed.
Specifications
- RP2040: 2× Arm Cortex-M0+ up to 133 MHz
- 264 kB SRAM, 2 MB flash on the board
- 26 GPIO with 3.3 V logic, 3 of them with a 12-bit ADC
- 2× UART, 2× SPI, 2× I2C, 16 PWM channels, 8 PIO state machines
- USB 1.1 (host and device), micro USB connector
- 1.8–5.5 V power via VSYS, onboard LED on GP25
- 21 × 51 mm, castellated pads on the edge – the board can be soldered directly onto a PCB
Besides the basic version, there is the Pico H with soldered headers and a debug connector, the Pico W with Wi-Fi and Bluetooth, and the successor Pico 2 with the RP2350 chip.
You can program it in MicroPython, CircuitPython, C/C++ (Pico SDK) or the Arduino IDE.
Pinout and pin table
Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.
| Pin | Name | Direction | UART | I2C | SPI | PWM | ADC | Note |
|---|---|---|---|---|---|---|---|---|
| 1 | GP0 | input/output | UART0 TX | I2C0 SDA | SPI0 RX | PWM0 A | ||
| 2 | GP1 | input/output | UART0 RX | I2C0 SCL | SPI0 CSn | PWM0 B | ||
| 3 | GND | – | ||||||
| 4 | GP2 | input/output | UART0 CTS | I2C1 SDA | SPI0 SCK | PWM1 A | ||
| 5 | GP3 | input/output | UART0 RTS | I2C1 SCL | SPI0 TX | PWM1 B | ||
| 6 | GP4 | input/output | UART1 TX | I2C0 SDA | SPI0 RX | PWM2 A | ||
| 7 | GP5 | input/output | UART1 RX | I2C0 SCL | SPI0 CSn | PWM2 B | ||
| 8 | GND | – | ||||||
| 9 | GP6 | input/output | UART1 CTS | I2C1 SDA | SPI0 SCK | PWM3 A | ||
| 10 | GP7 | input/output | UART1 RTS | I2C1 SCL | SPI0 TX | PWM3 B | ||
| 11 | GP8 | input/output | UART1 TX | I2C0 SDA | SPI1 RX | PWM4 A | ||
| 12 | GP9 | input/output | UART1 RX | I2C0 SCL | SPI1 CSn | PWM4 B | ||
| 13 | GND | – | ||||||
| 14 | GP10 | input/output | UART1 CTS | I2C1 SDA | SPI1 SCK | PWM5 A | ||
| 15 | GP11 | input/output | UART1 RTS | I2C1 SCL | SPI1 TX | PWM5 B | ||
| 16 | GP12 | input/output | UART0 TX | I2C0 SDA | SPI1 RX | PWM6 A | ||
| 17 | GP13 | input/output | UART0 RX | I2C0 SCL | SPI1 CSn | PWM6 B | ||
| 18 | GND | – | ||||||
| 19 | GP14 | input/output | UART0 CTS | I2C1 SDA | SPI1 SCK | PWM7 A | ||
| 20 | GP15 | input/output | UART0 RTS | I2C1 SCL | SPI1 TX | PWM7 B | ||
| 21 | GP16 | input/output | UART0 TX | I2C0 SDA | SPI0 RX | PWM0 A | ||
| 22 | GP17 | input/output | UART0 RX | I2C0 SCL | SPI0 CSn | PWM0 B | ||
| 23 | GND | – | ||||||
| 24 | GP18 | input/output | UART0 CTS | I2C1 SDA | SPI0 SCK | PWM1 A | ||
| 25 | GP19 | input/output | UART0 RTS | I2C1 SCL | SPI0 TX | PWM1 B | ||
| 26 | GP20 | input/output | UART1 TX | I2C0 SDA | SPI0 RX | PWM2 A | ||
| 27 | GP21 | input/output | UART1 RX | I2C0 SCL | SPI0 CSn | PWM2 B | ||
| 28 | GND | – | ||||||
| 29 | GP22 | input/output | UART1 CTS | I2C1 SDA | SPI0 SCK | PWM3 A | ||
| 30 | RUN | input | Reset – connecting to GND restarts the chip | |||||
| 31 | GP26 | input/output | UART1 CTS | I2C1 SDA | SPI1 SCK | PWM5 A | ADC0 | |
| 32 | GP27 | input/output | UART1 RTS | I2C1 SCL | SPI1 TX | PWM5 B | ADC1 | |
| 33 | AGND | – | Analog ground for the ADC (GP26–28) | |||||
| 34 | GP28 | input/output | UART0 TX | I2C0 SDA | SPI1 RX | PWM6 A | ADC2 | |
| 35 | ADC_VREF | input/output | ADC reference (can also be external) | |||||
| 36 | 3V3(OUT) | output | 3.3 V output, max. load ~300 mA | |||||
| 37 | 3V3_EN | input | Connect to GND to turn off the 3.3 V supply | |||||
| 38 | GND | – | ||||||
| 39 | VSYS | input | Power input 1.8–5.5 V | |||||
| 40 | VBUS | output | 5 V from USB (only when USB is connected) | |||||
| SWD | SWCLK | input | Debugging (SWD) – clock | |||||
| SWD | GND | – | ||||||
| SWD | SWDIO | input/output | Debugging (SWD) – data |
Pins used on the board
These chip pins are used by parts on the board and are not broken out:
| Pin | Function on the board |
|---|---|
| GP23 | Power converter mode control (SMPS PS) |
| GP24 | VBUS detection (is USB connected?) |
| GP25 | Onboard LED |
| GP29 | ADC3 – measures VSYS/3 |
What to watch out for
- GPIO are not 5V tolerant. Use a level shifter for 5V signals.
- ADC is only on GP26–28 (ADC0–2), range 0–3.3 V. ADC3 internally measures VSYS/3.
- UART, I2C and SPI can be routed to several different pins – the table shows all options.
- Don’t draw more than about 300 mA from the 3V3(OUT) pin.
- The onboard LED is on GP25. On the Pico W it is elsewhere – on a GPIO of the Wi-Fi chip.
Raspberry Pi Pico projects on chiptron.eu/
The Pico has appeared in a number of projects on chiptron.eu/:
- Picogame – a 2D game engine for CircuitPython on RP2040 and RP2350
- Scoppy – turn a Pico and a phone into a portable oscilloscope and logic analyzer
- 100 IoT projects in 100 days – ready-made MicroPython projects, many of them for the Pico
More pinouts
See all pinouts on the Pinouts page.