Robotics is a big part of the Raspberry Pi and microcontroller communities. The merging of code and electronics to make an object move is a great motivator for STEM education. Because motors draw far too much current for a typical GPIO pin to handle, we need to use a motor controller or driver board to protect the GPIO by enabling the Pico to control a chip on the board.
Kitronik has released two motor control boards for the Raspberry Pi Pico. The $13 (£9) Pico Motor Driver is the smallest board, aimed at basic Pico robotics projects and ideal for learners who want to make a quick robot with DC motors and simple sensors. The $18 (£13.20) Pico Robotics Board is larger and comes with many more motor options. With this board we can control up to eight servo motors, two stepper motors and four DC motors, but we lack ready access tothe GPIO inputs found on the Pico Motor Driver, but for those of us skilled with a soldering iron these can be easily added using the solder pads underneath where our Pico resides. Both of the boards come with power input terminals for use with batteries / power supplies up to 10.8V. The single power source provides power to the robot and the Raspberry Pi Pico which simplifies the design of a project.
We put both of these boards on the bench and built a few test projects to take advantage of the features found on both boards.
The larger of the two boards is the Kitronik Pico Robotics board and with the larger size we get more features. Packed into the 2.6 x 2.2 inch (68 x 56 mm board is a space for the Raspberry Pi Pico, or Pimoroni’s Pico Lipo along with four motor outputs driven by dual DRV8833 motor drivers. We can use these terminals to power four DC motors or two stepper motors. Moving to the right side of the board, we see eight headers for use with hobby servos such as the SG90 or MG90S. The headers interface directly with the servo using the Signal, Voltage, Ground (SVG) common pinout. On the far left of the board is a power input terminal where we can connect a battery pack and provide upto 10.8V for powering the many motors and to power the Raspberry Pi Pico via a built-in regulator. We can connect the Pico to the computer and to the external power source at the same time as there is a diode between the regulator and the 5V pin of the Pico which will prevent accidental damage.
The smaller of the two boards is the Pico Motor Driver board, measuring just 2.44 x 1.33 inches (62 x 34 mm) ; this board is solely designed for use with two DC motors via a DRV8833 motor controller. Power input remains the same with a 10.8V max input and a diode in place to prevent over voltage of the back powered Raspberry Pi Pico. What is unique to this board in Kitronik’s range is that we have screw terminal breakouts for four GPIO pins and 3V , GND which are useful for sensors and inputs to give our robot “vision”. In front of the screw terminals, and printed on the underside, are the GPIO pins used for the terminals, with the exception of the motors which are abstracted in the Python libraries. The Pico Robotics board does not have any GPIO broken out in this manner so there are only labels for the motors. But remember that we do have access to the GPIO using the solder pads, located underneath the Pico.
Using the Kitronik Pico Robotics Board and Pico Motor Driver
Integrating either of the boards into a chassis is made easier thanks to mounting holes on the boards. These are used to secure the board to the chassis. If you are 3D printing or laser cutting your own chassis then the position of the mounting holes can be added to the project for a bespoke fit. If you are using a generic robot chassis, then there should be a suitable position.
The Pico Robotics Board is clearly designed for larger, more complex robotics projects, evident by the sheer number of motors and servos that can be driven from it. It also hides a PCA9685PW IC which is used to communicate with the board over I2C. The Pico Motor Driver is a simpler board and uses PWM to control the speed of motors.
This means that the MicroPython and CircuitPython libraries for both boards are incompatible, but the syntax of the libraries means we can port code from one board to another by simply switching between the libraries. Just remember that the Pico Motor Driver is not compatible with servos and stepper motors.
We tested DC motors, servos and a large stepper motor on the Pico Robotics Board and the only issue we found was determining the pinout of our stepper motor, everything else just worked with the minimum of effort. Keep in mind that a stepper motor can pull around 1.2 Amps at 4V so your external power source may get a little warm.
The frictionless onboarding process afforded by the great hardware is what helps makers to concentrate on building their project. The Pico Motor Driver, while only capable of DC motor control, is also a frictionless experience, we even created a tutorial on how to build a simple Pico-powered robot by using this board and how to use it with a simple switch input.
Our tests centered around the provided MicroPython libraries, but just as we were coming to the end of the tests we were alerted to official CircuitPython libraries for the boards, so we flashed the latest version of CircuitPython to our test board and then copied the appropriate libraries to the board. The CircuitPython library is almost identical to that of MicroPython, with only the use of utime versus time being a difference. This means that we can port our projects from one version of Python to another.
Use Cases for the Kitronik Pico Robotics Board and Pico Motor Driver
Both of these boards are geared towards robotics. The Pico Motor Driver is the best option for those looking to quickly build their first robot. The screw terminals for basic GPIO access are most welcome, more would’ve been nice but we have enough for basic projects. The Pico Robotics Board is a much more powerful beast and the plethora of motor options provided is impressive. If your robot relies on stepper or servo motors then this is the board that you will naturally gravitate towards.
Another option for GPIO access, which Tom’s Hardware Editor-in-Chief Avram Piltch tried successfully, is to attach Pimoroni stackable headers to the Pico so it has female pins on its top surface which you can connect to jumper wires.
Whether your robot is large or small, these two boards are just the thing no matter your ambitions or skill set. The MicroPython and CircuitPython libraries are simple to use and provide an abstracted means to control your robots. From simple DC motor speed controls to high precision stepper motors, the libraries abstract the complexities away and provide a means for makers to create.
The lack of GPIO access on the Pico Robotics board is a shame, as we are using I2C there are plenty of GPIO pins that could’ve been broken out for use. The GPIO access on the Pico Motor Driver is great for basic inputs such as obstacle sensors, ultrasonic sensors and bump switches, but if you need more, consider getting a stackable header for your Pico. The single power source is fantastic and removes the need for two power sources which can be tricky to neatly enclose in a project.