Building an electric motor isn’t hard or technically challenging, but these motors have very little in the way of control. A stepper motor is usually employed in applications that need precision, but adding this feature to a motor adds complexity and therefore cost. There is a small $3 stepper motor available, but the downside to this motor is that it’s not exactly the Cadillac of motors, nor was it intended to be. With some coaxing, though, [T-Kuhn] was able to get a lot out of this small, cheap motor.
To test out the motors, [T-Kuhn] built a small robotic arm. He began by programming his own pulse generating algorithm that mimics a sine wave in order to smooth out the movement of the motor. An Arduino isn’t fast enough to do these computations, though, so he upgraded to using the ESP32. He also was able to implement the inverse kinematics on his own. The result of all this work for a specific platform and motor type is a robotic arm that has a very low cost but delivers performance of much more expensive hardware.
The robot arm was built by [T-Kuhn] too, and all of the details on that build, as well as all the schematics and code, are available on the project site if you need a low-cost robot arm or a good stepper motor controller for a low cost. There are many other ways of getting the most out of other types of low-cost motors as well.


Perhaps unsurprisingly given the prevalence and cost of these devices, the answer is quite simple. The key interaction is between a permanent magnet mounted to the end of the waving arm/pendulum and a many-turn wire coil attached to the body. As the magnet swings over the coil, its movement induces a voltage. A small blob of analog circuitry reacts by running current through the coil. The end effect is that it “senses” the magnet passing by and gives it a little push to keep things moving. As long as there is light the circuit can keep pushing and the pendulum swings forever. If it happens to stop a jolt from the coil starts the pendulum swinging and the rest of the circuit takes over again. [Josh] points to a similar circuit with a 



