Skip to content

XRP Controller Overview

In this document, we'll take a close look at the heart of the Experiential Robotics Platform (XRP) Kit, the XRP Controller. This document outlines all of the parts on this board you'll interact with while building and using the XRP Kit.

Controller Board Overview

Let's take a broad look at the major components on the XRP Controller. The photo below points them out along with their names:

Overview photo labeling the major components and other hardware on the XRP Controller Board

Having trouble seeing the detail in the image? Click on it for a larger view.

You'll notice that along with the arrows showing the name of some of the smaller components, the board uses what's called silkscreen to label all the connectors, buttons, LEDs and other parts you'll interact with while building and using the XRP Robotics Kit.

Raspberry Pi RP2350 & Radio Module 2

The Raspberry Pi RP2350 acts as the brain of this board. The RP2350 communicates with the motor controllers, IMU and other components to control the robotics kit's behavior. The Raspberry Pi Radio Module 2 (RM2) adds wireless connectivity to the XRP Controller over both WiFi and Bluetooth®. The photo below highlights the RP2350 and RM2 on the Controller Board:

Photo highlighting the RP2350 IC

Think of the RP2350 as a brain sending signals to other parts of the "body" to tell them what to do. It has several General Purpose Input/Output (GPIO) pins that connect to the other major parts on this board so it can send and receive data from them and return it to you visually (such as seeing the motors move) or virtually (such as watching data on a computer monitor).

The Radio Module 2 connects to both WiFi networks and Bluetooth devices allowing wireless connectivity for the XRP Kit. It communicates with the RP2350 over its serial peripheral interface (SPI) and also has a few general purpose inputs and outputs (GPIO) that are connected to the two 2x20 expansion headers on the XRP Controller Board.

DRV8411A Motor Drivers

The pair of DRV8411A H-Bridge motor drivers from Texas Instruments on the XRP Controller Board control the direction and speed of the XRP Kit's motors.

Photo highlighting the motor drivers.

The term H-bridge comes from how this circuit design looks on a schematic diagram. It has four internal switches that control whether the motor spins Clockwise (CW), Counter Clockwise (CCW), Coasts (no drive power), and Stops. When going through the XRP Kit curriculum you'll learn how to program the robot to tell the motor drivers to control the motors' speed and direction.

LSM6DSO 6-Dof IMU

The LSM6DSO 6-DoF (Degrees of Freedom) IMU (Inertial Measurement Unit) from STMicroelectronics combines an accelerometer and gyroscope into a single IC (integrated circuit). This sensor lets you measure the robot's acceleration in three dimensions and also measure the orientation and angle of the robot.

Photo highlighting the 6 DoF IMU.

The accelerometer in this chip has four measurement ranges of ±2/±4/±8/±16 g. These ranges allow you to customize the limits of the acceleration forces measured. The gyroscope has five selectable measurement ranges of ±125/±250/±500/±1000/±2000 DPS (degrees per second). Refer to the silk screen symbols on the XRP Controller for the directions of each axis.

Power Components

Now let's take a closer look at the parts on this board used for providing power to it.

Photo highlighting the power components.

Barrel Jack Connector

The barrel jack connector is the primary power input for the entire XRP Kit. This connector mates with the cable from the XRP Kit's battery pack for battery-powered operation. Take note that the maximum safe voltage that can be applied to this connector is 11V and the minimum to run the system is 5V. The 4-AA battery pack included with the kit supplies a maximum of 6V so most users will have no issues exceeding the max voltage.

USB-C Connector

The USB-C connector provides power to the XRP Controller Board with 5V from a USB cable. It also is the primary interface you'll use to initially set up the XRP Controller Board with a computer and program the RP2350 using a USB-C cable.

Power Switch

The power switch highlighted above controls the voltage input to the Controller Board. This two-way switch turns the kit's power on and off. You can use this to turn the robot off while keeping the battery pack plugged in. The switch does not affect the RP2350's power when a USB cable is plugged in.

Motor Connectors

The Controller Board has four six-pin connectors labeled Motor L, Motor R, Motor 3 and Motor 4 and four three-pin connectors labeled Servo 1, Servo 2, Servo 3 and Servo 4.

Photo highlighting the motor connectors.

DC Motor Connectors

The DC Motor connectors are where you'll plug in the left and right motors while assembling the kit. These connectors include the power connections for the motor as well as the encoders on the motors. The board routes these connections through the motor drivers to GPIO pins on the RP2350. You'll use these pins to monitor how many rotations the motor completes and use that data to determine how far the robot has traveled. Refer to the Pinout table at the end of this document for the specific GPIO pins each motor connects to on the RP2350. The Controller Board has two extra motor connectors for expansion projects using more than two motors.

Servo Motor Connectors

The four three-pin connectors on either side of the board labeled Servo 1, Servo 2, Servo 3 and Servo 4 mate with servo motors. You'll use the Servo 2 connector to hook up the servo included in the XRP kit. The other three connectors are extra for expansion projects. These connectors have power pins (5V and Ground) and a signal pin to control the motion of the servo motor. Servo motors use a communication method called pulse width modulation (PWM) that tells the motor to move and with some motors, where to move to. If you're interested in learning more about how servo motors work, you may want to check out SparkFun's Servos Explained page for information and tutorials on how to use them.

Sensor & Qwiic Connectors

The Controller Board has four four-pin connectors labeled (from left to right when looking at the labels upright) Line, Qwiic 1, Qwiic 0 and DIST. Their labels indicate their use as well as which GPIO pins they connect to on the RP2350. These connectors provide an easy plug-in connection for the line follower and distance sensor as well as two extra connectors for expansion projects. These connectors are polarized meaning they only work when connected properly but they are keyed and there is only one way to plug a cable into them.

Photo highlighting Qwiic and expansion connectors

Line Follower Connector

The Line connector is where you'll plug the cable for the line follower sensor into. This connects the sensor's two signal lines, Left and Right, to the RP2350's GPIO44 (Left) and GPIO45 (Right) pins. You'll use these pins to monitor whenever the sensor detects the robot has gone past the left or right threshold when performing line-following experiments. When connecting the Qwiic adapter cable that plugs into this connector, make the following connections to the Line Follower Sensor:

  • Red - 3.3V
  • Blue - S1
  • Yellow - S2
  • Black - GND

Distance Sensor Connector

The Dist connector is where you'll plug the cable for the ultrasonic range sensor into. It connects the distance sensor's Echo and Trigger lines to the RP2350's GPIO0 (Trigger) and GPIO1 (Echo). You'll use these pins to receive distance data from the ultrasonic range sensor. When connecting the Qwiic adapter cable that plugs into this connector, make the following connections to the Distance Sensor:

  • Red - VCC
  • Blue - Trig
  • Yellow - Echo
  • Black - GND

Qwiic Connectors

The Qwiic connectors work with SparkFun's Qwiic ecosystem of sensors that communicate over I2C. This is a two-wire communication protocol that works with a large variety of sensors and other electronics. With this, you can customize the XRP Kit to add things like environmental sensing, OLED screens, data logging, and more!

Buttons

The Controller Board has three push buttons labeled USER, RESET and BOOT (on the RP2350).

Photo highlighting buttons.

The USER button connects to GPIO36 on the RP2350 which allows it to be programmed for various purposes. The RESET button does just what its name suggests and resets the entire board when pressed. This can help to reboot the robot or to restart a sequence you want the Robotics Kit to perform. Holding the BOOT button either when plugging in a USB cable or when pressing the RESET button sets the RP2350 to behave as a mass storage device when connected to a computer for uploading firmware.

LEDs

There are five LEDs on the XRP Controller Board labeled MOT, SYS, LOW VOLT, STAT and RGB.

Photo highlighting LEDs

These LEDs are there to provide a visual indication to users. The LEDs labeled MOT and SYS turn on when their respective power rails are powered. The MOT LED turns on when the motors have power available. The SYS LED turns on when the 3.3V/System circuit is powered. This circuit powers the RP2350, RM2, sensors, and the expansion connectors. The LOW VOLT LED connects to the 5V Buck regulator POWER_GOOD pin. It provides a quick visual indicator to notify users that the supply voltage has dropped below the operating threshold and the board is underpowered. This is not technically a low battery indicator but it coincidentally starts illuminating when 4xAA batterys are low, depending on the battery chemistry.

The other two LEDs labeled STAT and RGB are user-programmable status LEDs you can program for whatever behavior you prefer. The STAT LED connects to GPIO0 on the Radio Module and can be useful to indicate behavior from the radio such as connection status or data transmission. The RGB LED connects to GPIO37 on the RP2350 and can be programmed to change to any color based on whatever behavior you'd like. For example, you can have it turn from Green to Red when the distance sensor detects the robot is nearing an obstacle.

Expansion Headers

The XRP Controller Board now features a pair of 2x20 female headers that connect to nearly all the RP2350's and RM2's available pins to allow for more customization options for the XRP platform. Many of these pins are shared between the connectors and other components on the XRP Control Board so take care to ensure they are not being used by any peripherals (motors, sensors, etc.) before connecting and programming them for a different functionality.

Photo highlighting 2x20 expansion headers.

The inner rows of this expansion header nearly matches the pinout of the Pico W 2 (minus the analog-to-digital conversion pins) and can be used with peripheral boards that work with the Pico 2 W. Please note this is NOT a socket for a Pico 2 W. The outer row contains available GPIO pins from the RM2, extra GPIO pins from the RP2350 along with voltage pins. The image below and following table offers a quick reference for the pinout and labels on the expansion headers as well as any other connectors (motors, sensors, etc.) or peripheral (button, LED, etc.) shared between them.

Photo highlighting pin labels on the XRP Controller board.

Table of expansion header pinout

Solder Jumpers

Warning

These solder jumpers can change the behavior of the board in a lasting way. Using these requires extra tools not included in the XRP Kit along with knowledge of how to use and interact with solder jumpers. We recommend that only advanced users adjust and change the solder jumpers. If you'd like to learn more about how to use solder jumpers, check out SparkFun's How to Work with Jumper Pads and PCB Traces tutorial.

The XRP Controller Board has fourteen solder jumpers. A solder jumper provides a customization option for advanced users to control the behavior of the pins and components they connect to. The solder jumpers on this board are labeled (from top-to-bottom reading left-to-right when looking at the photo below): I2C0, I2C1, M-L/3 REF, M-L CUR, M-R CUR, M-3 CUR, M-4 CUR, M-R/4 REF ADR, VIN MEAS, BYPM, SHLD, PWR MOT and PWR SYS.

Photo highlighting solder jumpers.

Label Default State Function Notes
I2C0 CLOSED Pulls SDA/SCL on I2C 0 to 3.3V through two 2.2kΩ resistors. Open completely to disable the pull up resistors on the I2C 0 bus.
I2C1 CLOSED Pulls SDA/SCL on I2C 0 to 3.3V through two 2.2kΩ resistors. Open completely to disable the pull up resistors on the I2C 1 bus.
M-L/3 REF CLOSED Sets the Left/3 DRV8411 motor driver's voltage reference to 3.3V Sets the DRV8411's reference voltage to match the system voltage. Open to set to a different voltage.
M-L CUR CLOSED Connects the Left Motor current sense output to IO40. Lets users measure motor current draw using the ADC on IO40. Open to free up IO40 for other use.
M-R CUR CLOSED Connects the Right Motor current sense output to IO43. Lets users measure motor current draw using the ADC on IO43. Open to free up IO43 for other use.
M-3 CUR CLOSED Connects the Motor Three current senss output to IO41. Lets users measure motor current draw using the ADC on IO41. Open to free up IO41 for other use.
M-4 CUR CLOSED Connects the Motor Four current sense output to IO42. Lets users measure motor current draw using the ADC on IO42. Open to free up IO42 for other use.
M-R/4 REF CLOSED Sets the Right/4 DRV8411 motor driver's voltage reference to 3.3V This sets the DRV8411's reference voltage to match the system voltage. Open to set to a different voltage.
ADR CLOSED Sets the LSM6DSO's I2C address to 0x6B. Open to switch the I2C address to 0x6A.
VIN MEAS CLOSED Connects the VIN measurement circuit to IO46 Open to free up IO46 for alternate use
BYP OPEN Enables the fuse for the barrel jack input. Close to bypass the fuse for the barrel jack.
SHLD CLOSED Connects the USB-C shield pin to the board's ground plane. Open to isolate the USB-C shield pin
PWR MOT CLOSED Completes the Motor Power LED circuit. Open to disable the Motor Power LED.
PWR SYS CLOSED Completes the System Power LED circuit. Open to disable the System Power LED.

Pinout Reference Table

The table below gives a quick reference for the complete pinout of the XRP Controller and which pins they connect to on the RP2350.

RP2350 GPIO Pin Connector/Peripheral Label Expansion Header Pin Label Pin Function
GPIO0 DIST 0 Distance Trigger Pin
GPIO1 DIST 1 Distance Echo Pin
GPIO2 Motor 4 IO2 Motor 4 Encoder A
GPIO3 Motor 4 IO3 Motor 4 Encoder B
GPIO4 Qwiic 0 IO4 I2C 0 Data Signal
GPIO5 Qwiic 0 IO5 I2C 0 Clock
GPIO6 Servo 1 IO6 Servo 1 Signal
GPIO7 Servo 3 IO7 Servo 3 Signal
GPIO8 Servo 4 IO8 Servo 4 Signal
GPIO9 Servo 2 IO9 Servo 2 Signal
GPIO10 Motor 4 IO10 Motor 4 Phase Pin
GPIO11 Motor 4 IO11 Motor 4 Enable Pin
GPIO12 None IO12 Available I/O
GPIO13 None IO13 Available I/O
GPIO14 None IO14 Available I/O
GPIO15 None IO15 Available I/O
GPIO16 None IO16 Available I/O
GPIO17 None IO17 Available I/O
GPIO18 None IO18 Available I/O
GPIO19 None IO19 Available I/O
GPIO20 Motor 3 IO20 Motor 3 Phase Pin
GPIO21 Motor 3 IO21 Motor 3 Enable Pin
GPIO22 Motor 3 IO22 Motor 3 Encoder A Pin
GPIO23 Motor 3 IO23 Motor 3 Encoder B Pin
GPIO24 Motor R IO24 Motor R Encoder A Pin
GPIO25 Motor R IO25 Motor R Encoder B Pin
GPIO26 None None RM2 Power On
GPIO27 None None RM2 Chip Select
GPIO28 None None RM2 SPI Clock
GPIO29 None None RM2 SPI Data
GPIO30 Motor L IO30 Motor L Encoder A Pin
GPIO31 Motor L IO31 Motor L Encoder B Pin
GPIO32 Motor R IO32 Motor R Phase Pin
GPIO33 Motor R IO33 Motor R Enable Pin
GPIO34 Motor L IO34 Motor L Phase Pin
GPIO35 Motor L IO35 Motor L Enable Pin
GPIO36 User Button 36 User button input
GPIO37 RGB RGB WS2812 Data In Pin
GPIO38 Qwiic 1 SDA1 I2C 1 Data
GPIO39 Qwiic 1 SCL1 I2C 1 Clock
GPIO40 None IO40 Motor Left Current Measure
GPIO41 None IO41 Motor 3 Current Measure
GPIO42 None IO42 Motor 4 Current Measure
GPIO43 None IO43 Motor Right Current Measure
GPIO44 Line IO44 Line Follower Left Signal
GPIO45 Line IO45 Line Follower Right Signal
GPIO46 None IO46 Voltage Input Measure
GPIO47 None None PSRAM Chip Select