Introduction: Vertical Plotter

About: Ngo active in the field of digital mediation, based in Toulouse, France

In this tutorial you will learn how to create your own vertical plotter. This is a cnc machine that you can use to transfer digital drawings onto any vertical surface (ex. a wall, a window).


- 1 pulley (2m long and 5mm wide) + 2 gears for stepper motors

- 2 NEMA 17 stepper motors, step angle 1.8°, rated voltage 12V, rated current 1.7A

- 1 arduino uno board

- 1 Adafruit motorshield V2

- 1 USB cable 2m long

- some heat shrink tube

- 1 9g servo motor

- 1x M4x50mm + bolt

- 1x M3x15mm + bolt

- 11x small screws (about 2cm long)

- 3D printed parts (1 board holder, 1 gondole, 1 motor-mount left, 1 motor-mount right, 2 side weight holders, 1 central weight holder)

- 1 Power supply, 12V 5A

- 8x M3x7mm

Step 1: Program the Arduino Board

You will need to upload the vertical plotter Firmware on your arduino board.

The firmware is available here. make sure you download the whole thing by hitting “Clone or download” and then “Download Zip”.

After unzipping the folder, launch “polargraph_server_a1”, and you should get an Arduino window with plenty of sub windows (comms, configuration, etc.), like this.

Before uploading the code, there are a few settings we need to take care of:

1. choose Arduino uno as your board. You just need to comment line 40 of the code by adding two slash // at the front of the line

2. specify that you are using Adafruit motorshield V2. Uncomment the appropriate lines of code, comment the other ones by using //

Now Install the necessary libraries, namely Adafruit_MotorShield and AccelStepper, if you haven’t done so before already.
To do this, access the library manager under the Sketch menu, and type the name of the libraries.

You can now upload the firmware onto the board.

Step 2: Install the Controller Software

The controller software is an interface that enables us to control the polargraph and upload our own digital designs.

To set up the Controller software, follow the instructions available here.

You can now launch the controller software and test that the board connects properly to the software, before starting to actually build the polargraph.

Open “polargraphcontroller” from the Sketchbook

Then hit the Run button

If the connection with the arduino is successful, you will get a “Polargraph READY” message. Make sure you have plugged your arduino board to the computer.

Step 3: Build the Vertical Plotter

Use the M3x7mm screws to secure the stepper motor onto the motor mounts.

Then attach the motor mounts to the vertical support using the small screws (about 2cm long).

Attach the board mount somewhere on the top center of the vertical surface, using another 4 small screws.

Now prepare the courroie and secure the side weight holders on each end of the string.

Lastly, set up the gondole: attach the servo motor to the upper part, secure the weight holder to the top part of the gondole using the M3x15mm and introduce the M4x50mm to hold the pen. It is not necessary to put a pen inside the gondole at this stage.

You can also slide the courroie into the gondole like this:

Step 4: Wire Up the Components to the Arduino Board

Here's a picture of the wiring.

Connect the stepper motors first The left motor goes into M1 and M2. Place the stepper motor wires into the first, second, fourth and fifth slots. In our picture, we have the red cable into slot 1, the blue cable into slot 2, the black cable into slot 4 and the green cable into slot 5.
Now connect the second stepper motor. Be careful to follow the same order, from top to bottom. For example we placed the red cable into slot 1, the blue cable into slot 2, etc., just like for the previous motor.

The servo motor goes into the “servo 2” slots on the motorshield. Going from left to right, connect ground (black cable), 5V (red cable) and signal (Orange cable).

Finally connect the 5V power supply to the motorshield (+ is to the left, and 6 to the right).

Step 5: Set Up the Controller Software

Once your plotter is wired up, launch the Controller software from the Processing interface.

Click on the CommandQueue… in red, and your stepper motors should unlock.

The line goes green.

You can now activate them to move around the gondole.
The first thing to do is place your sheet of paper (if you would like to draw on a sheet of paper) and then calibrate the machine.

Place the pen manually at the top middle of the sheet of paper, or whichever surface you want to draw on.

This is your home, we can tell the machine by clicking on the “SET HOME” button.

To start calibrate the machine, select the “MOVE PEN TO POINT” option from the menu, then left click on the upper left corner of your sheet, and see where the pen stops.

Based on that, you can modify the “PAGE WIDTH” under the SETUP menu. So for example, if your pen stops outside the sheet of paper, reduce the page width, if your pen stops before the corner, then increase the page width.

Just for your own reference, using an A4 sheet of paper, our PAGE specs are 1024x1744 mm.

Once you've figured out the correct page width, you will need to calibrate the machine for height.

Move your pen to the bottom of the page, and modify “PAGE HEIGHT” as needed.

Now you should be able to control the machine so that whichever point you choose the pen to move to, the pen actually reaches that point on the real sheet of paper attached to the surface of the plotter.

Don’t worry if your motors are really slow, that's normal. You can change the speed under the setup menu: MOTOR MAX SPEED AND MOTOR ACCELERATION, however your motor won’t move much faster.

Now it’s time to calibrate the servo motor.

Introduce a pen into the gondole then click on PEN LIFT and PEN DROP from the INPUT menu. When you hit pen lift, the pen should not be in contact with the surface. Instead, when you hit pen drop, the pen should touch the sheet of paper. If that s not the case, modify the PEN UP POSITION and PEN DOWN POSITION values under the SETUP menu.

Your Controller software is now fully setup and you can load images onto it.

Step 6: Load a Vector Drawing

You can load a vector image into the controller software, and then have the machine draw the design onto the vertical surface of your choice. We use Inkscape to create vectorial drawings, however there are plenty other softwares that allow you to do it. You can also download vector images from the web.

Choose SELECT AREA from the INPUT menu.

Then use your mouse to draw the area that will contain your drawing. This area needs be contained within the sheet of paper, or whichever other surface you are drawing on.

The area you select is delimited by red lines. Now hit the SET FRAME TO AREA button.

Next, hit the LOAD VECTOR button and choose your vector image
You can move around the drawing with the MOVE VECTOR button, or resize the drawing with the RESIZE VECTOR option.

When you're ready, hit the DRAW VECTOR button to start drawing on the vertical surface.

Check out this timelapse to see the vertical plotter in action.