When I’ve heared about the Raspberry Pi computer for the first time, the first thing I thought was: ‚I want to build a robot based on this‘. Of course I wasn’t the only person to immediately realize the endless possibillities this little computer offers. Soon there were many discussions in the Raspberry Pi foundation’s forums about what could be done and how it should be done. These discussions were – and still are – a welcome source of inspiration to me and so first research on the topic started.
Like many other Raspberry Pi enthusiasts I’ve been into computers and electronics for many, many years now. More into coding and systems administration than building hardware actually. But when I was younger, I’ve learned the basics in electronics and digital technology thanks to a technical school I went to. So I hadn’t touched a soldering iron or electronics components smaller than a PCI card for about twenty years when I got my Raspberry Pi. Even more, I didn’t have a clue about how the big boys do build their amazing robots. The first thing I came across was the „Asuro“ robot, a simple robot kit for use in schools and universities. Building the Asuro was fun and I was amazed to see how much I’ve missed working with electronic parts and actually build and use something (after some minor troubleshooting that is).
After the Asuro I felt confident that I would be able to build my own robot. Not from a kit but from individual, pre-built parts. Doing some research on the web I found the ‚Dagu Rover 5 Chassis‚ which is already equipped with motors and usually being used with Arduino based microcontrollers. Also, Dagu offers a motor controller that will drive the motors in the chassis through so called PWM (pulse-width modulated) signals (if you don’t know what that means, don’t worry – I’ll explain that a little bit later). So eventually I ordered both parts and had a first base for my Project: RPiRover.
After I found a chassis and a controller, the next question was: ‚how do I connect the Rasperry Pi to the controller?‘ The main problem here is that the motor controller operates at a 5V level, while the Raspberry Pi uses a 3.3V level on its GPIO ports. And since we do not want to risk damaging the precious Pi by connecting a 5V circuit to the 3.3V GPIO pins directly, we need to find a way to convert the digital signals between the two voltage levels. A first solution I came up with was to build a simple transistor switch that would be triggered by the 3.3V impulse from the Pi and then in turn trigger a corresponding 5V impulse that the controller can operate with. This works nice but is somehow a clumsy approach (at least that’s what I think). So hey, maybe there is something like this already available?
This is where a smart little component called a ‚level shifter‘ comes into play. A level shifter is used to shift digital impulses from one voltage level to a different voltage level. Do you remember? Your Raspberry Pi sends digital impulses (or signals) to its GPIO pins using a 3.3V level, where 3.3V means ‚high‘ (1) while 0V is ‚low‘ (0). But maybe you want to use a digital motor controller that operates at a 5V level. Then you need a way to ’shift‘ your digital signals from the 3.3V level of the Raspberry Pi to the 5V level of the motor controller.
Fortunately, pre-assembled level shifters can be purchased for little money on the web so there is no need to solder your own. But you could if you wanted to since Spark Fun have released the schematic for their 4-port level shifter.
So now we have:
- A computer (Raspberry Pi) to send digital signals to the …
- motor controller that is used to control the …
- motors in the rubber-chain chassis of our robot. All conversion of the different voltage levels from the Pi to the controller is done by …
- level shifters. These convert digital signals from one voltage level to another.
With these componets we almost got all the neccessary hardware for our RPiRover. But just plugging it all together won’t make the rover roll. We need software to tell it how to move or measure how far it has travelled. We need to distribute different voltages to various parts of the hardware and provide power to the motors as well as the Raspberry Pi. Part two of this project report will deal with these issues. Stay tuned.