Little robot with continuous servos.


Arduino Nano EBay / Jaycar Arduinos are better than Raspberry Pis at talking to 5V peripherals (like the EasyDriver), and doing repetitive grunt work to take the load of the Pi.
Servo and Wheel EBay Continuous servo with wheel. Note these must be continuous servos, not normal servos.
Bluetooth receiver EBay To receive from whatever controller you are using.
Mini Caster Bunnings This is smallest one which Bunnings sell
Cheap android phone Bottom drawer Cheap android phone (Everyone has one of these lying around).
7.4V Li-ion battery EBay / local hobby shop Light and powerful
Veroboard Jaycar This can be used both as a platform, and for soldering circuits.
Perspex Jaycar To mount stuff onto.

Other similar builds

The inaugural kit robot from Spark Fun. Fun to build, but the power was so lacking it wouldn't even run over carpet. Very disappointing.

I thought that it was because they had given me motors with too high gearing, so I went and bought some others, but the situation didn't improve. Then I replaced the motor controller (and then CPU) with the one I whinged about in this experiment and the power was fine. Basically, the RPi hat / motor controller in this kit is useless.

I revamped this into a MazeRunner (below).

This was the first attempt at a house-bot from scratch. Don't do this way. Firstly lead-acid batteries are very heavy things for small robots to pull around. Secondly stepper motors don't actually have a good power to weight ratio. I thought they would be good for dead-reckoning, but there are too many disadvantages.

If you do this way, and you are thinking of using the EasyDriver from SparcFun then don't. Use the BigEasyDrivers instead. You won't get enough power out of the EasyDrivers.

.. and use a lithium battery.


So a much smaller robot based on continuous servo motors was built.

Much of what holds the unit together is V-board, and a small piece of acrylic (which I picked up from Jaycar) for the base.

The motors are held onto the board with small zip cable ties.

This was an attempt to drive the servos through buzzing produced by the stereo headphone jack from the phone. This worked pretty well, but be warned: it will not work on some cheapie phones. I tried this on a cheapie phone and

1) the polarity was wrong and

2) there was a DC offset problem.

I would never have discovered these problems without an oscilloscope. It worked much better on an expensive phone, but I didn't have one of those to spare, so I moved to the Bluetooth solution.

The phone is held in place with two strips of acrylic, heated up until soft, and then just bent into a U before cooling. A 3D-printer would provide a better solution.

One of the many great things about the Arduino Nano is that it has a built-in power supply regulator, and runs happily of the 7.4 volts or so from the Li-ion battery.

In this case the Arduino Nano just needs to read instructions from the serial input, and move the motors accordingly, using a PWM library. The bluetooth chip is connected to the serial IO of the Nano.

RedBot revisited

Some more effort, some more parts, and some 3D printed brackets, and the Sparkfun robot base makes a pretty good maze runner.

The code is at in 'redbot'.

With a 3D printer

Housebot Lots of cool stuff can be done with a 3D printer. And a Mega Pi.
The battery has its own holder between the base and the Raspberry Pi.
Another base can be printed and put onto the top of the Mega Pi, for sensors (camera, lidar or whatever). Another good project for the winter months ..

Software on Android


The Android program just needs to open and initialise the bluetooth channel and send the appropriate commands.

Android phones already have magnetometers, gyroscopes, accelerometer, GPS and a screen built in.

However the modern Android versions deliberately make it hard to access the bluetooth for security reasons. Generally the user has to okay the access to these things manually at each start-up, which compromises the notion of autonomy.

Leave a comment

Something I'm doing wrong? Solved my problems? Got a better idea? Got a similar problem?
Think I might have solved your problem? Ninety-nine problems, but your robot ain't one? Say so ..