From Waveshare Wiki
Revision as of 10:38, 8 September 2023 by Eng52 (talk | contribs) (→‎FAQ)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search







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.


RP2-4- geek 09.jpg

Pico Quick Start

Download Firmware

  • MicroPython Firmware Download

MicroPython Firmware Download.gif

  • C_Blink Firmware Download

C Blink Download.gif

Video Tutorial

  • Pico Tutorial I - Basic Introduction

  • Pico Tutorial II - GPIO

  • Pico Tutorial III - PWM

  • Pico Tutorial IV - ADC

  • Pico Tutorial V - UART

  • Pico Tutorial VI - To be continued...

Text Tutorial


MicroPython Series

C/C++ Series

Arduino IDE Series

Install Arduino IDE

  1. Download the Arduino IDE installation package from Arduino website.
    RoArm-M1 Tutorial II01.jpg
  2. Just click on "JUST DOWNLOAD".
    Arduino IDE Pico.png
  3. Click to install after downloading.
    RoArm-M1 Tutorial II02.gif
  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".
    RoArm-M1 Tutorial04.jpg
  2. Add the following link in "Additional boards manager URLs", then click OK.

    RoArm-M1 Tutorial II05.jpg
    Note: If you already have the ESP32 board URL, you can separate the URLs with commas like this:

  3. Click on Tools -> Board -> Board Manager -> Search for pico, it shows installed since my computer has already installed it.
    Pico Get Start 05.png
    Pico Get Start 06.png

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).
    Pico Get Start.gif
  2. Download the demo, open the D1-LED.ino under arduino\PWM\D1-LED path.
  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).
    UGV1 doenload02EN.png
  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.
    UGV1 doenload03EN.png
  5. Click Tools -> Board -> Raspberry Pi Pico/RP2040 -> Raspberry Pi Pico.
    Pico Get Start02.png
  6. After setting, click the right arrow to upload.
    Pico Get Start03.png
    • If you encounter problems during the period, you need to reinstall or replace the Arduino IDE version, uninstall the Arduino IDE clean, 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.

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".

Raspberry Pi Debug Probe05.jpg

2. Click "Edit the system environment variables":

Raspberry Pi Debug Probe06.jpg

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

Raspberry Pi Debug Probe07.jpg

4. Add a new path.

Raspberry Pi Debug Probe08.jpg

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

Raspberry Pi Debug Probe09.jpg

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:

Raspberry Pi Debug Probe010.jpg

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.

Raspberry Pi Debug Probe011.jpg

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

Raspberry Pi Debug Probe012.jpg

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

Raspberry Pi Debug Probe013.jpg

  • 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:
Raspberry Pi Debug Probe010.jpg
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. Raspberry Pi Debug Probe014.jpg

  • 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.
Raspberry Pico Debug Probe07.jpg

  • ①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.
Raspberry Pi Debug probe90.jpg
7. The Debug Tools show:
Raspberry Pi Debug Probe91.jpg

  • ①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.




Official Resources

Raspberry Pi Official Datasheet

Raspberry Pi Open-source Demo

Development Software


Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)