Drawing robot capable of rendering SVG paths over WebSockets. Powered by a Raspberry Pi running Node.js.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
modules first commit Aug 17, 2018
public first commit Aug 17, 2018
wiring readme update: parts list, wiring, raster art Aug 20, 2018
README.md readme update Aug 29, 2018
config.json first commit Aug 17, 2018
draw.js first commit Aug 17, 2018
drawbot.gif first commit Aug 17, 2018
package-lock.json first commit Aug 17, 2018
package.json first commit Aug 17, 2018


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 (Coming Soon!)

  • ...

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. github.com/tj/n)
    • 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. npmjs.com/package/pigpio

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


On the Drawbot Pi:

  1. git clone https://github.com/andywise/drawbot.git 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!)