When i was a child, I was dreaming of the Omnibot 5402, I loved its size, its ability to be radio controlled, it could speak and it could record movements on a built-in tape recorder and it could carry things. A perfect companion!
When you get older, you can make some of your youth dreams come true. So two years ago, I was lucky to get not only one, but two Omnibots on Ebay for 99$ (tax and shipping summed up to another 200$, though 😀 ):
I cleaned the battery compartments of the remote control and the white one and made sure that these work properly, I replaced the original batteries with 2S 7.4V LiPos and bucket converters (max 20 Amps for the Omnibot itself):
But the real fun starts with the yellow Omnibot:
- I wanted to have a Raspberry Pi controlling it,
- a decent Bluetooth remote control with more options,
- the arms moving,
- a camera for computer vision
- USB sound card with a loud speaker and a microphone
- LED matrix eyes for emotional expressions and to indicate where the robot’s looking at
So, the journey starts with decomposing it and enjoying how it is constructed:
That’s the lower part containing the four wheels that are driven by two motors in the gear box.
Of course, we want to keep the robot as original as possible, so I needed a H-bridge controller to control these two motors.
I took the original cable from the Omnibot’s motherboard and connected it to a Motor HAT from Adafruit. In that way, it was easy to use their examples to control the motors using Python.
Next I’d build this into the base, add LiPo power to the motor controller and USB battery power to the Pi:
Finally, I’d add some code to connect by 8bitdo sf30 Pro Gamepad via Bluetooth to it:
I decided to use the D-pad to control the Pi since I wanted to use the thumbsticks for the arms. The D-pad can be used to drive the Omnibot like a tank, forward lets both motors go forward, rotation on the spot can be achieved by turning the motors in opposite directions. Since the motor control is PWMed, we can also set the speed so that the speed is independent of the battery level.
You can find a tutorial on how to read a gamepad via python here.
The next blog entry will cover the movement of the arms.