I am working on a project which deals with a large number of stepper motors and other devices. A key feature I want to achieve is create a modular/ expandable system, so that new devices can be easily connected and programmed through a dedicated GUI. Currently what I have is following system: enter image description here 3 (or may be 4) stepper motors and drivers (+ other simple perephirals) will create 1 "device". So far it works fine. I managed to actuate them simultaneously (through pyfirmata). But so far this 1 device already uses 6 pins! Okay, I have read how to improve this using shift registers, making 3 pins for 1 device.

However, as mentioned, I want a modular system, similar to shown below: enter image description here Meaning that I have 1 main controller and devices connected to it. It doesn't have to be 1 pin to 1 device, I was also exploring options such as CAN. (Also, i suppose running single 12V line wont be enough, but that's something to consider at later stage).

I have researched various options such as: RS485, SPI, UART (using TMC2208 drivers) etc. Problem is that I could not find a proper example to see how it fits into my system.

Therefore my questions are:

What would be the best way to realise system I have described (1 main controller and multiple slaves/devices) + is it feasible at all? Could you give a simple diagram how this should be working What would be the most cost effective solution Some extra info:

Distance between devices is within 2 meters. At later stage the idea to create a PCB and make all systems more compact Motors and devices must work simultaneously Currently there is no feedback loop, meaning that master just sends pulses to drive steppers, no information back is required. Ideally use TMC2208 drivers

I would really appreciate any help! Please comment if you need more details


1 Answer 1


I would recommend something like this enter image description here Which you can program custom protocol and assign device ID to control them separately. You need to use high level command such as G-code instead of digital signal.

Alternatively, if you can go really slow you can use cascade shift register to connect them all together with daisy chain configuration but I would not recommend that. I will take very long time to shift the signal to last module.
enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.