Raspberry Pi Pico
Contents
Raspberry Pi Pico Features
Raspberry Pi Pico is a low-cost, high-performance microcontroller board with flexible digital interfaces. Key features include:
- RP2040 microcontroller chip designed by Raspberry Pi in the United Kingdom
- Dual-core Arm Cortex M0+ processor, flexible clock running up to 133 MHz
- 264KB of SRAM, and 2MB of on-board Flash memory
- Castellated module allows soldering direct to carrier boards
- USB 1.1 with device and host support
- Low-power sleep and dormant modes
- Drag-and-drop programming using mass storage over USB
- 26 × multi-function GPIO pins
- 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC, 16 × controllable PWM channels
- Accurate clock and timer on-chip
- Temperature sensor
- Accelerated floating-point libraries on-chip
- 8 × Programmable I/O (PIO) state machines for custom peripheral support
Pinout
Reference Documents
- Raspberry Pi Pico data sheet
- RP2040 Datasheet
- Hardware Design Guide
- Getting started with Raspberry Pi Pico - C/C++ development with Raspberry Pi Pico and other RP2040-based microcontroller boards
- Raspberry Pi Pico C/C++ SDK
- Raspberry Pi Pico Python SDK
Adapter Cards
In Small Plastic Project Box
- Fits in 100x60x25mm Project Box
- Socketed Pico
- All Pico pins brought to Male Header pins
- Power/Ground distribution
- 5V jack
- Can by Mounted on ODAS Adapter card
Cut Etch / Add wires
- Cut etch from + near jack to board sude + connections
- Verify cut with jumper (center pin power jack to + on both sides)
- Add TIE - jumper to ties grounds on both sides together
- Add Power jumper between the two sides
- Add Ground connection Pico pin 38 to - hole near strip
- Add 3.3V Power connection Pico pin 36 to + hole near strip on other side
Pin Table
Pico Pin | BB Pin | Signal | Pico Pin | BB Pin | Signal | |
---|---|---|---|---|---|---|
1 | 30 | GP0 | 40 | 30 | VUSB | |
2 | 29 | GP1 | 39 | 29 | VSYS | |
3 | 28 | GND | 38 | 28 | GND | |
4 | 27 | GP2 | 37 | 27 | 3V3EN | |
5 | 26 | GP3 | 36 | 26 | 3V3OUT | |
6 | 25 | GP4 | 35 | 25 | ADCVREF | |
7 | 24 | GP5 | 34 | 24 | GP28 | |
8 | 23 | GND | 33 | 23 | GND | |
9 | 22 | GP6 | 32 | 22 | GP27 | |
10 | 21 | GP7 | 31 | 21 | GP26 | |
11 | 20 | GP8 | 30 | 20 | RUN | |
12 | 19 | GP9 | 29 | 19 | GP22 | |
13 | 18 | GND | 28 | 18 | GND | |
14 | 17 | GP10 | 27 | 17 | GP21 | |
15 | 16 | GP11 | 26 | 16 | GP20 | |
16 | 15 | GP12 | 25 | 15 | GP19 | |
17 | 14 | GP13 | 24 | 14 | GP18 | |
18 | 13 | GND | 23 | 13 | GND | |
19 | 12 | GP14 | 22 | 12 | GP17 | |
20 | 11 | GP15 | 21 | 11 | GP16 |
PiPico-01 Card
- PiPico-01 Card - Our design
Interesting Applications
Running RP2040 Doom
Running MicroPython
- MicroPython page
- Raspberry Pi Pico with MicroPython
- Python SDK
- Quick MicroPython reference for the RP2
- RP2 Python Library Modules
- Card has 264KB of SRAM
- Free memory under MicroPython plus various module sizes
>>> import gc >>> gc.mem_free() 182624 >>> import time >>> gc.mem_free() 178544 >>> import machine >>> gc.mem_free() 174304 >>>
- To compare QT Py has 19KB free
I2C Scanner
import machine
- Create I2C object
i2c = machine.I2C(0, scl=machine.Pin(17), sda=machine.Pin(16)) # Print out any addresses found devices = i2c.scan() if devices: for d in devices: print(hex(d))
Python File System
- Internal Flash File System
- Little FS
- 1.44MB space
- Blocks are 4KB
- 352 Blocks on Internal File System
- os functions
import os os.[TAB] os.dir() os.mkdir("newdir") os.getcwd() os.mkdir("newdir") os.chdir('..') os.listdir() os.statvfs('/') os.uname() os.remove('file2remove') os.rename('old','new')
- Using files
f = open('filename','w') f.write('data to add') f.read() f.close()
Running MM BASIC
Running VGA
Hardware Design Guide Section 3.2