A Pico sporting the RP2040 chip
A Pico sporting the RP2040 chip


The RP2040 is a microprocessor from the Raspberry Pi Foundation, the folks behind the Raspberry Pi (perhaps unsurprisingly!)

It's most commonly found in their Pico(W) boards, but the processor itself is available separately, and can be found in a wide variety of other products.

My first real exposure to this chip was in the marvellous PicoSystem which is an adorable little handheld now supported by the 32Blit ecosystem(along with a growing collection of RP2040-based stablemates).

Since then, I've steadily acquired a variety of Pico(W)s and largely Pico-based gadgets (my current addiction is the beautiful Galactic Unicorn, more about that later!) and seem to spend more and more of my time tinkering with them.


A lot of the stuff out there for the rp2040 is MicroPython based. It's well supported, and wildly popular in the microcontroller world.

That's understandable; it's approachable and relatively beginner-friendly (if you ignore the huge design flaw that Python treats whitespace as syntactic which is deeply, deeply evil). However, I am not (you'll be shocked to learn) a big Python fan.

So my focus is on the C/C++ SDK which is generally speaking very well documented, and very easy to work with. The real exceptions to this rule are the external libraries it bundles (lwIP, and mbedtls are the ones I've fought most hard with); with these you're basically left to make sense of the contributing project which are, in general, documented about as well as you'd expect a FOSS project to be.

In the spirit of making the world a better place, I've built a PicoW C/C++ Boilerplate which tries to wrap up some of the nastier stuff into something simple to use and reasonably documented. Hopefully it will be of use to someone!


🦄 The first thing I built was an improved clock (UniClock), which takes the example clock and turns it into C; adds some extra functionality and gave me my first taste of mounting a USB drive and talking to the network.

🦄 Once I got the boilerplate finished, I (very quickly) ported a Scrolling Quote Demo which pulls a random quote via HTTP and scrolls it across the Unicorn. Largely intended as a quick and easy real-world example of the boilerplate in action.

PicoSystem Games

While the PicoSystem is very well supported by the 32blit API, it does also have a more 'native' API, which I've also dabbled with.

I'll admit, this was an idea borne almost entirely out of the obvious name pun. 2048 is a well known and regularly-cloned puzzle game. Originally created by Gabriele Cirulli but hopefully he'll forgive me stealing his idea.

I wrote this (very quickly) as a way to experiment with the native API. As you can see fromthe code it's pretty basic but it's a complete game and even has a few beeps.