Arrakis 2.0 seems to have found a new, permanent, home, leaving me without a coffee table. You know what that means!
Behold!
![]() |
| Arrakis 3.0 |
Architecture
Arrakis 2.0 had a 5-layer construction. From top to bottom, it stacked like this:
- glass
- oak frame
- white LED frame
- sandbox
- mechanism frame
Arrakis 3.0 eliminated the wood frames around the glass and sandbox for a neater, more "modern" look. The corexy mechanism that moves the magnet has its own frame that drops into a support frame. The LED frame is now painted on the underside of the glass table top.
- glass with painted LED frame
- sandbox
- mechanism frame
- support frame
The Glass
The Sandbox
The Arrakis 2.0 sandbox had a glass bottom framed by 4040 t-slot aluminum with heavy wood side panels bolted on. Every time I transported it I was afraid it would get broken. In Arrakis 3.0, the sandbox is now a light weight 2040 v-slot frame around a nearly indestructible 3/16" G10 epoxy/fiberglass bottom plate. There are no wood sides, and the glass top just sits on top of the box. The mechanism is hidden from view by light weight side panels that fit into the slots in the t-slot support frame. The space between the glass and the sand has been reduced from 75 mm in Arrakis 2.0 to just 28 mm in Arrakis 3.0.
The sandbox rests on the support frame with pins at the corners to keep it in place. If I need to increase the air gap between the magnet and the bottom of the sandbox I can add spacers at the corners of the frame where the sandbox sits on the corner posts. If I want to decrease the air gap I can add spacers under the magnet to lift it a little closer to the bottom of the sandbox. If I need to access the mechanism or electronics, I take off the glass, disconnect the LEDs, and lift the sandbox off.
![]() |
| Corner of the sandbox sitting on the support frame (end cap is off). You can see the threaded pin that locates the sandbox on the frame sticking up the blue support frame. |
I had to decide how thick the G10 sandbox bottom needed to be to ensure it wouldn't sag too much. I did some research and found a formula for estimating the amount a plate supported at its edges will sag. It's a classic mechanical engineering problem- we have a rectangular plate of limited rigidity supported only by its edges. This website gives some insight into the calculation required. The website uses a formula from a book- I found it here, with the important materials being in chapter 11.
This calculation has some limitations- the main one being that it is a good estimate up to a deflection value that's about 1/2 the thickness of the material. It also assumes the plate is perfectly flat to start with.
Density of G10 is 0.065-0.067 lbs/in^3 (sorry for the units- most of the available info uses imperial units, so that's what I used, converting the final deflection value to metric). Actual dimensions of the edges of the sandbox are (b x a) 22.25" x 46.25". a/b = 46.25/22/25=2.08. Young's modulus (E) for G10 is 2.2-2.7e06 lbs/in^2, so I used 2.4e06 in my calculations.
I wrote a spreadsheet that I can just plug the thickness into and it spits out the deflection at the center.
Here is the result for 1/8" G10:
Are here is the result for 3/16" G10
I assumed the actual sag will probably be a little worse than these numbers -the 2040 v-slot is going to sag a bit, the X axis rail will flex, and the magnet will pull on the ball- so I went with the 3/16" material. I designed the table with a 3mm air gap between the magnet and the sandbox bottom surface, so some sag is tolerable. The magnet is easily strong enough to control the ball, even with the air gap.
One disadvantage of using fiberglass board is that it's a PITA to cut. I used an a cut off wheel on a grinder to cut it to size. Cutting fiberglass produces all sorts of nasty glass and epoxy dust that you really don't want to breathe or get on your skin or in your eyes, so I used a lot of PPE and hosed the board down after cutting it.
The G10 is covered with white, fake leather cloth (chosen because it comes rolled up, not folded and wrinkled), glued on using spray adhesive. I sprayed adhesive on the G10 first, set it aside, then rolled out the cloth, sprayed it, then set the G10 down on it so there would be no wrinkles. The white cloth hides the greenish color of the G10 when the ball rolls over the same spot repeatedly, and quiets the sound of the ball rolling. The G10 fits into the lower slots in the 2040 frame.
LED strips of the same type that were used in Arrakis 2.0 are fitted into the upper slots in the 2040 sandbox frame. I drilled a couple holes in the G10 to pass the LED cables to the underside of the sandbox where Wago lever nuts are used to splice the cables into a single 4 conductor cable with an Amp connector. The Wagos allow me to play with the connections so I can set the desired colors on the LED strips.
EPDM rubber weather stripping stuck to the top of the sandbox helps keep the sand in and spilled drinks out. It also protects the painted LED frame on the underside of the glass from getting scratched by the aluminum sandbox frame.
Arrakis 2.0 had a drawing size of 590 x 980 mm. Arrakis 3.0 is 465 x 1005 mm. I spent hundreds of hours generating interesting patterns for Arrakis 2.0 but I can't use them on Arrakis 3.0 because of the difference in sizes. I am going to write a Perl program to scale the Arrakis 2.0 drawings to fit Arrakis 3.0.
The Mechanism Frame
The mechanism is built on its own subframe made from black 2040 v-slot aluminum extrusions. It is designed to just drop into the support frame.
Arrakis 2.0 had motors mounted in the corners of the frame with twists in the belts along the Y axis. In Arrakis 3.0, the motors are mounted at one short end of the mechanism frame with additional pulleys at the corners, so I put twists in the belt between the motors and the pulleys. The twists in the belt ensure that the belt teeth touch only the drive pulleys. That helps keep the noise level down, especially when running table at high speeds. I'll know in a few months if it causes excessive wear on the belt.
![]() |
| One of the motors with the belt twisted. The motor mount is designed so the belt doesn't touch it. Note- the screw and spacer on the post are not used in the final design. |
The Y axis, parallel to the long dimension of the frame, uses wheeled carriages that run the length of the frame. I started by buying some ready-made wheeled carriages, but found some problems with the way they were assembled. They didn't use any washers, so the screws galled the plate, and were so short they barely engaged the nylon inserts in the nylock nuts they used. Do 30mm screws and a few washers really cost that much more than using 25 mm screws? I replaced the screws and added washers where needed, but ultimately decided that the holes in the carriages weren't positioned where I needed them to be, so I made my own carriage plates out of 1/8" aluminum plate.
The belt tension is causing the Y axis wheeled carriages to try to tilt inward. This may lead to the wheels wearing out quickly. We'll have to wait and see if it becomes a problem.
![]() |
| CAD render of one of the wheeled carriages. They are identical except this one has the 3D printed Y=0 flag mounted on it. The slot is where the X axis linear guide rail attaches. |
The homing sensors are optical type with LM393 comparators on 3D printed mounts. There is a printed flag that attaches to one of the Y axis carriages. The Y axis homing parts (the flag and sensor) fit below the X axis homing flag on the magnet carriage.
![]() |
| Y=0 flag in its sensor. The X=0 flag on the magnet carriage passes over with plenty of clearance. The magnet carriage also clears the Y=0 flag. |
![]() |
| CAD render of the magnet carriage. The lower part has the flag for the X=0 sensor. I printed it extra long then trimmed it to size after it was mounted in the mechanism. |
![]() |
| Underside of the lower belt clamp. The ends of the belt fold over and fit tightly into the slots. The upper belt clamps are done the same way. |
I needed a way to keep the wires neat, especially the long wires to the endstops, so I braided them and routed them through printed TPU clips that insert into the slots in the v-slot mechanism frame. The same clips also fit nicely into the slots in the 2020 t-slot support frame.
The fully assembled mechanism frame with electronics weighs about 8 kg (17.8 lbs).
Electronics
All the electronics, except the motors, endstops, and LED strips, fit on an aluminum plate screwed to the bottom of the mechanism frame. I mounted the controller board at the edge of the metal plate so I can remove and reinstall the uSD card that stores the patterns by reaching under the table. I also added toggle switches for main power and LED power.
The LED controller output wires go to Wago lever nuts mounted on the electronics plate. I added LED strips to the underside of the mechanism frame with a power switch in case I don't want the floor around the table to be lit. The floor lighting strips are connected to the controller so that the colors are the same. In Arrakis 2.0, the LED connection to the controller was always "iffy" because of the awful, cheesy connectors used on the LED strips. In Arrakis 3.0 I used some 20 gauge 4-conductor cable and proper Amp connectors to connect the LED strips to their controller. I drilled a couple holes in the G10 sandbox bottom to let the cables get to the underside where 4 Wago lever nuts are used to make the connections.
![]() |
| Electronics mounted on 1/8" aluminum plate screwed to the bottom of the mechanism frame. The X axis passes over with plenty of clearance. |
![]() |
| Here's the wiring diagram from Arrakis 2.0. The only real difference is that there are two more LED strips to light the floor, and no foot switch - I used a toggle switch for power in Arrakis 3.0. |
is made using blue anodized 2020 t-slot aluminum, with the pieces screwed directly together with M6 screws. It's thin, light, and the finish looks very nice. The frame is designed so the sandbox will sit on top of it, held in place by threaded pins that screw into the support frame. The mechanism frame, with all the electronics, drops in, fully assembled.
I designed the table to have a 3mm gap between the magnet and the bottom of the sandbox, but the gap can be adjusted. If I put spacers (pennies fit well) under the magnet, it lifts the magnet closer to the bottom of the sandbox.
![]() |
| The support frame made from blue anodized 2020 t-slot aluminum extrusions. The vertical members at the middle of each side keep the horizontal members from rotating. The printed orange parts at the inside corners are used to position the removeable mechanism frame that rests on them. Furniture pins will be screwed into the tops of the posts. |
![]() |
| One of four 3D printed TPU mechanism frame locators that fit on the support frame. |
Arrakis 2.0 had heavy, 3/4" thick, unfinished pine boards bolted to the sides of the 45 mm t-slot sandbox bottom frame to conceal the mechanism. That added a lot of weight and didn't really look very nice. The side and end panels of Arrakis 3.0 are made of 1/8" mirrored blue acrylic, cut to fit into the slots in the main frame. I added small pieces of silicone edge protectors to fill the space in the v-slots so the panels wouldn't rattle, and trimmed the edges with a razor knife so they wouldn't show (much).
That's about it! Leave comments/questions below. If I make any changes or find reliability issues I'll update this post. I'll write another post on the program to scale the patterns when it is finished and working.

























