Hi, I’m Luca. I just registered to the forum but I’ve been following since I printed my mpcnc almost 2 years ago now. By following v1 on instagram I got to know the zenXY project and I got in love with sand tables. Now I’ve built one (not really a zenxy but I got inspiration from it) and I’ve been sniffing around a little bit now. I got to know sandify through the forum and I’m using it a lot for my table. The thing I was missing was a software to manage the table on the long term. Of course mine is not that original as an idea but I have been looking for a while for a good project to start programming again after some time.

So for the last two months or so, I’ve been working on this program (running on Windows and raspberry at the moment) that (in my unrealistic dreams) could become the “Octoprint clone” for sand tables.
Octoprint is good if you want to print one file at a time, but starting a drawing for a sandtable everytime can be boring.

The idea of my project is to create something that can feed the table periodically or even continuously. You prepare the drawings, load them to the software and choose how they should be done or when they should be done.

This as a first step: if the project gain some interest in may be possible to create something like a social network (read as “thingiverse” maybe) on which it’s possible to share the drawings or drawings playlists to which the table can connect and download a fresh drawing (lot of ideas here: something like topic playlists, most voted drawings, “discover weekly” (of course from spotify) or even more)

After all these words: I would like this project to become a community project. I don’t have enough time (and for sure knowledge, I’m not a professional programmer) to bring it along on my own.

The project is built on flask (python, html, css, js) because I think a web app for this will be more flexible (in order to connect to the table from a computer or a smartphone without the need of dedicated apps). Unfortunately my knowledge on web programming is quite basic (but for sure improving) so for sure some front-end expert could be a game changer here.

At the moment the project is more like a demo than a real software but I can give you the github link and a picture.

Please, let me know what you think about this.


I really like this idea. And I think the colors and look are great!

There’s no reason this can’t run on any Linux system, and I’m guessing it would also work on Mac, not just windows. But I’m not going to spend the money to confirm that :slight_smile:

I’m really into this. I need to sit down and really dig in to understand the ins and outs. I have done quite a few flask/js projects in the past, and I wrote sandify in react-bootstrap, pure js. It was an adventure, but I am much more comfortable with the workings of Python.

I also sort of maintain (sort of because I am always apologizing for how late I am) and I think something like that would work, but I am wondering if a better choice would be to just have this in a docker image that can easily be installed on any pi. IDK. Anything where people have to run commands on the command line is going to intimidate a large fraction of potential users.

Regarding the social networking/pattern sharing. I think that would be great, and I would really hate to make it :smiley:. It seems like a ton of work, and a lot of server side stuff that doesn’t sound very appealing at all. I would love to find a service that we could use as a backbone to take a lot of the security/costs/back end concerns away, like imgur, and then just create a neat front end that did some of what you’re asking for (ratings, recommendations, browsing, etc). Unless you think we could get a bazillion users and sell it to face book. Then I would consider spending a few weekends on it.

Anyway… This is epic, and I really like it. My machine is in pieces right now (I am printing some parts for it as I type this). But I definitely need to attach a pi to it and try this out. My machine runs grbl (esp32 grbl), so it would be a good stretch to see what needs to happen to accommodate that.

Very excited about this. You’ve named it, and got a color scheme. That’s the hardest part.


@bobnik, Check this out.

Great idea. Thanks for doing this.

I don’t have a fully functional sand table yet, but I do have the basic mechanics working. I hope to get an actual table built this winter.

I was thinking I would probably want a way to cycle randomly through a number of patterns I liked, but I was just thinking of a simple shell script or command line python program. This is WAY better than anything I could produce.


Thanks! I’m happy that the project can be interesting.

I’ve heard about it but I never used it. For sure everything that make the project more accessible it’s welcome.

Exactly what I was thinking :rofl: My hope is that by the time the project is mature enough to create the website an expert will show up to help :wink: (for sure a bazillion users would be nice :laughing:)
I’m sure you can find some orrible stuff in my code but my entire life is “learning by doing”. If you see something completely wrong just tell me :wink:

At the moment the gcode sender is pretty rough. I’ve tested it on marlin only and it is working but is not much reliable. When I have some time I will start to put down a list of things that can/must be done so that anybody with will can start doing something.

The colors where the easy part… Just googled for “zen color palette” :laughing:

I don’t know your programming level but I’m not an expert… It is not that difficult, it is just complex because it’s not plain python but you need to work also with web programming. Still there is work to do on the python side: if you want there will be for sure something to do there.

Of course any idea or suggestion is welcome. I think we can use this thread more or less like you are doing for sandify.


The project looks interesting. Sisyphus (my sand table vendor) ships with a phone app that lets you upload patterns, organize them into playlists, share them with the “community” and send them to the table. So I guess I’ve been spoiled lol. If you want, I can send you some screen caps, but honestly I think the app is frustrating to work with.

As a software engineer and recent contributor to Sandify, I will say that getting your project up and running on Github and posting updates, however modest, is a great way to attract the attention of like-minded and technically-proficient individuals to help.

Good luck!


I have the Zenxy table built to the extent that I can move the XY axis. I have a question . Does Sandify know that the movement of the XY axis is unique in that to move the X axis one motor has to turn one way while the other motor needs to turn in the opposite direction? The reason I ask this is because I am not using an ardrino MC. I have a standalone 4 axis controller that uses straight G code for routers. I am using two of its axis. I know its overkill but I had it laying around for several years and decided it would do the job.

No, it doesn’t. It is producing gcode with regular X and Y coordinates. The firmware is expected to convert those into motor commands (and appropriately apply limits on acceleration). If the controller is Marlin, there is a corexy config parameter. In grbl, there is one too, in the config.h, at least in the grbl_esp version I use.

Sandipy is unrelated to this though.

1 Like

Any update on the status of this project?

Also, I know you want to make this a Pi program, but have you thought about maybe incorporating it into the Duet3d/RepRap system? I like RepRap far more than Marlin, and it has a web control built in. There is also a growing community that has made it possible to run it off of the cheap 32 bit boards like the SKR lineup.

Hi! The project it’s going on… Quite slowly actually because between work and family my free time is not that much…

The project should be compatible straight away with reprap: the connection at the moment is through serial which should be compatible with all those 3d printer firmware… I have only a marlin board on hand so the code is tested only for that one. I’m quite sure there are still few bugs to fix but the software is doing his job. I tagged the version as an “alpha” because is not tested extensively and may be frustrating to use it sometimes.
I hoped someone could join me in the project but at the moment I’m working on it alone, so few commits per week. Lately I changed the frontend to use React.js because I was not satisfied with the static pages of flask alone… That was time demanding because it was new to me… Now I’m starting to improve the playlist functionalities: at the moment is possible to queue few drawings together without much control…

If you want you can altready test it: clone the repo and follow the readme instructions. It should be working on windows and linux for sure… If you want more info contact me or open an issue on github


I’d be more than willing to help with the project, I just haven’t actually built a machine yet nor do I have any experience doing any coding like this, but I am willing to try and help when/where I can.

Thanks! The project is becoming more complex than I expected (maybe also because I’m not a real software engineer).
It can be subdivided in two parts: server side in python and frontend in react.js+bootstrap+redux.

I think react is very powerful, but it requires some study at the beginning to understand how it work. After the first steps it becomes almost easy.
On the server side, flask is plain python more or less…

If you want have a look at the list at the bottom of the readme on github or at the issues to get an idea on what can be done. Maybe a good “first issue” can be about improving the uploaded files preprocessing (python). I can explain more in detail when I have a little more time if you are interested.

I’m most of the time away from home, so to test the code I introduced a “simulated device” to be able to work at the software even without the hw on hand. This means you can work on it even if you don’t have a real device on hand :wink:

1 Like

Is there a way in sandify to change the steps per unit. I have the ramps 1.4 with the A4988 step motor drivers? I have the three jumpers on both the X and Y axis for 16 micro steps. But when I move axis an
axis 10 MM it actually travels 20MM. I can probably get around this by going into Sandify and redefining the machines travel by half the 254 XY axis settings. Is there another way without have to change the firmware?

You can set your steps per mm with the M92 command from the console. So if your using 16T pulleys, 2mm pitch teeth, with 1.8degree stepper motors, and 16 microsteps, you would use M92 X100 Y100. Then use M500 to make the change permanent.

EDIT: Sorry had G92 instead of M92!

Should be M92 instead of G92.
G92 is used for axis zeroing. The example should be M92 Xxxx Yyyyy and then M500.

By the way, this is not the right thread for this. Sandypi it’s a different software (I’m starting to think the name should be changed :sweat_smile:)

Thanks. That should do it.
Dan Mauch

Whoops! My mistake! :sweat_smile:

Hi there,

I give a try with my arduino 0,9 grbl and can’t get it to work, does the minimum grbl must be V1 I guess ?

You might further if you describe what doesn’t work. I like to think about: what you tried, what you expected, and what you saw instead.


you’re right, I had no error messages in the terminal, ack ok from the printer but no move at all.

1 Like