Mini Dune Weaver - Not your typical marble run
Print Profile(2)


Bill of Materials
- 28BYJ-48 DC 5V Stepper motors + ULN2003 Motor Driver x 2: https://a.co/d/6ILjtgZ
- Carbon steel ball or stainless steel ball (6-10mm) x 1:
- Strong N52 magnet (16x8mm) x 1: I used a magnet from a Hue motion sensor. Any magnet smaller than 16x8 would do. You can create an insert in the Bambu slicer to fit your magnet of choice
- Esp32 board x 1: https://a.co/d/5EQz6PJ
- Dupont jumpers x 1: https://a.co/d/bDQodjq
- Faux leather (optional) x 1:
- Fine Sand (Optional, you can also use baking soda) x 1: https://a.co/d/9txb4Er
- 1m LED strip (optional) x 1: https://www.ikea.com/ca/en/p/vattensten-led-light-strip-multicolor-50530592/#content
- 10 inch acrylic discs (optional) x 1: https://www.amazon.ca/gp/product/B0B2KBTF22/ref=ewc_pr_img_7?smid=AURN5KNB8QEUH&th=1
Description
I've recently launched the duneweaver.com website. Check out all of the Dune Weaver tables and add-ons there!

We are starting a new Discord channel to help with troubleshooting and feedback. I will prioritize Discord over chat and comment. Please join us here: https://discord.gg/YZ8PTezVHt. Please use the #qna-mini-dune-weaver channel if you want help with your build.
UPDATE:
- 2025-01-24:
- Hardware update
- Improve base screw holes stability
- Change rot gears to herringbone style => more stable
- Change inout gears to helical => quieter.
- Invert both inout gears
- Software update:
- BREAKING CHANGE: Due to the inverted gear, you MUST update the latest firmware. Future firmware will only work with the new gear design.
- Fixed issue that requires homing before every pattern
- Added play pause button
- Added schedule play functionality
- Added progress bar
- Hardware update
2025-01-14: Huge UI update, thanks to Thokoop!

- 2025-01-13: Added playlist function and sipograph mode. Please update the software by running `git pull` and rebuild the docker image if you're using a RPI with `docker-compose up -d`.
- 2024-12-30: I added fillet to the table top to make it sturdier.
- 2024-12-26: I redesigned some parts to reduce sway motions, leading to smoother ball motion. Please reprint the small spur gears and the center motor mount (Only 8.46 g of filament).
- 2024-12-23: I had the wiring mixed up between the two motors, and I've updated the assembly instructions. The correct booting sequence is the ball trying to go all the way in. When you start a pattern, the ball will run the homing sequence first (moving all the way in), and then start the pattern. Please pull the latest code if you cloned yours before this date.
- 2024-12-21: I changed the outer gear from 15 teeth to 16 teeth to make the software deal with the gear ratio better (6.25, instead of 6.66666), which can lead to accumulating drift over time. Please reprint it because I will change the ratio in the software as well. I also increased the radial arm width by 0.2mm to reduce sideway motions.
A typical marble run is powered by gravity. This one? Electricity! I recently created the full-sized Dune Weaver (42cm diameter), and I had so much fun that I set out to create a mini version from the ground up. This thing costs about $27 to make for me, inclusive of filament. The cheapest one out there is the Oasis Mini, which is 1 inch smaller and about $150! What do you get with the Mini Dune Weaver?
- A beautiful machine that combines art, engineering, and programming. It's a fun project to build this holiday and show off to your loved ones.
- Minimal hardware requirement! You only need a ball, a magnet, a couple of stepper motors, and an ESP32 board. Most models out there require you to buy much more hardware than this.
- Frontend, backend, and controller code that I spent a month developing! Control your table from any web browser!
- A 25.4 x 79mm awesome conversational piece and a ton of fun! (Only 376g of filament!!!)
- Compatible with the A1 Mini!
Warnings:
- I tried to make it so that it's super easy for everyone to build this. If you can follow instructions, you can build this. However, keep in mind that this is probably more complicated than most 3D-printed projects out there. If you need help, please join our Discord channel (https://discord.gg/YZ8PTezVHt), use the qna channel and provide us with as much information as you can provide (image, video, what you tried, etc.). Me and the community will try our best to help.
- Due to the cost of this project, there's quite a bit of backlash with the motors, leading to some minor imperfections in the patterns here and there. I will try and see what I can do from the software side, but if you want a better dune weaver, check out my bigger version here: https://makerworld.com/en/models/841332#profileId-787553
A little bit more background on how the machine works. There are two bases: the lower base houses all of the electronic components, and the upper base, sand and the marble. We have two stepper motors, one controlling the radical axis (in and out movement) and the other controlling the angular axis (rotational movement). The two motors are connected to two motor drivers that control the step and direction. The controllers are connected to an ESP32 board that is the brain of the table. The whole table is powered by a single USB cable, attached to the ESP32 board.

A polar machine like this one uses a theta rho coordinate system instead of an x y coordinate system like a typical CNC machine. A theta number tells the table what angle (2 pi for one revolution) the angular axis should move, while a rho number tells the radical axis how far it should move (1 being the perimeter and 0 being the center).
The machine does not have a limit switch like a conventional CNC machine. When it is powered on, the table will do a crash-homing action, meaning the radical axis will try to move in the arm's physical distance, guaranteeing that the ball is in the home position (the table center). The software then keeps track of all the coordinates executed to know where the ball is at all times.
Due to the hardware design choice (to keep the design a circular table and minimize non-3D printer materials), the angular axis does not move independently. That means physically, whenever the angular axis moves one revolution, the radical axis will also move some distance either in or out (depending on whether the angular axis rotates clockwise or counterclockwise). We deal with this in the software by keeping track of how many revolutions the angular axis will be moved and offset the radical axis accordingly.

The code base of this project contains C++ code to control the motor, backend Python code to send the pattern from a computer or a Raspberry Pi, and a front-end web interface to control the device. I used my existing codebase for the Dune Weaver, so I didn't have to rewrite a lot of stuff. However, in the future, I plan to improve the code by leveraging the ESP32's more capable hardware (compared to the Arduino UNO) to eliminate the need for a Raspberry Pi.

I spent about a week working on this project and it was a ton of fun for me. I hope you enjoy building it, too.
Boost Me (for free)
If you like my work, a boost would be appreciated! Want to buy me a coffee ☕️? https://www.paypal.com/paypalme/tuanchris
Documentation (1)
License
You shall not share, sub-license, sell, rent, host, transfer, or distribute in any way the digital or 3D printed versions of this object, nor any other derivative work of this object in its digital or physical format (including - but not limited to - remixes of this object, and hosting on other digital platforms). The objects may not be used without permission in any way whatsoever in which you charge money, or collect fees.





























Comment & Rating (464)