Cover image for Pico Plotter

Pico Plotter

A simple, low-cost, 3d printable plotter using a Raspberry Pi Pico and MicroPython


 25 June 2025   |     3 minute read   |   By Kevin McAleer   |   Share this article on

Page last updated 26 June 2025

Videos

For every project I create, I often make a corresponding YouTube video. Sometimes, there might be more than one video for a single project. You can find these videos in this section.

Explore more through these this dedicated videos.

Inspiration

This project was inspired by the desire to create a simple, low-cost plotter that can be used with a Raspberry Pi Pico. The idea is to use a stepper motor to control the movement of a pen, allowing for basic drawing and plotting tasks.

This is a ‘ground-up’ project, meaning that it is designed to be built from scratch using basic components, making it accessible for beginners and hobbyists. I’ve written the code in MicroPython, that takes G-code from other software, and converts it to stepper motor movements.

Components


Hardware

The design is heavily inspired by the Arduino mini cnc plotter project by Daz_projects, though I’ve created my own version of this design in Fusion 360, and included some enhancements to the design, such as end-stops to prevent the motors from moving too far, and a more robust design for the pen holder that works with Sharpies.

Bill of Materials

Item Description Qty Price Total
Stepper Motors 28BYJ pack of 5 1 17.99 17.99
Pico Raspberry Pi Pico 1 4.00 4.00
Dupont Cables Pack of 3 types 1 5.99 5.99
Servo Helper   1 6.00 6.00
MicroSwitches pack of 10 1 6.99 6.99

Assembly


Software

This project uses 3 files of MicroPython code to control the plotter:

  • stepper.py: This file contains the code to control the stepper motors.
  • main.py: This is the main file that runs the plotter, taking G-code
  • gcode-interpreter.py: This file interprets G-code commands and converts them to stepper motor movements.

All 3 files need to be copied to the pico; you can use the Thonny IDE to do this, or copy them directly to the Pico using a USB cable.

You can find the code on GitHub.


CNCJS

CNCJS is a web-based interface for controlling CNC machines, including plotters. It provides a user-friendly interface for sending G-code commands to the Pico Plotter. You can install CNCJS on your Raspberry Pi and connect it to the Pico Plotter to control it remotely.

Our MicroPython code is designed to work with CNCJS, allowing you to send G-code commands directly from the CNCJS interface. This makes it easy to control the plotter and create drawings, and import drawings from other software.



Code

View Code Repository on GitHub - https://www.github.com/kevinmcaleer/pico_plotter

3D Models

Here are the 3D printable STL files:

STL List