|
|
22 hours ago | |
|---|---|---|
| .github | 1 day ago | |
| dune-weaver-touch | 1 day ago | |
| firmware | 1 week ago | |
| frontend | 1 day ago | |
| modules | 22 hours ago | |
| patterns | 3 months ago | |
| scripts | 1 day ago | |
| static | 1 day ago | |
| steps_calibration | 7 months ago | |
| templates | 1 day ago | |
| tests | 1 day ago | |
| .dockerignore | 1 day ago | |
| .env.example | 7 months ago | |
| .gitattributes | 1 day ago | |
| .gitignore | 1 day ago | |
| CONTRIBUTING.md | 1 day ago | |
| Dockerfile | 1 day ago | |
| LICENSE | 7 months ago | |
| PATTERN_CREDITS.md | 7 months ago | |
| README.md | 1 day ago | |
| VERSION | 22 hours ago | |
| __init__.py | 7 months ago | |
| docker-compose.yml | 1 day ago | |
| dw | 1 day ago | |
| main.py | 22 hours ago | |
| nginx.conf | 1 day ago | |
| package-lock.json | 1 day ago | |
| package.json | 1 day ago | |
| pyproject.toml | 1 day ago | |
| requirements-dev.txt | 1 day ago | |
| requirements-nonrpi.txt | 1 day ago | |
| requirements.txt | 1 month ago | |
| setup-pi.sh | 1 month ago |
An open-source kinetic sand art table that creates mesmerizing patterns using a ball controlled by precision motors.
The system is split across two devices connected via USB:
┌─────────────────┐ USB ┌─────────────────┐
│ Raspberry Pi │ ◄──────────────────► │ DLC32 / ESP32 │
│ (Dune Weaver │ │ (FluidNC) │
│ Backend) │ │ │
└─────────────────┘ └─────────────────┘
│ │
│ Wi-Fi │ Motor signals
▼ ▼
Web Browser Stepper Motors
(Control UI) (Theta & Rho)
The Raspberry Pi runs the web UI, manages pattern files and playlists, and converts patterns into G-code. The DLC32/ESP32 running FluidNC firmware receives that G-code and drives the stepper motors in real time.
Dune Weaver comes in three premium models:
| DW Pro | DW Mini Pro | DW Gold | |
|---|---|---|---|
| Size | 75 cm (29.5") | 25 cm (10") | 45 cm (17") |
| Enclosure | IKEA VITTSJÖ table | IKEA BLANDA bowl | IKEA TORSJÖ side table |
| Motors | 2 × NEMA 17 | 2 × NEMA 17 | 2 × NEMA 17 |
| Controller | DLC32 | DLC32 | DLC32 |
| Best for | Living rooms | Desktops | Side-table accent piece |
All models run the same software with FluidNC firmware — only the mechanical parts differ.
Free 3D-printable models on MakerWorld: DW OG · DW Mini
Build guides, BOMs, and wiring diagrams are in the Dune Weaver Docs.
The fastest way to get running on a Raspberry Pi:
curl -fsSL https://raw.githubusercontent.com/tuanchris/dune-weaver/main/setup-pi.sh | bash
This installs Docker, clones the repo, and starts the application. Once it finishes, open http://<hostname>.local in your browser.
For full deployment options (Docker, manual install, development setup, Windows, and more), see the Deploying Backend guide.
The sand table uses polar coordinates instead of the typical X-Y grid:
Patterns are stored as .thr text files — one coordinate pair per line:
# A simple four-point star
0.000 0.5
1.571 0.7
3.142 0.5
4.712 0.7
The same pattern file works on any table size thanks to the normalized coordinate system. You can create patterns by hand, generate them with code, or browse the built-in library.
Full setup instructions, hardware assembly, firmware flashing, and advanced configuration:
We welcome contributions! See the Contributing Guide for how to get started.
Happy sand drawing!