Skip navigation
> RoadTest Reviews

Raspberry Pi Pico - Review


Product Performed to Expectations: 10
Specifications were sufficient to design with: 10
Demo Software was of good quality: 10
Product was easy to use: 10
Support materials were available: 9
The price to performance ratio was good: 10
TotalScore: 59 / 60
  • RoadTest: Raspberry Pi Pico
  • Buy Now
  • Evaluation Type: Development Boards & Tools
  • Was everything in the box required?: Yes
  • Comparable Products/Other parts you considered: For robotics Parallax BoEBot and Arduino Nano.
  • What were the biggest problems encountered?: GPIO pins silk screen is on bottom. Had to glue a printout pin chart next to the Pico to track GPIO.

  • Detailed Review:

    I run a robotics and makers club at the local library.

    My Road Test Mission: Build a simple robot(s) using RPi Pico, record experience and compare with other beginner robot platforms.

    Comparative beginner robot platforms – Parallax BoeBot (Basic Stamp with PBASIC) , Arduino Nano


    Comparative matrix of RP2020 controllers:  Adafruit & Sparkfun.  MicroBit and CircuitPython weren’t considered for this road test, altho robots can be built with them, they really are better suited for premade accessory boards.


    Road Test Results In a nutshell:

    Raspberry Pi Pico blows previous microcontrollers for robots out of the water !

    The analog and PWM resolution is so much better in the Pico, and easy to program. Reliably driving servos and H bridges is a piece of cake !

    The book "Getting Started with MicroPython on Raspberry Pi Pico" is very helpful.

    I hadnt even got to loading advanced features like  AI or generic I2C shields to the Pico, but it will be on the list.

    internally programmed pull up and pull down resistors are really handy !


    Here is my robot in action:




    Tutorials and online references:  this link has the help to install the Arduino version needed for Pico programming on a Raspberry Pi

    To clear out Arduino (or micropython) load on the RPi Pico, use flash_nuke.uf2 , found at :

    Getting Started with RP2040 – Raspberry Pi



    This is the Thonny Python robot program:

    from machine import Pin, PWM

    import utime

    LHSWhisker= Pin(14, machine.Pin.IN,machine.Pin.PULL_DOWN)

    RHSWhisker= Pin(13, machine.Pin.IN,machine.Pin.PULL_DOWN)



    LHSWhiskerLED= Pin(12, machine.Pin.OUT)

    RHSWhiskerLED= Pin(11, machine.Pin.OUT)

    AliveLED = Pin(25,machine.Pin.OUT)



    LHSservo = PWM(Pin(16))

    RHSservo = PWM(Pin(17))

    # 50 Hz is 20 msec period



    # 100% duty of PWM is 65200 counts

    # 2 ms of 20 ms is 10% for full spd FWD

    # ( 1.5 ms / 20 ms ) * 65200 = 4875 for servo zerospeed

    # 1 ms of 20 ms is full spd rev , .05* 65200

    zerospd = 4875

    LHS_FullSpd = 3250 # LHS side servo is mounted opposite so gets a reversed reference

    RHS_FullSpd = 6500

    LHS_TopSpdRev = 6500

    RHS_TopSpdRev = 3250




    while True:



        LHSservo.duty_u16(LHS_FullSpd)  #top speed forward on LHS

        RHSservo.duty_u16(RHS_FullSpd) # top spd fwd on RHS

                                # zerospeed = 4875

        # if no action on the whiakers go straight


        if ((LHSWhisker.value() ==0) & (RHSWhisker.value() ==0)):


        if LHSWhisker.value() ==1:


            LHSservo.duty_u16(LHS_TopSpdRev)  #top speed rev on LHS

            RHSservo.duty_u16(RHS_TopSpdRev) # top spd rev on RHS


        # back up tthen right turn

            LHSservo.duty_u16(LHS_FullSpd)  #top speed forward on LHS

            RHSservo.duty_u16(zerospd) # zerospeed on RHS


            LHSservo.duty_u16(LHS_FullSpd)  #top speed forward on LHS

            RHSservo.duty_u16(RHS_FullSpd) # top spd fwd on RHS


        if RHSWhisker.value() ==0:


        if RHSWhisker.value() ==1:


            LHSservo.duty_u16(LHS_TopSpdRev)  #top speed rev  on LHS

            RHSservo.duty_u16(RHS_TopSpdRev) # top spd rev on RHS


        # turn right

            LHSservo.duty_u16(zerospd)  # zerospeed on LHS

            RHSservo.duty_u16(RHS_FullSpd) # top spd fwd on RHS



            LHSservo.duty_u16(LHS_FullSpd)  #top speed forward on LHS

            RHSservo.duty_u16(RHS_FullSpd) # top spd fwd on RHS


    Arduino IDE

    MY usual PC: Install Arduino 1.8.15 on my W10 PC, wouldn’t connect COM PORT to Raspberry Pi Pico or compile Arduino example code without errors.

    My Raspbeery Pi 3B: Install Arduino 2.1.05 on my Raspberry Pi, then following update instructions on:  .

    Step 5 failed, user “pi” doesn’t exist, but does. Arduino 2.1.05 is so old, it doesn’t resemble the instruction’s screen shots. Uninstall & reinstall per Tom’s instructions. Tried a couple different ways to install, all failed.

                  My backup PC: Fresh Arduino load on a different W10 PC that never had Arduino IDE installed, installed 1.8,15.

                  Pico GP25 lit, but I had it used as a PU LED, so did BOOTSEL. ISE didn’t see COM port. Recycled connection and it worked for a second ! Pico connected to COM3 ! It errord on upload on Example BLINK. Did a BOOTSEL and NukeFlash. Installed                pico-setup-windows-.0.3.1-x86.exe on PC from Tom’s hardware without positive effect


    NOTE: Raspberry Pi Pico has 40 pins. It doesnt fit on a177 hole breadboard. A minimum of 400 hole breadboard is needed.



    Robot photos: a 7.4v Lipo powers the robot. A Buck boot power supply converts 7.4 V to 5.5V to a forward biased diode.

    The diode output is fed to the Rspberry Pi Pico VSYS. The diode blocks 5V from backfeeding the robot from the Pico USB port when plugged in from the programming PC.

    Level shifters are used in between the 3V GPIO pins to the servo 5V signal pins.


    With a working mobile platform, ping sensors, PixyCams, GPS, QTIs, etc can be easily added to enhance the functionality of the robot.



    Here is the Pico robot in action:


Also Enrolling

Enrollment Closes: Jul 7 
Enrollment Closes: Jul 19 
Enrollment Closes: Jul 14 
Enrollment Closes: Jul 12 
Enrollment Closes: Jun 28