What it does
Zen table draws an image in the sand using a metal ball moved by a magnet. The table receives the pattern that will be carved into the sand from a mobile app.
Users can choose what pattern to appear in sand, by selecting one of the three different ways available in the mobile app:
- Select an image
- Draw a patterns using their finger
- Select a mathematical equation
How we built it
1x1m custom wood table enclosure, supports, mounts
Step motors, permanent magnet, drive belts, guidelines
Arduino Uno board with hacked GRBL firmware connected w/ motors
Raspberry Pi3 board with Server written in Go Lang for API requests from mobile App and for sending G-Code to the Arduino board
Challenges we ran into
Choosing ball weight/size/material/friction and making it roll instead of drag
Generic Image rasterization not suitable for drawing without a mechanism for lifting the ball
Sand/Salt characteristics and interaction with wood board and metal/magnetic ball
Ball judder/jitter; wiggly magnet attachment on drive belt
Drawing line needs to be a continuous curve
Go lang serial communication issues
CNC Homing issues, alignment, soft/hard limits
Arduino IDE library issues
Accomplishments that we're proud of
It works! Speed, very good positioning precision (except it’s somewhat offset by magnet on belt wiggle)
What we learned
A lot ;) (2D CNC, various material properties, magnetic forces interaction, G-Code, image processing, equation graphs, various coordinates systems)
What's next for Enter Zendman - Magnetica
en table can be further adapted to personalize a coffee table or to create timeless drawings that can be framed and then exposed.
Adding a Z-axis can enable creation of 3D models.
A further version can be developed that will be able to lift the ball in order to create any kind of drawing, with non-continuous lines.
Improvements can be made in order to roll the ball properly instead of roll/drag movement.
Complete implementation in order to send vectorized/post-processed image to Go server.
An automatic clearing/leveling of sand for an empty “canvas”.