RP2040-Plus
| ||
| ||
Overview
Need more Flash for Raspberry Pi Pico? Dislike the outdated Micro USB connector? All their problems are solved by our RP2040-Plus now.
As same as Raspberry Pi Pico, it incorporates the RP2040 microcontroller, with a dual-core Arm Cortex M0+ processor running up to 133 MHz, and 26x multi-function GPIO pins.
What's different, it features an onboard 4MB Flash, USB-C connector, recharge header, and higher current DC-DC chip.
Specification
- 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 4MB/16MB (optional) of onboard Flash memory.
- USB-C connector, keeps it up to date, easier to use.
- Lithium battery recharge/discharge header, suitable for mobile devices.
- Onboard DC-DC chip TPS63000, high-efficiency DC-DC buck-boost chip, 1.8A current switch.
- The castellated module allows soldering directly 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.
Pinouts
Dimension
Notice
RP2040-Plus uses the same RP2040 chip as the Raspberry Pi Pico, and it is compatible with the Raspberry Pi Pico, in this case, most of the accessories and codes can be used with the RP2040-LCD-0.96 as well.
Software Setup
Please follow the guides of Raspberry Pi to install and set up Pico for the Pico.
For easy use, we recommend you use the Thonny tool.
- Thonny website
- Please set the Thonny development environment to be RaspberryPi when setting.
- Configure the Micrpython environment and select the Pico port.
- First, connect the Raspberry Pi Pico to your computer, left click on the Configure environment option in the lower right corner of the Thonny --> Select Configure interpreter.
- In the pop-up window, select MicroPython (Raspberry Pi Pico), and select the corresponding port.
- Click OK and then back to Thonny, download the firmware library to the Pico. Then click Stop, and you can see the current environment in the Shell window.
- How to download the firmware library for Pico in Windows: Press and hold the BOOT key and connect to the computer, then release the BOOT key, a removable disk will appear on the computer, and copy the firmware library into it.
- How to download firmware library for RP2040 in Windows: After connecting to the computer, press the BOOT key and RESET key at the same time, release the RESET key, and then release the BOOT key, a removable disk will appear on the computer.
Copy the firmware library into it (you can also use the Pico method).
Examples
- Download Demo Codes to your Raspberry Pi and test.
External LED Example
Connect the boards as in the picture below. Connect the Pico to Raspberry Pi or PC. Open the Lesson-5 External LED example with Thonny. Run the example, and you will find that the red LED is flashing.
- Codes:
led_external = machine.Pin(15, machine.Pin.OUT) #Set GP15 to output Mode while True: led_external.toggle() #Toggle the LED every 5 seconds. utime.sleep(5)
Traffic Light System Examples
Connect the boards as in the picture below. Connect the Pico to Raspberry Pi or PC. Open the Lesson-9 Traffic-Light-System example by Thonny, run the codes and test the traffic light, the buzzer sounds when you press the button.
- Codes
def button_reader_thread(): #Check if the button is pressed global button_pressed while True: if button.value() == 1: button_pressed = True _thread.start_new_thread(button_reader_thread, ()) #Start a new thread to monitor the stats of button while True: if button_pressed == True: #If the button is pressed, turn on the LED and let the buzzer work. led_red.value(1) for i in range(10): buzzer.value(1) utime.sleep(0.2) buzzer.value(0) utime.sleep(0.2) global button_pressed button_pressed = False led_red.value(1) utime.sleep(5) led_amber.value(1) utime.sleep(2) led_red.value(0) led_amber.value(0) led_green.value(1) utime.sleep(5) led_green.value(0) led_amber.value(1) utime.sleep(5) led_amber.value(0)
Burglar Alarm LED Buzzer Examples
Connect the boards as in the picture below. Connect the Pico to Raspberry Pi or PC. Open the Lesson-14 Burglar Alarm LED Buzzer examples by Thonny. The LED lights on if an object is moving around the Passive infrared sensor and the buzzer will indicate.
- Codes
def pir_handler(pin): #Interrupt process function print("ALARM! Motion detected!") for i in range(50): led.toggle() buzzer.toggle() utime.sleep_ms(100) sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)#Enable the Interrupt, the interrupt function is called when motions is detected. while True: #Toggle LED every 5s led.toggle() utime.sleep(5)
Potentiometer Example
Connect the boards as in the picture below. Connect the Pico to Raspberry Pi or PC. Open the Lesson-16 Potentiometer example by Thonny, you can adjust the potentiometer and check if the voltage printed to the Sheel window are changing as well.
- Codes
potentiometer = machine.ADC(26) #Set the GP26 pin as analog input conversion_factor = 3.3 / (65535) while True: voltage = potentiometer.read_u16() * conversion_factor #Convert the sampled data to voltage value print(voltage) #Print the voltage data, it chanaged according to the sliding rheostat. utime.sleep(2)
WS2812 Example
Connect the boards as in the picture below. Connect the Pico to Raspberry Pi or PC. Open the WS2812_RGB_LED.py file of Lesson-25 WS2812 example by Thonny, the LEDs light in Blue, Red, Green, and White.
- Code
#This code uses the state machine mechanism. The following code is a decorator where we can initialize the hardware, set the pin level, etc. #label("bitloop") We can define some tags in our code so that we can jump to them. #jmp(not_x,"do_zero") If x=0, we jumpt to do_zero. #nop() .set(0) [T2 - 1] The code jumpt to here if x = 0. @asm_pio(sideset_init=PIO.OUT_LOW, out_shiftdir=PIO.SHIFT_LEFT, autopull=True, pull_thresh=24) def ws2812(): T1 = 2 T2 = 5 T3 = 1 label("bitloop") out(x, 1) .side(0) [T3 - 1] jmp(not_x, "do_zero") .side(1) [T1 - 1] jmp("bitloop") .side(1) [T2 - 1] label("do_zero") nop() .side(0) [T2 - 1]
# Create the StateMachine with the ws2812 program, outputting on Pin(22). sm = StateMachine(0, ws2812, freq=8000000, sideset_base=Pin(0)) #Create the stats machine # Start the StateMachine, it will wait for data on its FIFO. sm.active(1) #Start the stats machine # Display a pattern on the LEDs via an array of LED RGB values. ar = array.array("I", [0 for _ in range(NUM_LEDS)]) print(ar) print("blue") for j in range(0, 255): for i in range(NUM_LEDS): ar[i] = j sm.put(ar,8) #put() is put the data to output FIFO of the stats machine time.sleep_ms(5)
LCD1602 I2C Example
Connect the boards as in the picture below. Connect the Pico to Raspberry Pi or PC. Open the Lesson-21 LCD1602 I2C example by Thonny, you need to first save the RGB1602.py to Pico and then run the Choose_Color.py file. The LCD will change color every 5s. If you run the Discoloratio.py file, the LED displays RGB colors.
- Codes
Choose_Color.py
#Define colors rgb9 = (0,255,0) #green lcd.setCursor(0, 0) #Set the position of cursor # print the number of seconds since reset: lcd.printout("Waveshare") #Print the string lcd.setCursor(0, 1) #Move the cursor to second row. lcd.printout("Hello,World!")#Print the string lcd.setRGB(rgb1[0],rgb1[1],rgb1[2]); #Set the back light
Discoloration.py
t=0 while True: r = int((abs(math.sin(3.14*t/180)))*255); #RGB changes as time goes g = int((abs(math.sin(3.14*(t+60)/180)))*255); b = int((abs(math.sin(3.14*(t+120)/180)))*255); t = t + 3; lcd.setRGB(r,g,b);#Set the RGB data again. # set the cursor to column 0, line 1 lcd.setCursor(0, 0) #Set the curson to the first row. # print the number of seconds since reset: lcd.printout("Waveshare")#Print the string lcd.setCursor(0, 1) #Set the cursor to second row lcd.printout("Hello,World!")#Print the string time.sleep(0.3)
Pico Quick Start
Firmware Download
Text Tutorial
Introduction
MicroPython Series
- 【MicroPython】 machine.Pin Function
- 【MicroPython】 machine.PWM Function
- 【MicroPython】 machine.ADC Function
- 【MicroPython】 machine.UART Function
- 【MicroPython】 machine.I2C Function
- 【MicroPython】 machine.SPI Function
- 【MicroPython】 rp2.StateMachine
C/C++ Series
For C/C++, it is recommended to use Pico VS Code for development. This is a Microsoft Visual Studio Code extension designed to make it easier for you to create, develop, and debug projects for the Raspberry Pi Pico series development board. Whether you are a beginner or an experienced professional, this tool can help you confidently and easily develop Pico. Below we will introduce how to install and use the extension.
- Official website tutorial: https://www.raspberrypi.com/news/pico-vscode-extension/.
- This tutorial is applicable to Raspberry Pi Pico, Pico2, and our company's RP2040 and RP2350 series development boards.
- The development environment defaults to Windows as an example. For other environments, please refer to the official website tutorial for installation.
Arduino IDE Series
Install Arduino IDE
-
Download the Arduino IDE installation package from Arduino website.
-
Just click on "JUST DOWNLOAD".
-
Click to install after downloading.
-
Note: You will be prompted to install the driver during the installation process, we can click Install.
Install Arduino-Pico Core on Arduino IDE
-
Open Arduino IDE, click the File on the left corner and choose "Preferences".
-
Add the following link in "Additional boards manager URLs", then click OK.
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
Note: If you already have the ESP32 board URL, you can separate the URLs with commas like this:https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
-
Click on Tools -> Board -> Board Manager -> Search for pico, it shows installed since my computer has already installed it.
Upload Demo At the First Time
-
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).
- Download the demo from #Resource, open the D1-LED.ino under arduino\PWM\D1-LED path.
-
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).
-
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.
-
Click Tools -> Board -> Raspberry Pi Pico/RP2040 -> Raspberry Pi Pico.
-
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 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
- MicroPython Demo (GitHub)
- MicroPython Firmware/Blink Demo (C)
- Official Raspberry Pi C/C++ Demo
- Official Raspberry Pi MicroPython Demo
- Arduino Official C/C++ Demo
Resource
Example Demo
Official Document
Pico W
Firmware
Pico
User Manual
Schematic & Datasheet
Related Books
Raspberry Pi Open-source Demo
Development Software
- Zimo221.7z
- Image2Lcd.7z
- Font Library Tutorial
- Image Extraction Tutorial
- Thonny Python IDE (Windows V3.3.3)
Documents
Demo Codes
FAQ
1. The pin that sets the input state must be initialized to pull high or low.
2. Replace the USB cable to see if there is a problem with the USB cable used.
{{{5}}}
The official firmware has not been updated and is still written with 2M RAM; just use the following corresponding firmware:
4M: 4M MicroPython firmware
16M: 16M MicroPython firmware
{{{5}}}
It cannot be updated through a C++ program, you can try to use Arduino ide to develop or use our debugger (RP2040 GEEK).
{{{5}}}
Support
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)