MY previous table, Arrakis 2.0, has found a new home and that left me in need of a new coffee table. I could go out and buy something fashionable, but I liked having the sand table, so I designed a new one. When the old table was moving to its new home, I managed to break the glass top and had to replace it with a new piece, custom made to fit the oak frame, for $330. I wanted the new table to be a little smaller so it would take up a little less space in my living room and could be easily transported by fitting through doorways, and would use a glass top that would be fast, cheap, and easy to replace. A bit of research led me to 24 x 48" glass that's a common size for coffee tables and available cheaply (about $100 delivered from amazon). 

Structure

I made a support frame from blue anodized 2020 t-slot. 

Arrakis 3.0 support frame
Arrakis 3.0 support frame
Arrakis 3.0 support frame corner detail
Arrakis 3.0 support frame corner detail showing 3D printed TPU rest for the mechanism frame

The sandbox is made using black anodized 2040 v-slot with a 3/16" thick G10 board, covered with white fake leather cloth, fitted into the lower slots of that frame. The upper slots of the long pieces hold RGB LED strips. The sandbox sits on threaded pins in the corners of the support frame. The 2' x 4' glass top just sits on top of the sandbox. I put strips of EPDM rubber weather seal around the top of the sandbox to keep the dust in and spilled drinks out.

Arrakis 3.0 sandbox on the frame
Arrakis 3.0 sandbox on the support frame

The mechanism frame is made from black anodized 2040 v-slot and drops into the support frame, resting on 3D printed spacers that center it in the frame.

Arrakis 3.0 mechanism frame
Arrakis 3.0 mechanism frame made from 2040 v-slot

One of the mechanism frame corners. The cut-out allows the frame to hang on the support frame.
Arrakis 3.0 mechanism frame mounted in the support frame
Arrakis 3.0 mechanism frame mounted in the support frame

All the t-slot and v-slot pieces were milled square and tapped, and screw directly to each other without any corner braces.

Mechanism

The mechanism is a stacked belt coreXY type driven by cheap, Chinese-made iHSV servomotors with 20 tooth pulleys. Belts are 6mm wide 2GT type commonly used in 3D printers. The motors are mounted on 3D printed mounts at one end of the mechanism frame with a twist in each belt so that the belt teeth touch only the drive pulleys, helping to keep noise down. The idler pulleys are made using stacked F625 bearings in 3D printed concave flanges that prevent the belts from squeaking. 

The Y axis (the long one) uses wheeled carriages that roll on the v-slot frame. The X axis is a 12mm linear guide with each end screwed to the wheeled carriages. 

Arrakis 3.0 wheeled carriage
Wheeled carriage with 3D printed PETG spacer and pulleys

Wheeled carriage CAD render. Both sides identical except for the Y flag on this one. On each carriage, a single screw through the slot holds the X axis guide rail, allowing it to move laterally in case the Y rails aren't perfectly parallel.

The magnet is a 20 x 20mm cylindrical N52 neodymium type. The magnet carriage/belt clamps are 3D printed parts that screw onto the bearing block on the X axis linear guide. The belt clamps hold the ends of the belts with the teeth interdigitated in narrow slots that don't allow the ends to separate. There is a 3mm air gap between the magnet and the bottom of the sandbox.

Arrakis 3.0 magnet carriage/belt clamps
3D printed PETG magnet carriage/belt clamps. I printed the X flag extra long and trimmed it to size once it was installed in the table.
Belt clamps/magnet holder CAD render. 

Lower belt clamp showing how the ends of the belt fold back on themselves. The upper clamp works the same way. I printed the flag extra long then trimmed it to size after installing it in the table.

Belts are tensioned by sliding the motor mounts along the slots in the frame.

3D printed PETG motor mounts, bolt to the mechanism frame using t-nuts. The mounts are designed with clearance so the belts never contact them.

Electronics

Power is provided by a 24V 350W Mean Well switcher. The controller is a Duet3D Duet2 WiFi board with an expansion board that provides step, direction, and enable signals to the servomotors. Endstops are optical type with LM339 comparators and status LEDs onboard. LED strips in the sandbox are powered by a 24-12V buck converter and controlled by their own controller. There are two ReDump protection circuits that sit between the power supply and servomotors. They protect the power supply, controller board, and LEDs against certain types of mechanical/electrical failures at the servomotors.

X axis passes over electronics with plenty of clearance. I was initially concerned that the magnet moving over the controller board could induce errors but it seems to be OK.
Electronics includes 24V 350W power supply, 2x ReDump protection circuits, Duet2WiFi controller and expansion board, LED buck converter and controller.
X-flag in X=0 sensor. Moving the sensor along the rail allows the X=0 position to be adjusted.
Y flag in Y=0 sensor. Moving the sensor along the rail allows the Y=0 position to be adjusted. The X flag on the magnet carriage passes over the Y=0 sensor with plenty of clearance.
3D printed TPU cable clips for routing wires

The Glass Top

I used 2'x4' beveled glass for the top of the table. I painted a black border on the underside that blocks direct view of the LEDs. I'm not sure I like the paint- I don't really trust it not to get scratched or to peel off. Time will tell if it was a bad idea.

11/15/25-  I got the LEDs working today and played with the air gap between magnet and the underside of the sandbox. After trying a 12 mm ball and seeing it get left behind by the mechanism, I decided to close the air gap a bit. I stacked two pennies under the magnet, then wrapped the magnet carrier with tape and put a zip tie over the tape to make sure the magnet doesn't lift up. 

Air gap between the magnet and the bottom of the sandbox. I later wrapped it with tape and then zip tied it because the magnet was lifting up.

Now a 12 mm ball can be used at 1000 mm/sec and it doesn't get left behind by the mechanism, but I'll probably use a 6mm ball.

The last thing needed to finish it is to wire in the final power cord and switch, and to cut and place the side panels. I have ordered 1/8" light blue mirrored acrylic for that.

11/21/25

I have added floor lighting under the table connecting the LED strips to the strips inside the sandbox

Floor lights off
Floor lights on

I did some experimenting with Sandify today and found that I can use it to import and scale some pattern files created for Arrakis 2.0 to fit on this table. Unfortunately, it seems to have a file size limitation that causes it to crash with some of the most detailed patterns, so I'm going to have to write a program to scale the patterns myself.

Update 11/22/25

I cut and installed the mirrored blue acrylic side panels today. I used small pieces of clear silicone edging to center the 1/8" panels in the 6.1 mm wide slots in the t- and v-slot. I also added threaded pins to the corner posts of the blue support frame to locate the sandbox and keep it from moving.

Mirrored blue acrylic side panels installed.
The pulleys and belts clear the side panels by about 5 mm. You can see the silicone edging that was used to center the panels in the slots.

This project is officially finished. Now I just have to scale the Arrakis 2.0 pattern files to fit this table...