• sales

    +86-0755-88291180

Raspberry Pi Pico RP2040-Plus User Guide

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

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

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

  • Codes
#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 display 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 changeas 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)
TAG: ESP32 2 inch Capacitive TouchScreen LCD Display ST7789 CST816D 240x320 For Arduino/Raspberry Pi/Pico Finger Vein Scanner Module (A) Cortex M4F UART 3.3V TTL UL94-5VB IP56 Better Than Fingerprint Recognition Raspberry Pi 5 PD Activation Module Image-Modulation-Tutorial User Guide ESP32-S3 AI 1.54-inch e-Paper Ink Screen 1.54inch Display AIoT Development Board Deepseek Raspberry Pi 5 Serial UART Bus Servo TTL ST3235 30KG.CM Magnetic Encoder 360° High Precision And Large Torque TTL To CAN X1008 Raspberry Pi 5 PCIe to 2.5" 3.5" SATA HDD/SSD Dual Double-SATA (NOT BOOT From SATA/SSD Raspberry Pi 5 Magnetic Encoder Servo Motor 120KG.CM 24V 360° RS485 High Precision And Large Torque Milk-V Duo ESP32-P4 Smart 86 TV Box Development Board 4 inch 720x720 Display TouchScreen RS485 Relay Camera RJ45 ETH 15.6 inch Dual LCD Computer PC Monitor Display Double Secondary Screen Type C Mini HDMI 1080P For Windows/MacOS 0.85inch Screen ISX031C GMSL Camera H100 Image Sensor IP67 protection rating For Jetson Orin And MAX9296 GMSL camera Sipeed NanoCluster Mini Cluster Board mini data center For Raspberry Pi CM45 / Computer /LM3H /M4N Raspberry Pi Pico 2 RP2350 1.43 inch AMOLED TouchScreen Development Board 466x466 1.43inch Display QMI8658 6-Axis | PCF85063 RTC | SD | Battery Port Cortex-A53 ESP32 1.54 inch E-Paper Smart Watch display Screen 200x200 Ultra-low power For Arduino/Micropython/RTOS For Watchy