What I Learned in Previous Robot Designs

I’ve made a million errors along the way, while teaching myself robotics. As a hobbyist, I can excuse any and all manifestations of stupidity. Instead, I call it “curiosity” or employ another euphemism. Several times, I stumbled across knowledge along the way. That said, let’s jump into the main periods of sorrow and enlightenment.

Power Requirements

I would often underestimate the amount of power flowing through my designs. In the beginning, I would wire up things with whatever wire I had available. That worked fine when it was only two servos and the Raspberry Pi. Jumping to three or four stepper motors pulling over an amp each is an entirely different world.

With the current hardware, running 3 motors consumes the majority of the battery’s power. Switching to NEMA 14 lower-amperage motors would also cut the power requirements by half or more. It should also drop the total weight by maybe a 1kg, thus reducing the required torque to move about nimbly.

When tinkering, it’s often useful to have the battery charging while plugging the robot into its power cord. I never had a good solution to this in the past. Now my next idea is to have the battery in its own removable enclosure at the back of the robot. The enclosure could have a SPDT switch in it to allow toggling from discharge to charge mode. There would be a separate DC-in jack to directly power the robot with another SPDT switch to toggle the robot from pulling power from the battery or the wall. This way, I could never accidentally apply power in a Bad Way™. No more magic smoke coming out or melted wires.

Debugging and Tinkering

I found a beautiful 5″ touchscreen display. It works incredibly well, and doesn’t require much power. Debugging and previewing what the robot sees has been incredibly easy since then. The form factor is small enough that it’s easy 3D print an enclosure.

Placing the Raspberry Pi and Arduino close to the edge of the enclosure has been useful for saving space internally, debugging, and uploading new code to the Arduino. However, it then requires routing wires along the outside. That is not aesthetically pleasing, and presents a source of failure if the wires are stressed or snagged on something. Originally I had panel mount extension cables for the USB and network ports. That wastes too much space and clutters up the inside with more wires. A possible compromise would be to have an easily removable panel covering the ports. Another idea would be to forget the panel, and instead have all those ports behind the removable battery enclosure at back.


One of the original goals was to design a robot that fits in one of those 3×3 cube organizers. That has turned out to be easy enough, but now I want it shorter than before. Previous designs did not have good cable management. Some areas where zip-ties could be used would help.

Next Steps

The motherboard that will hold the stepper drivers and the Arduino is up next. I’m a bit apprehensive about having the Arduino and stepper drivers sharing the same power source. Hopefully beefy capacitors will be enough to smooth out the power.