Raspberry Pi Pico
Revision as of 15:02, 20 May 2022 by Blwikiadmin (talk | contribs) (→Running PicoMite (MaxiMite) BASIC (VGA, PS/2))
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
Repositories
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 Raspberry Pi Pico
- All Pico pins brought to Male Header pins
- Power/Ground distribution
- 5V jack
- VSYS connection with Schottky diode
- Can by Mounted on ODAS Adapter card
Cut Etch / Add wires
- Cut etch from + near jack to board side + 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
Schematic Symbol
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 |
Interesting Applications
Running PicoMite (MaxiMite) BASIC
- Two versions
- VGA, PS/2 version
- USB-Serial with SD Card
Running PicoMite (MaxiMite) BASIC (VGA, PS/2)
The PicoMiteVGA is a Raspberry Pi Pico with VGA output, PS2 keyboard input, SD card storage and running the free MMBasic interpreter.
Configuration
OPTION KEYBOARD US OPTION SDCARD GP13, GP10, GP11, GP12 OPTION AUDIO GP6, GP7 OPTION COLOURCODE ON
Running PicoMite (MaxiMite) BASIC (USB-Serial)
- Incompatible connections to SD Card from VGA version
- VGA version does everything this version does since it can be run via the USB console
- "Boot to MM BASIC" on the Raspberry Pi Pico with VGA
- BASIC Interpreter for the Raspberry Pi Pico - USB
- SD Card Connections
PicoMite SD Card Wiring
- Install NO5V jumper
SD_Socket | PIN | SD-J1 | Pi-Pico | Pico-Pin | Colour |
---|---|---|---|---|---|
3 | GND | 1 | GND | GND | BLK |
7 | MISO | 2 | GPIO16 | 21 | BRN |
5 | SCLK | 3 | GPIO18 | 24 | ORA |
2 | MOSI | 4 | GPIO19 | 25 | YEL |
1 | SLV SEL | 5 | GPIO22 | 29 | WHT |
4 | VCC | 7 | 3.3V | N/C | |
6 | GND | N/C | GND |
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 VGA
Hardware Design Guide Section 3.2