Need help to build a Drawbot for art project

Hi everyone,
I am a french artist, you can find my work here:
https://www.adrienblondelphotography.com/

I need help building a drawbot or some kind of plotter that could use the code from this Brownian movement simulator: Brownian Motion | MinuteLabs.io, but using just one of the particles.
The idea is to have the robot draw continuously on a roll of paper that will be slowly rolled out by a motor.
I talked to the creator of the lab, and the code is available on Github. It is written in Javascript.

Would that be possible?

Thanks!

Adrien

Much more detail is needed, specifically on what that "drawing" exactly entails. What range of movement? How many degrees of freedom? How fast?

Thanks for the response. The drawing area would be approximately a size A4. The drawing would be the trajectory of one particule in the brownian motion simulation, a chaotic movement, and I am only interested in having the drawing action to be constant, with no final result planned.
I am not sure what you mean by degree of freedom...
The speed does not matter very much, probably close to what is obtained by putting the energy cursor all the way up in the simulation.
Hope that helps
Thanks

Some sketches of what you have in mind will be very enlightening.

There's an A4 sized drawing area, suggesting two axis of movement for the arm (or more commonly the table itself with the pen fixed above it - commonly called an XY table), so two dimensions. Real Brownian motion is in three dimensions, that simulator is a projection of that in 2D.

Translating the algorithm from Java to C++ shouldn't be too hard. An Uno type board won't do because of lack of memory; you'll need an ESP8266 or Teensy. Maybe an Arduino Mega, also has quite some RAM to play with but less processing power.

How does this "slowly rolled out by a motor" come in play?

Thanks!
Yes, I am sticking to a 2D representation.
I attached some sketches of what I have in mind. The black cross on those is the drawing bot itself, I first thought of some sort of XY plotter.

That is actually quite close to what I envisioned based on your description.

The XY arms should be easy to find - thinking of the 3D printing and CNC worlds, there such contraptions are used routinely. May not look special enough for an arts project, though.

The hard part is definitely going to be the algorithm.

If you want it rolled out continuously - will the motion be confined to a 1-dimensional axis? Not sure that you can or would want to use the code on that website then.

PaulMurrayCbr:
If you want it rolled out continuously - will the motion be confined to a 1-dimensional axis?

That would give a very different drawing.
I think it's safe to assume the left/right motion of the XY plotter is to be much faster than the speed at which the paper is pulled through.

wvmarle:
That would give a very different drawing.
I think it's safe to assume the left/right motion of the XY plotter is to be much faster than the speed at which the paper is pulled through.

Oh - x/y plotter. I missed that bit.

The paper will roll out very slowly, and the plotter will indeed move faster, and move left and right, sometimes coming back on parts of the paper already drawn upon.

Project becomes pretty clear to me.
Now which parts exactly do you need help with?

It's mostly about the kind of hardware I need to get, that could work with external code, and precisely the one we discussed: here it is by the way if you want to have a look

Oh...Javascript, not Java. I misread that first.

Just thinking about it a bit. You want to simulate the motion of a single particle, which is randomly affected by impacts - impacts at random moments, and at random direction and force.

That means you don't need to simulate all the other particles, just the one.
Every time you loop the program:

  • decide (randomly) whether you have an impact.
  • if so, decide (randomly) what the force and direction of that impact is, and based on it calculate the new speed and direction of motion of the main particle (your pen).
    Based on the calculated current speed/direction of the motion you calculate the new position of your XY frame, and move the pen there. When reaching the borders of the frame you can have your pen "bounce" off of it.
    This doesn't need much memory or processing power, an Uno or equivalent will handle this just fine, including control of the stepper motors that handle the frame. The speed/direction of the pen can be held in two float variables (one for x, one for y); the current position in two more floats. That's all.
    Probably easiest implementation is by using three timer interrupts (one for pulsing the X stepper, one for pulsing the Y stepper, and one for doing the calculations).

Thanks!
That's very helpful!

For instance, would this kind of hardware be compatible with an Arduino board and external code?

One of the images shows what looks like an Arduino board with two stepper controllers.

An Arduino can control stepper motors just fine, using an appropriate stepper driver board.

wvmarle:
Oh…Javascript, not Java. I misread that first.

HA! I was just about to comment on that! (but you already saw it)
If you are getting the ‘data’ from an external source…

would you really need to account for the ‘impacts’ for the tiny/invisible parts?

the ‘app’ already does that… and then the main ‘particle’ is already given a directions/coords…no?

maybe I missed it? but I didnt see any examples of the ‘code’ it outputs?

and do you need 3 steppers?

Woulndt just a X_axis work? with the paper moving up/down to control the ‘Y’?