25 stepper motors with arduino

I want to control 25 stepper motors with arduino. Steppers are super small like those:

I've seen that it is possible to control small steppers without additional driver:


My goal is just to move it to one end or the other, no microstepping, just simple movement to the beginning or the end.
I know that i need external power with so many steppers, but i wo not know how to multiplex the signal somehow. I've seen 16-channel PWM for servos like this one:

But im not sure if i can use it somehow for such simple stepper?

So the question is how can i do it cheap? Stepper drivers would be to expensive at the scale (stepper is about 0.05-0.1$ each so something in similar price range for controlling each of it should be appropriate)

I need some direction what should i research, because at this moment I'm a little bit stucked:)
Thank you in advance for any help:)

AFAIK each of those motors will need 4 connections to Arduino I/O pins - so 100 pins for 25 motors. That would take up most of the pins on two Arduino Megas. Also you will probably find that you would exceed the combined current capability of the Atmega MCU if you had motors on all possible pins

You have not told us what all 25 motors will be doing and I suspect a bigger limitation may be the ability of a 16MHz Arduino to generate enough pulses per second for all 25 motors.

I think if this was my project I would be inclined to use a number of slave Atmega microprocessors to drive groups of motors - you could drive 3 (maybe 4) from an Atmega 328 or 2 from an Attiny84. Those MCUs could take instructions from a central unit (maybe a Mega) telling them what moves are required. Because each slave MCU is only concerned with a few motors it should have no problem with the step rate.


Indeed, I did't calculate that, but if clock is the limitation I cane use esp8266 or esp32, which has faster clock.

I know that there is also total current limitation, so that is why i was thinking about make it somehow I2C, so i can just send instruction - forward/backward, im just making assumption as electonics is not my main field:)

So maybe delegate to other atmegas is good option, as i can send just motor number and command to each smaller atmega, and thats is all.

Is it indeed possible to control such small engines without any additional hardware as on those yt movies (resistors/capacitors etc?) or should i somehow add something for atmega safety?

I don't see the ESP8266 as a solution in this case as it has much fewer I/O pins, it operates at 3.3v and the I/O pins have much lower current capability.


I've played with these motors, they tend to use more current than one Arduino pin can handle, so you'd
need 8 pins to drive one motor, and of course 8 schottky free-wheel diodes to protect the pins from inductive
kickback (for instance a QSBT40 will do this for one motor).

It is possible that i will need to control more of them later. So it will need a lot of arduinos with 8 pins:)
I've read more and more and I think i will go with L293D driver, as i can bulk buy 100pcs for around 20$. And then i will be able to change motors for little bit stronger if needed.

I've seen here that I can use just a driver without additional electronics. If it's possible that would be great as i want to keep project as simple as possible.
NodeMCU is for wifi control. So probably nodeMCU will be main "brain" and sending commands to arduino nanos controling each 4 of steppers through L293D.

Unless I can use other cheaper similar driver?

That is my current concept, no idea if this is best sollution:) From pricing point it turns out that it is same price to buy arduino nano or just Atmega328, so i will go with nano probably.

I've also seen that i can use 2 pins to control stepper like on the last page of this docs:

but im not sure if additional electronics and soldering is worth the time and hassle.

Im not sure if my thinking is correct, but i think this can work:)