Close

Log 0 – Motors, wrong turns and expensive decisions

A project log for RoboArm: Yet Another 3D-Printed Manipulator

DIY 3D-printed manipulator from off-the-shelf parts and random steppers, ESP32-based control with a simple API over USB, Bluetooth and WiFi.

stanislav-britanishskiiStanislav Britanishskii 01/01/2026 at 21:020 Comments

For the very first step of this project I didn’t actually touch any hardware. Instead, I wrote a tiny shell script to auto-create log files so I don’t have to do it manually every time. Classic: automating the logging system before doing any real tests.

For the initial tests I planned to use some cheap stepper motors I bought on Amazon a while ago – the usual 5-wire steppers with ULN2003 driver boards sold by Elegoo. I have almost no real experience with steppers, so I thought it would be a good chance to learn something.

Very quickly it turned out they are not a great fit for what I want. They only give me open-loop step control, no actual feedback, no current control, nothing “smart” I could use to estimate torque or position under load. Looking back, I’m not even sure why I bought them in the first place – I treated them like some kind of magic solution without reading enough about what I’d actually need for a manipulator.

So I ended up with three main paths:

  1. The easy way: use hobby servos similar to the ones from RoboDog, maybe slightly more powerful. The downside is the same as with the dog: no real internal state feedback, just the angle I asked for and hope it’s close to reality.

  2. DC motors + external sensing: use DC motors with external current control and either rotary potentiometers or absolute encoders for joint feedback. Potentiometers are a lot cheaper, but this adds more electronics and mechanical complexity.

  3. Cheat mode: use Dynamixel-style smart servos. They give me everything I want (position, speed, current, bus control), but at a price that explodes very quickly, and there is potential extra pain in integrating them properly.

After a long back-and-forth with ChatGPT and some thinking, I decided to go with “normal” servos, but not the 1 euro kind. I ordered a batch of much more serious servos, around 60 euro per piece, and I’ll probably need one more later. That hurts the “low budget” idea a bit, but it should give me more reliable joints and simpler electronics than a full DC + encoder stack.

While I’m waiting for the good servos to arrive, I’ll start working on the software side and test the basic control logic using my old cheap 9 g servos left over from early RoboDog versions. They are not strong enough for the final arm, but they are good enough to prototype the API and basic joint control without burning expensive hardware on day one.

Discussions