Make a Raspberry Pi Pico pen plotter

Plotters are popular machines for makers. They’re expensive to buy, but simple enough to be easy to build out of commonly available parts. In the latest issue of HackSpace magazine, we show how to make your own Raspberry Pi Pico pen plotter.

The idea behind a vertical plotter is that there are two motors each attached to a spool of cable. At the other end of these cables is a gondola holding a pen. By winding or unwinding the string different amounts from each motor, the plotter can position the pen wherever it wants. At least, that’s the theory.

Pico pen plotter
The final plotter up and running

No plotter is perfect and hopefully it comes as no surprise that, if you build a plotter for £15, it’s going to have some compromises. Let’s take a look at what they are, starting with the potential problems with a vertical plotter.

Firstly, it’s hard to eliminate wobble. The mechanism is just two lengths of string, so it’s inherently flexible.

Secondly is that while the theoretical drawing area is quite large, you’ll only get an accurate drawing in a small part of this. Errors compound the further from the centre of your drawing area you travel, so things tend to get a little distorted if you try to fill the area.

Thirdly, there’s no easy way that we could find to auto-home the plotter. There’s nowhere to put limit switches, so each time you start the plotter, it’s up to you to make sure the gondola’s in the right position. There is a different design of vertical plotter that, instead of wrapping the cables up in a spool, has the loose cable dangling down, typically with a weight on the bottom. This is a slightly more complicated design, but it does allow auto-homing because you can put bits to trigger a limit switch on the loose end of the cable. We opted not to go with this style of design because it increases the complexity of the build.

Those are the downsides of this design; what are the upsides?

Firstly, it’s cheap, and this is an important feature. Not just because it costs less money, but price has further implications. Less money means less risk to hacking around and changing things. If a plotter cost £150, then you’d expect it to work better, but you might be more reticent about making changes to the code or design should you break it. For £15, it’s automatically more hackable because you can’t do that much damage (in financial terms). This also means that more people will build the project. The hypothetical £150 plotter might work better, but you’re likely need a good reason to buy one. The cheaper it is, the more people will build it just to have a play.

Pico pen plotter
The gondola isn’t our design; it’s borrowed from

Secondly, it’s small. By that, we mean that it doesn’t take up much floor space as it can be mounted on the wall. For the overwhelming majority of makers, floor space is at a premium, and can be one of the biggest limiting factors on what tools we have. On the other hand, wall space is often spare – not just spare, but attaching an interesting-looking tool to the wall can be an asset. Got an ugly bit of peeling paint on the wall? This is cheaper than some art to cover it up (and it can produce its own art!).

Thirdly, it’s big. This isn’t a contradiction to the previous point because this time we mean that it can make big drawings. How big? Well, how big do you want to make it? With vertical plotters, the maximum size you can print is guided largely by how accurate you want the drawing to be. Ours can draw A4 well, and it’s OK if you go bigger than this. You can move the motors further apart to give yourself a bigger area, but you will run into problems with accuracy. How far can they go? We don’t know, you figure it out!

Only you can decide if these particular trade-offs are right for you. There are a myriad of other options if you want a plotter that has different pros and cons.

The physical hardware is quite straightforward. You’ll need two motor mounts (we designed these to be symmetrical so you can print two of the same mount), two spools, and a gondola. The 3D files are all downloadable. These can all be 3D-printed without supports. We tested it out with both PLA and recycled PETG, and both printed without problems – we’d expect more-or-less any non-flexible filament to work, so just use what you have to hand.

Pico pen plotter
Many pens rely on gravity to feed the ink through. Giving the plotter a small incline will help ensure these work properly

There aren’t particularly large stresses on any of these, so an infill of 15% or so should be fine. Make sure they’re orientated correctly. The motor mount should print with the ‘horns’ pointing up; the pulley should print flat on the bed, as should the gondola.

As well as the 3D-printed parts, there are a few other bits of hardware:

  • A board. We’ve used 6 mm ply, but this can be absolutely anything that’s large and flat.
  • Screws or bolts to attach the motor mounts to the board. There are two countersunk 4 mm holes which are designed for wood screws in each motor mount. You could also glue these down if screws won’t do the job. Double-sided sticky tape would also make a good temporary fix if you wanted to reserve the option of removing the mounts.
  • A 20 mm M3 bolt to hold the pen in place.
  • Some fine thread to hang the gondola. Cotton thread should work fine. It doesn’t have to take any great force, so don’t worry too much about how strong it is.
  • A pen. Not all pens work well with vertical plotters as some require gravity to feed the ink down. Felt-tips work well but don’t always have the graphical effect you want. We found that as long as the plotter had a slight angle off vertical, it wasn’t too much of a problem, but if you get some pens refusing to draw, this might be why.
  • A weight. We glued an M10 nut to our gondola, but anything that weighs about 50g and doesn’t rub on the workpiece should be fine.
Pico pen plotter
If you look closely, you can see that the squiggles aren’t perfect, but does it really matter?

Alongside the hardware, you’ll need some electronics. We used a Raspberry Pi Pico as the brains. We’re programming it via Arduino IDE – other Arduino-compatible boards might work, but we did have unexplained crashes when we tried this on some AVR boards, so we wouldn’t recommend this.

You’ll need two 5 V 28BYJ-48 stepper motors – these come in both 12 V and 5 V variants, so make sure you get the 5 V version. You’ll also need two ULN2003 driver boards – typically these come with the stepper motors.

The final electrical component is a 9 g ‘micro’ servo.

The motors and servo should come with wires, but these wires will be too short for the plotter. Extension cables are available, but you can also cut the wires and solder on some additional wire if needs be.

That’s all the hardware. Now head to pages 38 – 43 of HackSpace #55 to find out how to mount it all together and get everything running with the software.

HackSpace magazine issue 55 out NOW!

Each month, HackSpace magazine brings you the best projects, tips, tricks and tutorials from the makersphere. You can get HackSpace from the Raspberry Pi Press online store or your local newsagents.

HackSpace 55

As always, every issue is free to download in PDF format from the HackSpace magazine website.


Robert Zwemer avatar

Has anybody tried this? Printed the parts, wired the PICO, buttons, steppers and servo, loaded the WallDrawGCODERP2040.ino.uf2, got nothing. Started poking around, the uf2 file appears to be an html file as well as the .elf and .map each is the same html file which appears to be a copy of the github page.

Robert Zwemer avatar

Problem solved, on further investigation, discovered my assumption re: the link to listed 3 files one of which was WallDrawGCODERP2040.ino.uf2, placed my cursor over it right clicked and saved the file, which was in fact a link (html) to a page which allowed me to download the correct file. You know what they say about assume “Makes an ass out of u and me”, anyway problem solved will get back to finishing the project.

ThoKr avatar

Thank you Robert, I had the same problem… now it’s working :-)

Martin Harkin avatar

Hi Robert Zwemer, did you manage to get the wall plotter working ?

Robert Zwemer avatar

Martin Harkin, yes, forgot to refresh the page when I left the comment biggest problem was incorrectly downloading the WallDrawGCODERP2040.ino.uf2. Had most of the parts.

Might try the PlottyBot next.

Robert Zwemer avatar

Got it working, once the correct WallDrawGCODERP2040.ino.uf2 was downloaded, using Kevlar rather than cotton thread.

Scrab avatar

Hi – There’s no mention of the 6 control buttons in the text – for a newbie; could you describe these and list the part numbers? Thanks!

Ashley Whittaker avatar

Hello! This was part of a much much longer piece in HackSpace magazine. If you scroll to the bottom, there’s a link through to a free PDF of the full article so everything you need should be there. 👍🏼

SCrab avatar

Hi Ashley! yep, I have the article but (and forgive my ignorance) it only says “There’s two sections to the electronics – the input which comes in a set of buttons, and the output which is the connections to the motors and servo. Let’s take a look at the input electronics first. There are six buttons. We mounted the Pico and buttons on a piece of protoboard, but you could use stripboard, design a custom PCB, or just use wires (though you’ll need a way of mounting the buttons). Each one is connected between a GPIO pin and ground. The buttons are connected as follows…” – but doesn’t say what the buttons are or where you get them from and are not listed in the hardware section at the beginning of the text. Are they a standard set of Pico buttons? thanks!

Benev avatar

Hi Scrab,
Are you wondering what type of buttons to use?
Something like this will work:
connect one leg to ground and the diagonally opposite leg to the GPIO pin — that works either way around.

Most buttons would also work, so if you’ve already got some that you’re wondering about, post info here and I’ll take a look.

Ashley Whittaker avatar


Liz Upton avatar

There isn’t a standard set of buttons – the only standard button is the bootsel button. Programmable IO means you can connect whatever you want, so you can have buttons doing anything you need them to do.

Scrab avatar

Fantastic. thanks all!

MJ avatar

Does anyone have the motor mounts .stl files (or where to find them). The link to the web page only has the gondola— was the mount file removed? Available someplace else? Thank you!

Joey avatar

They’re all available here still :

The file for the mount is called: curvey-body.amf
and the pulley is called :
stepper pully-Body (Meshed).amf

I downloaded them recently and they worked fine for me!

Joey avatar

I’m also stuck – any advice for settings to get UGS to connect? I’ve tried every firmware option and I get connecting and it says connected in the output window, but I can’t send it code!

Joey avatar

I suspect it is the uf2 file that is causing the problem- I’d love to hear from someone with a working copy!

Comments are closed