SandPlotter Smart Coffee Table
Developed an interactive sand art coffee table capable of generating intricate sand patterns, algorithmic geometric curves, and custom text through a CoreXY motion system.
The SandPlotter Smart Coffee Table was built as a first-year hardware engineering project at the University of Moratuwa. The goal was to build a functional piece of kinetic furniture that autonomously draws intricate geometric curves, algorithmic patterns, and custom user-input text into a fine layer of sand.
Beneath a glass tabletop, a magnetic carriage moves invisibly along an X-Y plane, pulling a steel ball bearing through the sand bed to create continuous kinetic artwork.
Traditional Cartesian gantry systems place the X-axis motor on top of the moving Y-axis carriage. In a living room furniture project, moving heavy stepper motors results in increased moving inertia, higher belt wear, and audible vibrations.
To address this, we implemented a CoreXY motion system where both NEMA 17 stepper motors remain fixed to the stationary outer frame. By utilizing a continuous GT2 timing belt routing configuration, simultaneous rotation of both motors creates precise, responsive 2D motion across the entire sand canvas.
Motion Mechanism Assembly
Designed and assembled the physical motion mechanism using NEMA 17 stepper motors, GT2 timing belts, idler pulleys, TMC2208/A4988 motor driver modules, and mechanical limit switches for homing calibration.
Automated Drawer Controller PCB
Designed and fabricated a custom PCB for the table's motorized automated drawer. Implemented single push-button toggle logic allowing users to both open and close the concealed drawer using the exact same push button.
GRBL Firmware Configuration
Flashed and configured open-source GRBL firmware on an Arduino Uno with CNC Shield V3, tuning steps-per-millimeter coordinate transformations, acceleration profiles, and axis limits.
ESP32 to Arduino Communication
Implemented serial communication between the ESP32 microcontroller and Arduino Uno to stream G-code line by line using acknowledgement-based flow control.
TFT Touch Display & Web Application
Built the user interfaces allowing users to trigger pattern draws both locally via an on-table TFT touch display and remotely via a web application over WebSockets with real-time drawing progress updates.
| SUBSYSTEM | HARDWARE / TOOL | TECHNICAL PURPOSE |
|---|---|---|
| Motion Controller | Arduino Uno + CNC Shield V3 | Executes GRBL firmware to generate real-time step and direction pulses for stepper motors. |
| Motor Drivers | TMC2208 / A4988 Stepper Drivers | Provides microstepping control, silent operation, and current regulation for the dual NEMA 17 motors. |
| Kinematic Mechanism | CoreXY Gantry + GT2 Belts | Keeps both motors stationary, reducing gantry moving mass and ensuring smooth 2D vector movement. |
| Automated Drawer Controller | Custom Etched PCB & Push Button | Controls the table's motorized drawer with single push-button open/close toggle logic and motor drive circuitry. |
| Wireless & Interface | ESP32 + TFT Touch Display | Hosts the WebSocket server for the web control app and drives the on-device touchscreen. |
| Firmware & Protocol | GRBL & G-code | Translates geometric vector coordinates into physical motor steps with limit switch homing. |
Click each subsystem node below to inspect hardware roles, firmware configurations, and electrical connections:
ΔA = ΔX + ΔY (Motor A steps)|ΔB = ΔX - ΔY (Motor B steps)|Pure X-motion = Both motors rotate same direction|Pure Y-motion = Motors rotate opposite directionATmega328P · CNC Shield V3 Expansion Board · Limit Switch InterfacesFUNCTION & ROLEExecutes GRBL motion control firmware to translate incoming G-code commands into synchronized step and direction pulses for dual stepper motors.
Configured GRBL firmware with acceleration profiles and homing cycle limits to ensure accurate coordinate mapping across the table.
SYSTEM INTEGRATIONDirectly drives the A4988 motor driver modules via CNC Shield V3.
Explore authentic photos of the assembled CoreXY SandPlotter table, custom PCB for the push-button automated drawer, ESP32 controller wiring, and real sand patterns generated under multi-zone LED lighting:
Engineering Challenges
Balancing belt tension across both CoreXY loops was critical to prevent skewing and ensure perpendicular axes. Tuning driver current limits on the motor modules prevented motor overheating during prolonged drawings while ensuring sufficient torque to guide the magnetic carriage through the sand bed.
What I Learned
This first-year project provided foundational hands-on experience combining mechanical construction, electrical driver interfacing, firmware flashing, and micro-controller communication (ESP32 to Arduino) with modern web control over WebSockets.