Skip to content
Drawing robot capable of rendering SVG paths over WebSockets. Powered by a Raspberry Pi running Node.js.
JavaScript HTML
Branch: master
Clone or download
andywise Merge pull request #2 from chris-schmitz/master
Adds config settings and GPIO control for step resolution pins
Latest commit dea91d2 Sep 5, 2019

Drawbot ✏️🤖

Drawing robot capable of rendering SVG paths over WebSockets. Powered by a Raspberry Pi running Node.js.

Parts List

Printable Parts

Everything Else (~$150 or less)


Hardware Assembly

Thank you to the kind people at the Johnson County Library's Black & Veatch MakerSpace for documenting the assembly process at

Raspberry Pi Zero W Basic Setup

  1. Download and install Etcher.
  2. Download and install latest Raspbian OS and flash it onto your SD card with Etcher.
  3. Enable SSH by adding a blank file named ssh (no extension) to the boot directory on the Pi's SD card. (Last tested with Raspbian Stretch Lite 2018-06-27 version.)
  4. Set up Wifi by adding a file named wpa_supplicant.conf to the same boot directory with the following contents (replace MySSID and MyPassword with your credentials):
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

Software Prerequisites

From a device connected to the same network as the Drawbot Pi, SSH into the Pi with ssh pi@raspberrypi.local. The default password is raspberry.

Then, on the Drawbot Pi:

  1. Update, upgrade, and install NPM, Git. (Automatically answer "yes" to everything.):

    • sudo apt-get update
    • sudo apt-get upgrade
    • sudo apt-get install npm
    • sudo apt-get install git
  2. Install Node.js.

    • sudo npm install -g n (Install n for node.js version management.
    • sudo n stable (Install latest stable version of Node.js. Last tested with v10.8.0)
  3. Upgrade NPM. (and remove old apt-get version).

    • sudo npm install npm@latest -g
    • sudo apt-get remove npm
    • sudo reboot (After rebooting, you'll have to SSH into the Pi again.)
  4. Install pigpio C library.

    • sudo apt-get install pigpio (Only if you're using Raspbian Lite.)
    • npm install pigpio


On the Drawbot Pi:

  1. git clone to clone this repository.
  2. cd drawbot
  3. npm i


On the Drawbot Pi:

  • Run npm start or sudo node draw.js to start the Drawbot controller.

Controlling the Drawbot

On a device connected to the same local network as the Drawbot Pi:

  • Go to raspberrypi.local/control to access the Drawbot control interface.
  • Use the "bullseye" interface to manually position the gondola, or raise/lower the pen/marker.
  • Use the settings panel to configure the Drawbot's D, X, and Y values (see "Configuration" below).
  • Drag and drop an SVG file onto the control interface to send artwork to the Drawbot!

SVG Artwork Notes:

  • Only the first <path> element will be drawn, so if necessary, combine artwork into a single compound path.
  • The Drawbot will scale artwork so that 1 pixel = 1 millimeter.


  • Enter value for D: measure distance between string starting points (in millimeters).
  • Enter starting X and Y values: measure distance from left and top (respectively) of left string starting point to initial pen position (also in mm).
  • Note: Values will be stored in the config.json file.

Rendering Raster Artwork (Coming Soon!)

You can’t perform that action at this time.