Friday, December 20, 2024

Arrakis 2.0 Sand Table at the Still and Oak Tasting Room

Arrakis 2.0


You're looking at the Arrakis 2.0 sand table, designed, built, and programmed by me, Mark Rehorst (whose name appears on GLD Gin bottles). The table is normally used as a coffee table in my home. It is on temporary loan to GLD.


Arrakis 2.0 at home

The sequence of patterns currently running on the table lasts about 12 hours. There is no real limit, and it is possible to program a sequence that will run for weeks without ever repeating a pattern. As you may notice, the sand tends to build up around the edges of the table. Once about every 50 hours of operation I push it back toward the center of the table.

In the current sequence, some patterns finish in a few minutes, others take over an hour. After each pattern finishes, there is a 60 second delay to allow you to contemplate the Sisyphean pointlessness of existence, "ooh and aah", take pictures of the pattern, or use the restroom. Then it erases and starts drawing the next one. 

Despite rumors you may have heard to the contrary, the sand is definitely not cocaine. It's actually baking soda, used because its fine grains capture pattern details, it's pure white so the LEDs light it up nicely, it doesn't get sticky when it's humid, bugs don't eat it, it's cheap, and available everywhere. There are about 2 lbs of baking soda on the table.

Almost all the electronics in the table are off-the-shelf stuff, most commonly used in making 3D printers. Many of the mechanical parts in the mechanism are 3D printed or are parts commonly used in 3D printers, such as GT2 belts and drive pulleys. Unlike similar tables you may have seen, this one uses servomotors to achieve high speeds and quiet operation.

Those of you familiar with 3D printing will understand when I say the table uses a CoreXY robotic positioning mechanism to move a magnet under the table. The table can be thought of as a large 3D printer without an extruder or a Z axis. It uses a 3D printer controller board and gcode files, just like a 3D printer. The advantage of using a CoreXY mechanism for this table is that the two motors that drive the magnet around are both fixed, so there are no wires attached to moving parts that would reduce the reliability of the mechanism.

The magnet that moves the ball is a 1" cube neodymium type N52, the strongest available. In my first sand table the magnet had no trouble keeping the ball under control through a 1/2" thick sandbox bottom.


Glass


My first sand table, The Spice Must Flow, had 1/2" plywood on the bottom of the sandbox with a spring pushing the magnet against it, which made quite a bit of noise, and generated some fine dust as the magnet scraped the wood. I later switched to 1/4" plywood and added an air gap to prevent the noise and dust from the magnet dragging on the wood. But the 1/4" plywood would warp with changes in temperature and humidity, sometimes closing the air gap and letting the magnet hit the bottom of the sandbox, making noise. 

For Arrakis 2.0, I used two pieces of 4.7 mm thick (about 3/16") glass that I found on Craig's List for just $6 each. I used one for the top cover and another for the bottom of the sandbox. That eliminated the possibility of warping so the magnet never touches the bottom of the sandbox. A steel ball rolling on glass is surprisingly noisy, so I covered the glass with white vinyl cloth (fake leather) and that minimizes the ball-rolling noise. It also prevents see-through when the ball goes over the same spot repeatedly.

When I brought the table to the Still and Oak Tasting Room, I set it up and was cleaning the top glass, holding it with a couple suction cup handles. One of the handles let go and the glass hit the floor, exploding into thousands of "ghetto diamonds". I had to order a replacement to fit in the oak frame on top of the table. If you look carefully, you might still find a few of the "diamonds" on the floor.


Software


The pattern generating software, Sandify, is free, online, and saves patterns as simple gcode files.

The process of generating patterns using Sandify starts with selecting a basic shape and applying different modifiers. As changes, are made, their effects can be seen in a preview window. When I like what I see, I tell Sandify to save the pattern. Then I run a post-processor on the pattern file that assigns two speeds to the motion- fast along the edges, and usually slower for the actual pattern, to preserve detail. Finally, I upload the pattern to the table via WiFi and it's ready to run. Patterns can be strung together in sequences using a macro file. It takes me anywhere from a few minutes to a few hours to generate patterns that I feel are worth keeping. There are currently over 200 patterns stored in the memory card on the table's controller board.

You may notice that the ball is "smart" in that it always takes the shortest path around the table when it's traveling along the edges of the table. That behavior was added to the pattern generator after I wrote a post processor to delete excess edge motion from the pattern files. The authors of Sandify liked the demo video I sent them so much they added that function into Sandify. They have yet to add dual speed operation, so I continue to use my post-processor for that.

In case you're curious about the mechanism, here's a video tour of a slightly earlier version of it. In Arrakis 2.0 there have been some major changes to the electronics but only minor changes to the mechanism.





The table has other uses. In the video below, the table is drawing a pattern I created specifically for entertaining my cat, Ms. Kitty. The ball moves at random high speeds, in random directions, and stops for a random time to make its motion unpredictable. When Ms. Kitty wants to play on the table, she pushes everything off of it, onto the floor.




I have also used it to paint pictures by having the ball roll acrylic paint on canvas boards:






History


Shortly after I finished designing and building a CoreXY 3D printer (UMMD) at the Milwaukee Makerspace, I got the idea to build my first sand table, "The Spice Must Flow", for the 2018 Milwaukee MakerFaire using the same type CoreXY mechanism and 3D printer controller board. 

After the MakerFaire I continued to work on the table, with goals of making it run faster and quieter, so that I could have one in my living room. Many of the parts in the mechanism, including motor mounts, the magnet carriage, and pulley blocks were designed by me and 3D printed on UMMD. 

At first I worked on speeding the table up, and managed to get it to work up to 500 mm/sec. That wasn't fast enough, and it was pretty noisy because it used stepper motors, so I switched to servo motors that are capable of running much faster and quieter. With the servomotors the table can run up to 2000 mm/sec, though the noise level goes up a bit with the speed.

Once the speed and motor noise issues were solved, I started working on other noises that the table made, hunting them down and eliminating or reducing them one by one. The result is in front of you:  Arrakis 2.0.


Do you want to build one yourself?


If you have kids, building a table like this would be a great way to introduce them to mechanical and electrical engineering and programming. My blog (see the links, below) contains enough information about the table, that if you are skilled mechanically, and know a little about electronics, you can use it to build your own table. I am always happy to answer questions and make suggestions, including local sources of inexpensive parts.

As built, there's about $400 worth of electronics in the table, including the servomotors, but there are much cheaper ways to go. The easiest way to cut costs is to use stepper motors if you don't mind the table speed being limited to about 100 mm/sec, and you can use an inexpensive Arduino based 3D printer controller. Many people build sand tables by modifying glass top tables from Ikea.

If you would like to build a sand table, or almost anything else, but don't have work space or tools, stop by and tour the Milwaukee Makerspace in Bay View or St. Francis. We have all the space, tools, and expertise you'll ever need for almost any project you can think of, large or small.


Do you want me to build one for you?


I can do that, but it's not going to be cheap. That said, I'd love to talk to you about it and maybe we can come to some agreement. 


Links to more info:


Milwaukee Makerspace where all your DIY dreams can come true!

My Arrakis youtube playlist - watch Arrakis and Arrakis 2.0 at home!

The Spice Must Flow - my first sand table

Arrakis sand table

Arrakis 2.0 sand table

UMMD 3D Printer

Sandify online sand table pattern generator

Duet3D makers of the controller board in Arrakis 2.0 and UMMD



Saturday, December 14, 2024

A New 3D Printed Lamp

Several years ago I made a 3D printed lamp for my son using guts from a WIFI controlled RGB LED bulb. The lamp had a large 3D printed fractal vase. He recently reported that the electronics had failed and asked if I'd make him another lamp. Sure!

I designed a new vase using a 3rd order Julia set with swept parameters. About 600 fractal images were generated using ChaosPro. The images were imported into ImageJ where they were stacked and converted to a solid and exported as an STL file. I sliced it using Cura's vase mode (did they ever fix vase mode in Prusa Slicer?) and printed it on UMMD. The top and bottom of the vase are the exact same tri-lobe shape, but rotated 60 degrees. At the middle layer the outline of the vase is almost a perfect circle. The vase has a very interesting surface texture that results from the limited resolution of the math used to generate the fractal shapes.

The new vase is 638 mm tall, printed in about 13 hours using 930 g of Keene Village Plastic's Edge Glow Glass PETG filament with 1 mm walls, and 0.25 mm layer thickness.

The Edge Glow Glass filament is a transparent filament with some "bluing" added to make it look like glass under normal lighting conditions. But if you light it with blue light, the material fluoresces a very cool looking pale blue color.


This is what it looks like in daylight. The bluish color that makes it look like glass comes from some dye that's added to the filament. 

In the original lamp, I took apart a normal shaped LED bulb so I could put the LEDs as close to the bottom of the vase as possible. That required making a very odd shaped heat sink to mount the LEDs on. Since I made that first lamp for my son, LED bulbs have become cheaper, much more widely available, and in many different configurations. For the new lamp, I used a WIFI controlled GX-53 RGBW LED bulb and didn't need to take it apart as it is pretty flat and sits very close to the bottom of the vase. I just bought a socket for the bulb and installed it. 

The only way to get "white" light from the old lamp was to turn on all the R,G, and B LEDs and the color temperature that resulted wasn't very nice. You could tweak it a little by adjusting the relative brightness of the LED colors, but it never produced a pleasing white light. The new bulb is an RGBW type that includes warm and cool white LEDs and the control app allows you to set the color temperature anywhere between a warm yellowish light to a cool bluish white. 

I like to set the bulb to a purple color. That turns on red and blue LEDs. The blue light makes the vase fluoresce the beautiful pale blue color and the red light shines through and looks pink through the glowing blue vase. It's a very nice effect that's not fully captured by the camera. The blue light also makes nearby fluorescent objects glow nicely, too.


The new lamp, set to purple light, making its own vase glow blue and the one next to it glow green. There are no glass pebbles in the bottom of the vase in this photo.

Wiring couldn't be simpler. I drilled a hole in the side of the vase near the bottom, fed in an 18 gauge line cord, split the end of the cord and tied it in a knot so it couldn't pull out of the lamp, stripped the ends of the wires, and soldered them to the wires from the lamp socket, then used shrink tubing to cover the solder joints. Finally, I put some hot-melt glue on the bottom of the lamp socket and mounted it in the bottom of the vase. Done!

The vase is large, tall, and relatively light weight so it can be moved or knocked over pretty easily. I added a few lbs of glass pebbles to the bottom of the vase to help keep it stable. I haven't decided if I'm going to epoxy them in or just leave them loose.


Surface texture results from the low resolution math that generates the fractal shapes that get stacked to make the vase. The print came out with a very shiny surface- like glass.



A look into the lamp- the wiring is as simple as can be. The GX-53 socket is hot-melt glued to the bottom of the vase. Wires are soldered and covered with shrink tubing. There's an on/off switch on the power cord, but it's mostly used to put the light bulb into pairing mode. Once paired, you can program schedules and control colors, brightness, and on/off with the phone app.

The nice thing about this lamp, unlike the original, is that if the bulb ever fails the dead one can be easily replaced - assuming they are still available. GX-53 bulbs are commonly used for under-cabinet lighting, so I think they'll be around for a while.

I added some rubber "feet" to the bottom of the vase to make it less likely to slide if bumped. These feet are some soft silicone material that is sticky on one side but not the other. The stickiness comes from the plastic, not an adhesive, and they don't leave any residue if you peel them off. They also don't seem to damage the finish on furniture. If they get dirty and "unsticky", just wash them off and they're sticky again.


Rubber feet on the bottom of the lamp.