Sand Table Build

Sand Table Build Documentation

Project Overview

In 2008 I started building a mechanized sand table that was directly inspired by the artwork of Bruce Shapiro. My goal was to turn his artistic medium into a functional piece of furniture that could serve as both an input and output device for networked information. This project was developed as part of my Master’s degree in the Arts Computation Engineering program at the University of California, Irvine.

I started building my project from pieces of a large-format printer, without any knowledge of CNC devices. Based on a few images I had seen of Sisyphus tables, I started building a radial plotter design. My approach required a slip ring and unfortunately I wasn’t able to fabricate or source one at that time. My attention turned to finishing the written portion of my thesis, and I never completed my table.


I kept my incomplete work, always hoping to have the opportunity to resume the project. Between 2008 and 2018 many advances were made in electronics, noteably Arduino boards and the Raspberry Pi, as well as knowledge-sharing platforms like YouTube.

In 2016 Bruce ran a very successful Kickstarter campaign to turn his Sisyphus table into a consumer-oriented furniture piece. I actually didn’t learn about the Sisyphus Kickstarter campaign until May of 2018. It motivated me to start looking into what it would take to resume my project and that’s when this iteration of the project was born.

Goals For This Project:

  • Build a working plotter into my existing table
  • Create algorithmic sand patterns and open source the code used for creating them
  • Create a public web site that allows visitors to send patterns to the table to be drawn
  • Link static and/or dynamic patterns to represent dynamic data sources (part of the original vision for Gravitable)
  • Add LED lighting to the table
  • Share my research and development process along the way

Since resuming my work I have found many other sand table builds, and if there’s one thing that’s certain, it’s that there is no single way to build one. Everyone has access to different budgets, supplies and tools. I’ve seen tables made from 3D printed parts and others made from balsa wood and hot glue. With limited access to machining tools, it’s important for my project to use as many pre-fabricated components as possible. Additionally, I prefer to use supported and well-documented components over inexpensive, undocumented ones, so I have prioritized those over cheapers options.

Components

Plotting Mechanism

In my research I’ve come across 3 main different types of plotting mechanisms: XY/Rectangular/Cartesian, Radial/Polar, SCARA.

The Sisyphus table by Bruce Shapiro uses a polar plotting mechanism which they call the Sisbot.

The Sandsara table by Ed Cano uses a SCARA mechanism.

My build uses an XY Plotter, primarily because I have very limited machining resources. In fact I was able to build mine with only a few cuts through extruded aluminum beams.

Within the XY plotter family there are some options for drive configurations. I used a belt-drive for the X-axis and a lead screw drive for the Y-axis. I made this choice because I came to the build with no experience and wanted to try out each type of linear actuator.

Here’s a great Instructables project for creating a DIY linear actuator.

Another XY plotter configuration uses the Core XY layout. The primary advantage to this design is that the motors are mounted in such a way that they aren’t required to move, resulting in the ability to rapidly move the plotting head.

Stepper Motors

Behind every design that I’ve come across is the the use of high-precision Stepper Motors.

For now, here are some great introductory articles on Stepper Motors. However, in the end you will want to use a Motor Driver so that you aren’t directly coding the voltage level changes required to drive the motors.

Motor Controllers

As mentioned above, stepper motors are great, but they require specific voltage levels, and a motor driving circuit and firmware simplifies this tremendously.

Future research: Arduino AccelStepper Library

CNC (Computer Numeric Control)

Now that you have a motorized plotter, you need a way to turn paths into instructions for the motor drivers. This is where the concept of Computer Numeric Control (CNC) comes in.

One of the most universally popular CNC languages is G-code, and this is what my build uses with the help of the GRBL G-code parser specially designed for use with Arduino.

Control Software

Besides the hardware, you’ll need a software interface for sending the G-Code file to the CNC machine. During my process I relied heavily on Universal Gcode Sender for testing, but in order to control your device remotely from the command line you’ll need to write your own software for sending the commands.

Image Printing

Once your machine is built and controllable using a CNC interface, you’ll need a path to plot. There’s a variety of tools for this that are covered in this section.

Converting Image and Vector Artwork to G-code

####### Vector Artwork

####### Bitmap (Pixel) Images

Sand Table Interface

Magnet

https://www.kjmagnetics.com/selectasize.asp

  • DE8

  • Mounting/Cup Magnets (https://www.kjmagnetics.com/blog.asp?p=mounting-magnets)

Sand
  • Type
    • Shuffle Board Wax (https://robdobson.com/2017/02/a-line-in-the-sand/#comment-48467)
    • https://www.sandtastik.com

      Weight: 1.465 oz per volumetric oz.

    • Baking Soda (https://www.v1engineering.com/forum/topic/does-this-count-as-a-build/page/5/#post-37253)
  • Depth

    • Area is PI * (25.5/2)^2) = 510.71 square inches
    • Depth of 0.25” = 510.71 * 0.25 = 127.68 cubic inches = 70.75 fluid oz.
Steel Ball
  • 1/4”
  • 1/2”
  • 3/4”
  • 1”
Lighting
Adafruit Dotstar LED Strip
  • https://learn.adafruit.com/circuitpython-essentials/circuitpython-dotstar
  • https://learn.adafruit.com/adafruit-dotstar-leds/python-circuitpython
  • https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/installing-circuitpython-on-raspberry-pi

Original Drawing Creation

Pattern Generators

Line Drawings

  • http://sunnybala.com/2018/09/10/python-etch-a-sketch.html
  • https://create.arduino.cc/projecthub/iot_lover/arduino-drawing-via-web-using-step-motor-controller-cb5f33
  • https://mathematica.stackexchange.com/questions/133280/draw-image-as-a-continuous-line-drawing

  • Travel Salesman Problem (TSP) Art
  • http://www2.oberlin.edu/math/faculty/bosch/making-tspart-page.html

Patterns

  • https://en.wikipedia.org/wiki/Parametric_equation
  • http://mathworld.wolfram.com/Spirograph.html
  • http://www.mathematische-basteleien.de/spirographs.htm
  • Hypotrochoid
    • https://www.openprocessing.org/sketch/677658
    • https://c.ymcdn.com/sites/www.amatyc.org/resource/resmgr/Summer_Reading_2015/Hypocycloids-Sept2014.pdf
    • http://math.hws.edu/lasseter/teaching/S14/CPSC120/assign/hw5.html

2D Curves - http://www.2dcurves.com

50 Famous Curves
 - https://elepa.files.wordpress.com/2013/11/fifty-famous-curves.pdf Curve Family Tree
 - http://xahlee.info/SpecialPlaneCurves_dir/Intro_dir/familyIndex.html#Curve%20Family%20Tree

https://www.desmos.com/calculator/qf1zfdjewu https://www.desmos.com/calculator/3plby3pgqv

Cycloids/Roulettes/Guilloches
 http://2008.sub.blue/blog/2008/10/10/guilloche.html https://www.cnccookbook.com/guilloche-rose-engines-jeweling-engine-turning-artistic-machining/

Drawing Machine Simulator https://krazydad.com/blog/2015/07/12/cycloid-drawing-machine-simulation/
 https://wheelof.com/sketch/

Rotate a Sine wave https://math.stackexchange.com/questions/852530/whats-the-intuition-behind-the-2d-rotation-matrix https://processing.org/discourse/alpha/board_Contributions_Beyond_action_display_num_1112719128.html

Other Documented Builds

Throughout my build I’ve found many other sand tables documented across the Internet. I’ll list these here at the top of my documentation as a jumping-off point.

Forums

Videos

Here’s a playlist of sand table videos I’ve discovered throughout my research

Contact

Send me a message