|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.|
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.
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.
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 https://github.com/allegrobotics in 'redbot'.
The Android program just needs to open and initialize 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.