• sales


Raspberry Pi Pico RP2040-GEEK User Guide



Official Resources

Raspberry Pi Official Datasheet

Raspberry Pi Open-source Demo

Development Software


RP2040-GEEK is a geeks development board designed by Waveshare, onboard USB-A interface, 1.14-inch LCD screen, TF card slot, and other peripherals. Provides different firmware for SWD port, UART port, and I2C port.


  • RP2040 microcontroller chip designed by Raspberry Pi in the United Kingdom.
  • Dual-core ARM Cortex M0+ processor, with a high operating frequency of up to 133MHz and flexible clock.
  • Built-in 264KB of SRAM and 4MB of onboard Flash.
  • Onboard 1.14-inch 240×135 pixel 65K color IPS LCD display.
  • Onboard 3PIN SWD port for connecting the debugged target board.
    • Standard CMSIS-DAP interface can be used to debug most ARM-based microcontrollers.
    • Works with OpenOCD and other tools supporting CMSIS-DAP.
    • Adopts the Raspberry Pi 3PIN Debug Connector Specification.
  • Onboard 3PIN USB to UART bridge.
  • Onboard 4PIN I2C port for the testing target board.
  • Equipped with plastic case and cables.
  • Open-source firmware, more convenient to upgrade.


Pico Quick Start

MicroPython Series

C/C++ Series

Arduino IDE Series

Install Arduino IDE

  1. Download the Arduino IDE installation package from Arduino website.

  2. Just click on "JUST DOWNLOAD".

  3. Click to install after downloading.
  4. Note: You will be prompted to install the driver during the installation process, we can click Install.

Install Arduino-Pico Core on Arduino IDE

  1. Open Arduino IDE, click the File on the left corner and choose "Preferences".

  2. Add the following link in the additional development board manager URL, then click OK.

    Note: If you already have the ESP8266 board URL, you can separate the URLs with commas like this:

  3. Click on Tools -> Dev Board -> Dev Board Manager -> Search for pico, it shows installed since my computer has already installed it.

Upload Demo At the First Time

  1. Press and hold the BOOTSET button on the Pico board, connect the Pico to the USB port of the computer via the Micro USB cable, and release the button when the computer recognizes a removable hard drive (RPI-RP2).

  2. Download the demo, open arduino\PWM\D1-LED path under the D1-LED.ino.
  3. Click Tools -> Port, remember the existing COM, do not need to click this COM (different computers show different COM, remember the existing COM on your computer).

  4. Connect the driver board to the computer with a USB cable, then click Tools -> Ports, select uf2 Board for the first connection, and after the upload is complete, connecting again will result in an additional COM port.

  5. Click Tool -> Dev Board -> Raspberry Pi Pico/RP2040 -> Raspberry Pi Pico.

  6. After setting, click the right arrow to upload.

    • If you encounter problems during the period, you need to reinstall or replace the Arduino IDE version, uninstall the Arduino IDE needs to be uninstalled cleanly, after uninstalling the software you need to manually delete all the contents of the folder C:\Users\[name]\AppData\Local\Arduino15 (you need to show the hidden files in order to see it) and then reinstall.

Pico-W Series Tutorial (To be continued...)

Open Source Demo

Sample Demo

C/C++ Demo


  1. It takes 2.5s to display a picture on the LCD.
  2. The example for LCD displaying the GUI.


  • This demo is based on the open-sourced picoprobe demo.
  • Run the picoprobe demo on the RP2040-GEEK, and it will analog a USB TO SWD and USB TO UART device.
  1. Use UART as the tool for USB to UART for communication with the device.
  2. Use the SWD interface as the debug tool for openocd to debug most of the arm chips.
  • For more information on how to use picoprobe, please refer to the following "picoprobe Tutorial".


  1. This demo repeatedly attempts to mount an SD card and read its root directory, with the option to get its runtime information using a USB serial port.

  • Note that the SD card file format is FAT32.

Micropython Demo


How to Use

1. Upload all py and BMP files to RP2040-GEEK via thonny.

Demo Effect

  • LCD displays the GUI, and then bmp picture after a few seconds.


How to Use

  • Upload all the py files to the RP2040-GEEK via thonny, and reset.

Demo Effect

  • After RP2040-GEEK resets, it will automatically mount the SD card to the sd file according to the "boot.py" demo.

  • Double-click the SD file folder and you can see the file stored on the SD card.

Picoprobe User Guide

Install OpenOCD

Linux (and Raspberry Pi)

Download the Dependency Library

sudo apt install automake autoconf build-essential texinfo libtool libftdi-dev libusb-1.0-0-dev

Get and Compile

git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1 --no-single-branch
cd openocd
make -j4
sudo make install


1. As OpenOCD self-compilation is complicated in the windows environment, it is recommended to use the already compiled version.
2. Unzip and store in a relatively short directory, e.g. directly in the C drive.

Add Environment Variables

1. Click the menu, and search "environment variables".

2. Click "Edit the system environment variables":

3. Double-click the "Path" variable, and then enter the edit interface.

4. Add a new path.

  • Create a new variable address.
  • Enter the OpenOCD storage address.
  • Click OK to save.
5. Click "OK" and save the change.

6. Reboot the computer.

Install GDB

Linux (and Raspberry Pi)

1. Install gdb-multiarch.
sudo apt install gdb-multiarch


1. If you have installed the related pico-sdk environment, you can skip this step as the GDB is included in Arm GNU Toolchain.
2. If you have not installed the related pico-sdk environment, it is recommended to install it with the official pico demo.

Program the Demo with Raspberry Pi Debug Probe

  • With Pico Debug Probe, you can load the binaries via the SWD port and OpenOCD.
  • You do not need to unplug and hold the BOOTSEL button every time you push a new binary to Pico.
1. Take RP2040 usage as an example, the commands for programming the demo:
sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000" -c "p​​rogram {your elf file name}.elf verify reset exit"
2. If there is a blink.elf file in your current file folder.
sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000" -c "p​​rogram blink.elf verify reset exit"

Debug the Demo with Raspberry Pi Debug Probe

Open OpenOCD Server

  • You can let openocd be used in server mode and connect to GDB, thus providing you with breakpoints and "correct" debugging.
1. Here is also an example of debugging the rp2040 by entering the following command:
sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"
  • Take using PowerShell in windows as an example:

2. *If you start listening on the local 3333 port at this point, the OpenOCD server has been successfully turned on.

Use GDB Command Line

  • This demo is set up based on pico-sdk, and pico-example was compiled.
1. Open PowerShell and enter the corresponding "build" file folder, take the blink demo as an example.

2. Open GBD and enter the following commands:
  • If it is windows, you can input the following commands:
arm-none-eabi-gdb blink.elf
  • If it is Linux, you can input the following commands:
gdb blink.elf

3. Input the following commands in order:
target remote localhost:3333
monitor reset init

  • You can see Pico executes blink, and LED blinks.

Use VSCode to Debug (Advanced)

  • Please make sure that the #Open OpenOCD Server and the #Use GDB Command Line are running properly.
  • Please make sure the Pico compilation environment is set up normally.
  • Please make sure your VSCode can install the following plug-in.
1. Cortex-Debug ()
2. Cmake-tools
3. C/C++

1. First, open the OpenOCD server:

2. Use VSC to open the pico-example file folder and open the blink demo.
3. Use F1 to input the following commands:

open 'launch.json'

4. Put the following content in after opening. 

  • If it is Windows, please input:
    "version": "0.2.0",
    "configurations": [
            "name": "Pico Debug",
            "cwd": "${workspaceRoot}",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "servertype": "external",
            // This may need to be arm-none-eabi-gdb depending on your system
            "gdbPath" : "gdb",
            // Connect to an already running OpenOCD instance
            "gdbTarget": "localhost:3333",
            "svdFile": "${env:PICO_SDK_PATH}/src/rp2040/hardware_regs/rp2040.svd",
            "runToMain": true,
            // Work around for stopping at main on restart
            "postRestartCommands": [
                "break main",
  • If it is a Linux system, please input:
    "version": "0.2.0",
    "configurations": [
            "name": "Pico Debug",
            "cwd": "${workspaceRoot}",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "servertype": "external",
            // This may need to be arm-none-eabi-gdb depending on your system
            "gdbPath" : "arm-none-eabi-gdb",
            // Connect to an already running OpenOCD instance
            "gdbTarget": "localhost:3333",
            "svdFile": "${env:PICO_SDK_PATH}/src/rp2040/hardware_regs/rp2040.svd",
            "runToMain": true,
            // Work around for stopping at main on restart
            "postRestartCommands": [
                "break main",
  • The difference between them is the gdb calls are different.

5. Enter the run and debug interface shortcut key Ctrl + Shift + D.

  • Select Pico Debug as the debugger.
  • Select CMake as the debug mode.
  • Start to debug the key, the shortcut key F5.
  • Choose the debug object as blink.

6. Click debug key to enter the debug mode, the shortcut key is F5.

7. The Debug Tools show:

  • Restart the device.
  • Continue to run the demo.
  • Execute.
  • Enter the function to run.
  • Jumping out of function runs.
  • Stop debugging.

8. Continue to run the demo, press F5 and you can see Pico runs the blink demo.