Programming Raspberry Pi Pico with Python and MicroPython

By Gareth Halfacree. Posted

Raspberry Pi Pico is programmed using either C/C++ or MicroPython and there is IDE support for Visual Studio Code and Eclipse. Adding a program to Pico is as easy as dragging and dropping a file while Raspberry Pi Pico is in boot mode.

MicroPython is an implementation of the Python programming language that is already popular among Raspberry Pi users. MicroPython is built specifically for microcontrollers like the RP2040 that powers Raspberry Pi Pico. MicroPython offers the same friendly syntax as Python. It allows for full control over Raspberry Pi Pico’s various features, including its Programmable Input/Output (PIO) functionality.

You can pick up a Raspberry Pi Pico from just $4 / £3.60, or free with the latest edition of HackSpace magazine.

Programs written for other MicroPython-compatible microcontroller boards will work on Raspberry Pi Pico, and vice versa – sometimes needing minor modification for different features between boards – giving Raspberry Pi Pico a healthy library of projects and tutorials beyond those developed by Raspberry Pi itself.

Meanwhile, the C/C++ SDK is fine-tuned to RP2040 and has all the headers, libraries, and build systems necessary to write programs in C, C++, or assembly language. Additionally, the C/C++ SDK provides higher-level libraries for dealing with timers, USB, synchronisation, and multicore programming, along with additional high-level functionality built using PIO such as audio.

Beginners looking to get started with the MicroPython port should start with the Raspberry Pi Pico Python SDK documentation and be sure to pick up a copy of Getting Started with MicroPython on Raspberry Pi Pico.

Thonny running a program on Raspberry Pi Pico

Get Started with MicroPython on Raspberry Pi Pico

For more physical computing projects to try on your Raspberry Pi Pico, grab a copy of the new book, Get Started with MicroPython on Raspberry Pi Pico. As well as learning how to use Raspberry Pi Pico’s pins as inputs and outputs, you’ll build a simple game, measure temperatures, save and load data to your Pico’s file system, and even make a burglar alarm for your room .

Get Started with MicroPython on Raspberry Pi Pico is available now from Raspberry Pi Press.

Get Started with MicroPython on Raspberry Pi Pico

Makers looking to explore the C/C++ SDK should download the Pico C/C++ SDK documentation.

Raspberry Pi Pico data sheets

Make sure to read, and bookmark, these new Raspberry Pi Pico and 2040 data sheets.

Program Raspberry Pi Pico with MicroPython

Raspberry Pi Pico is set up, by default, for use with the C/C++ Software Development Kit (SDK). The C/C++ SDK is an extremely flexible and powerful way to interact with your Raspberry Pi Pico. However, there’s a more beginner-friendly method: MicroPython, a port of the Python programming language designed specifically for microcontrollers.

In this tutorial we’re going to switch the Pico firmware from C/C++ to MicroPython and create our first program, which flashes the LED on the board.

You'll need

Open Raspberry Pi Pico in boot mode

Take your Raspberry Pi Pico and a micro USB to USB-A cable, and connect the small micro USB end of Pico. Hold down the small button on your Raspberry Pi Pico marked ‘BOOTSEL’ and plug the larger USB-A cable end into your computer (we are using a Raspberry Pi). Wait a few seconds, then let go of the BOOTSEL button. You will see your computer mount a removable drive. Click OK in the ‘Removable medium is inserted’ window to open Raspberry Pi Pico’s on-board storage.

Hold Raspberry Pi Pico's BOOTSEL button while connecting power to put Pico into boot mode

Flash the MicroPython firmware

Double-click the INDEX.HTM file displayed in Pico’s mounted storage. Your browser will open and display the ‘Welcome to your Raspberry Pi Pico’ webpage. Choose the ‘Getting started with MicroPython’ tab, and click ‘Download UF2 file’ to download the MicroPython firmware. It’s a small file, so it’ll only take a few seconds.

Open File Manager and locate the micropython-16-DEC-2020.uf2 file in the Downloads folder (the file name may have been updated with a later date). Drag-and-drop the UF2 file to the Raspberry Pi Pico’s removable drive (named ‘RPI-RP2’). After a few seconds, the drive will disappear as the new MicroPython firmware is recognised and installed.

Flash Raspberry Pi Pico's firmware to MicroPython by downloading the MicroPython UF2 file and dragging it onto Pico's mounted drive

Switching the back end

The best way to program in MicroPython on your Raspberry Pi Pico is with the Thonny Python IDE (integrated development environment). Open the Raspberry Pi menu and choose

Programming > Thonny Python IDE.

Changing the interpreter in Thonny to MicroPython (Raspberry Pi Pico)

Thonny is normally used to write programs that run on the same computer you’re using Thonny on; to switch to writing programs on your Raspberry Pi Pico, you’ll need to choose a new Python interpreter. Look at the bottom-right of the Thonny window for the word ‘Python’ followed by a version number: that’s your current interpreter.

Click ‘Python’ and look through the list that appears for ‘MicroPython (Raspberry Pi Pico)’ – or, if you’re running an older version of Thonny, ‘MicroPython (generic)’.

Tip! Update Thonny

If you don’t see MicroPython (Raspberry Pi Pico) in the interpreter list, you’ll need to update Thonny. Open a Terminal window and type:

sudo apt update && sudo apt full-upgrade -y

Code Hello World in MicroPython

Writing a program for your Raspberry Pi Pico is a lot like writing a program for your Raspberry Pi. You can type commands in the Shell area at the bottom of the window to have them immediately executed, or you can write a program in the main part of the window to run on-demand.

Click in the Shell area, next to the >>>> symbols, and type:

print("Hello, World!")

When you press ENTER at the end of the line, you’ll see your Raspberry Pi Pico respond. Try typing the same line again, but in the main part of the Thonny window – then click the Run icon. You’ll be asked whether you want to save your program to ‘This computer’ or ‘Raspberry Pi Pico’. Click on ‘Raspberry Pi Pico’, give your program the name hello_world.py, then click OK to save and run your first program.

Create a program that blinks Raspberry Pi Pico's LED

While Raspberry Pi Pico can run Python programs like the one above, its true power comes from interfacing with external hardware like buttons and LEDs. You can start programming a physical computing project without any extra hardware, too, thanks to an on-board LED (assigned to the non-broken-out GP25 pin).

Click the New icon and type in the blinky_led.py code. Click Run, save the program to your Raspberry Pi Pico, and watch the LED on Raspberry Pi Pico: it will turn on for one second, then off for one second, then repeat.

import machine
import utime
led_onboard = machine.Pin(25, machine.Pin.OUT)
while True:
    led_onboard.toggle()
    utime.sleep(1)
Raspberry Pi Pico has an on-board LED that can be programmed to flash on and off

From The MagPi store

Subscribe

Subscribe to the newsletter

Get every issue delivered directly to your inbox and keep up to date with the latest news, offers, events, and more.