Skip to the content
PCBKitNew board
4 layers91 × 110 mmPico Robotic Controller, the printed circuit board in 3D

Pico Robotic Controller

2468shrm/Pico-Robotic-Controller

A carrier board for a Raspberry Pi Pico (W) for use in FRC robotics. Similar to the XRP board.

Size
91 × 110 mm
Copper layers
4
Thickness
4.69 mm
Parts
103
Nets
171
Pads
509
Tracks, vias
1,029, 188
Pours
13
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
28 Dec 2023
Updated
7 Jan 2024

Overview

Pico Robotic Controller is an open-source printed circuit board by 2468shrm, from the 2468shrm/Pico-Robotic-Controller repository on GitHub. It is a 4-layer board of 91 × 110 mm with 103 parts on 171 nets, routed with 1,029 tracks and 188 vias.

It is built around the PCA9685PW, 74HC14 and TXS0104EPW, with the TCA9546AD, PESD1CAN-UX and DMG2305UX-13 among its other parts. Its parts include 24 diodes, 22 capacitors, 18 resistors, 13 ICs and 13 connectors. It belongs with the robots and motor control and computers and single-board computers boards and the RP2040 boards of this library.

Main components

9

README

README.md

Pico-Robotic-Controller

A carrier board for a Raspberry Pi Pico (W) for use in FRC robotics. Similar to the XRP board.

Disclaimer / Warning

This is an experimental device. Not all interfaces have been fully validated for proper function. Use at your own risk.

Introduction (Motivation)

You may assume that this board is indended to compete with the XRP product from WPI, other developers, and SparkFun. It is not. The XRP board is awesome and I'll likely end up acquiring one (or two) for myself. I have been working on lo w-cost, roboRIO-like carrier boards for FRC for a couple of years.

Why create a carrier board like the roboRIO? To enable a lower-cost prototyping solution. This solution makes it less risky to a costly than using a roboRIO solution. Breaking a roboRIO means costly replacement that is sometimes hard to replace. One goal was to provide as many similar interfaces as possible but cost 25% the budget.

Things I didn't need to do with my use model: support LabVIEW despite being a team who lives and breaths LabVIEW. I did want to support rapid prototyping and so exploring circuitpython was a goal; particularly because of the library support for the STEMMA QT/Qwiic based sensors available from Adafruit.

Board Images

Top View

Isometric View from the I2C connector corner

Isometric View from the digital I/O connector corner

Board Features

The carrier board has the following interfaces and features.

  • RaspberryPi Pico W board
    • Does the thinking
    • Provides WiFi and/or Bluetooth
    • Socketed for replacemnt if needed
  • Adafruit Picobell CAN board (optional)
    • Provides CAN connectivity for integration into FRC robots allowing CAN-connected applications (e.g. smart sensors)
  • Adafruit Ethernet Featherwing board (optional)
    • Provides Ethernet connectivity for integration into FRC robots allowing Ethernet connected applications (e.g. smart sensors)
  • Power
    • 12V Battery input provides main board supply
      • 5V regulator module, OR
      • A connection to external 5V regulator (using WAGO 250-202) connector if the 5V supply current requirements are higher than the module can provide
    • Servo/PWM interface independently powered by an external source
      • Due to the potential need for different voltage and higher current
      • Not needed if connecting to external motor controllers (REV, CTRE, etc.)
  • Four (4) STEMMA QT/Qwiic connections provided through a 4-port I2C switch run off the Pico W I2C 1 interface
  • Eight (8) Servo PWM interfaces and an additional 8 PWM signals generated by a 16-channel generator connected to the Pico W I2C 0 interface
  • The Servo PWM interace has its own power input; for increased voltage or current for high-torque servo motors
  • Two (2) analog input (ADC) ports, 3V maximum
  • Eight (8) digital I/O ports, divided into 2 4-pin groups
    • Uses the roboRIO DIO 3-pin interface
    • Each group provides jumper-selectable power (5V or 3.3V)
    • Pico inputs are 3.3V only (maximum) input, with level shifting based on the group's selected power
    • All DIOs have LEDs to indicate logic level (Dark is LOW, Illuminated is HIGH)
  • One NEOPIXEL interface for providing visual sensor status or communication
  • One on-board single-pixel NEOPIXEL for board status

Comparison to XRP Board

The XRP board has some significant philospohical and design choices and features.

  • XRP was designed with the intent of learning robotics on a small platform, using the WPILib framework
  • Includes four motor controllers (1.5A each) integrated on the PCB
  • Has a gyro and accelerometer integrated on the PCB
  • The connectors are six-position JST (vertical) that integrates digital I/Os for encoders in addition to the M+ and M- motor signals (i.e. not a sensor standard like Qwiic or STEMMA QT)

The PRC does not include any motor controllers on the board. However, it does provide a 2x5 pin connector and a dedicated PWM generator (I2C bus 0, address 0x41). The intent is to provide a board with 4 12V, 3.3 A motor controllers using a separate/dedicated battery input. Providing the capability to drive four H-Bridges allows for demonstration chassis (skid steer or Meccanum). This allows replaceable solutions as well as future upgrades for higher current. Moreover, the PWM / Servo connections allow for use of a conventional FRC PWM-controlled motor controller.

The PRC provides four STEMMA QT / Qwiic connectors in lieu of a specific set of sensors (IMU). This allows out use of different sensors dependent on the application.

The PRC also has CAN and Ethernet connectivity in addition to the WiFi and BlueTooth provided by the Pice W board.

Differences between the roboRIO, XPR, and PRC boards.

Interface / FeatureRoboRIOXRPSHRH's Board
ProcessingZinqRPi Pico WRPi Pico W
Ethernet1 Gb—Via 10/100 Mb FeatherWing
WiFiVia OpenMeshYY
USB HostY——
CANY—Via Picobell CAN board
RelayY——
Digital I/O10 + MXP—8
ADC4—2
I2C2——
STEMMA QT / Qwiic—44
SPI2——
RS-2321——
GyroY6 DOF IMU (LSM6DSO)—
Status LEDsYPico W LEDY (NEOPIXEL) + Pico W LED
NEOPIXEL String2 via PWM outputs—Y
Low-Current Motor Control—44 on sidecar board
Per H-Bridge Max Current—1.5 A3.3 A
I/Os Per Motor Interface—2 (equivalent of STEMMA per motor)—
Reset ButtonYYY
Power In12 V5-11 V12 V
Power ConntectorSauroBarrelWago 250-202

Differences between the XRP and PRC pin usage and functions.

PinPico W AlternativesXRP InterfaceXRP FunctionPRC Board
GPIO 0U0 TX / SDA0 / MISO0Motor 3Encoder ADIO 0
GPIO 1 U0 RX / SCL0 / CS0Encoder BDIO 1
GPIO 2SDA1 / SCK0PhasePWM Gen SDA
GPIO 3 SCL1 / MOSI0EnablePWM Gen SCL
GPIO 4 U1 TX / SDA0 / MISO0Left MotorEncoder AI2C Switch SDA
GPIO 5U1 RX / SCL0 / CS0Encoder BI2C Switch SCL
GPIO 6SDA1 / SCK0PhaseDIO 2
GPIO 7SCL1 / MOSI0EnableDIO 3
GPIO 8U1 TX / SDA0 / MISO1Motor 4Encoder ADIO 4
GPIO 9U1 RX / SCL0 / CS1Encoder BDIO 5
GPIO 10SDA1 / SCK1PhaseDIO 6
GPIO 11SCL1 / MOSI1EnableDIO 7
GPIO 12U0 TX / SDA0 / MISO1Right MotorEncoder APWM Gen Enable
GPIO 13U0 RX / SCL0 / CS1Encoder BReset Switch
GPIO 14SDA1 / SCK1Phasenot connected
GPIO 15SCL1 / MOSI1EnableSPI CS (Ethernet)
GPIO 16U0 TX / SDA0 / MISO0Servo 1SignalSPI MISO
GPIO 17U0 RX / SCL0 / CS0Servo 2SignalNEOPIXEL (board)
GPIO 18SDA1 / SCK0IMU / QwiicSDASPI SCK
GPIO 19SCL1 / MOSI0SCLSPI MOSI
GPIO 20SDA0RangeTriggerSPI CS (CAN)
GPIO 21SCL0EchoSPI INT (CAN)
GPIO 22User button / extraNEOPIXEL (String)
GPIO 26SDA1 / ADC0Line FollowerLeftADC 0
GPIO 27SCL1 / ADC1RightADC 1
GPIO 28VIN_meas / extranot connected

PRC Board Detail / Theory of Operation

The following describes the PRC board components, features, and

When exploring the board's detail and function, it may be helpful to refer to the board's schematic (Link).

Main Power / Battery Input

The power system has the following components:

  • +BATT - The main power supply (+BATT) is connected to J1, a 2-position WAGO 250 series connector. The typical use is a 12V battery or power supply.
  • +12V - Connected to +BATT through a diode-capacitor filter. The intent of the filter is to avoid brownouts on the robot from affecting board performance.
  • +5V - The Pico W uses a 5V source normally supplied by USB's VBUS. However, the board provides a 5V source. This is done via either installing a 5V 3A regulator module (Amazon Link), or by installing a 2-position WAGO 250-series connector (J11) and providing an external 5V supply. The external solution would be used only in situations where 3A is insufficient (e.g. a very long NEOPIXEL strip).
  • SERVO_VDD - A dedicated power input is provided for use cases involving servo motors. This is required since the +5V supply is limited to 3A which may not be sufficient for servo motors in stall. Moreover, while servo motors may operate at 5V, they're better at operating at higher voltages (6V).
  • VSYS - VSYS is a pin on the Pico W board that is sourced from VBUS through a Schottky diode, but this is only functional when the VBUS is connected. VSYS is also soured by a PFET (Q1, a DMG2305UX-13) as recommended by the Pico W datasheet (Raspberry Pi Pico W Datasheet). Refer to sections 3.4 and 3.5 of the datasheet for details. This allows a computer connected via VBUS at the same time the board is powred by +BATT (or the J11 external source).
  • VBUS - The USB OTG's power pin. Note that J6 is provided (and needs to have a jumper installed) in order to source VBUS from the board's +5V supply when the USB OTG interface is being used in HOST mode.

Processing and Communications

The PRC is intended to serve as a low-cost roboRIO. To that end it includes computation and communication at the heart of the system.

Pi Pico W

The PRC includes a socket to install a Raspberry Pi Pico W board. This is in component designator U2.

CAN

The PRC includes a socket to install an Adafruit Picowbell board (link). This board uses a Microchip MCP2515 SPI to CAN device. This is an optional device; the PRC can opeate with CAN, Ethernet, Both, or none.

The CAN and Ethernet boards share the same SPI MOSI, MISO, and SCK signals, but have independent chips selects (and in the case of CAN a separate interrupt signal).

Ethernet

The PRC includes a socket to install an Adafruit Ethernet Featherwing (link).This is an optional device; the PRC can opeate with CAN, Ethernet, Both, or none.

The CAN and Ethernet boards share the same SPI MOSI, MISO, and SCK signals, but have independent chips selects.

Sensors

There are multiple digital and analog sensor connection methods used with the PRC board. These include a number of I2C interfaces that use the Qwiic/STEMMA QT format, analog inputs, and digital I/Os.

Qwiic / STEMMA QT

There are four (4) Qwiic/STEMMA QT connectors. These connectors (X1-X4) connect to the Pico W I2C bus 1 via an TCA9546 4-port I2C switch/mux (I2C bus 1 address 0x70).

The Qwiic/STEMMA QT connector provide the two I2C signals (each connector coming from one dedicated output of the I2C mux/switch), 3.3V, and GND. This format connector assumes the attached device provides the SDA/SCL pull ups and any local level shifting to the sensor. It also assumes the board provides 3.3V conversion to the sensor used. Each Qwiic/STEMMA QT connection may chain multiple sensors provided their I2C addresses do not collide and the signal integrity of the I2C signals is maintained.

The Qwiic/STEMMA QT to mux/switch channel is provided in the following table.

ChannelInterfaceFunction / #
0X1SDA0
1SCL0
2X2SDA1
3SCL1
4X3SDA3
5SCL3
6X4SDA2
7SCL2
ADC / Analog Input

There are two (2) analog input pins that connect to the Pico W ADC0 and ADC1 pins. The board buffers the input signals between pin and Pico W ADC inputs with a unity gain opamp. This is done to provide the highest accuracy while allowing the use of sensors with larger output impedances.

The ADCs use a 3x2 pin header, and uses the same pin layout as the roboRIO's AIN connections; signal, power, and ground. Ground is closest to the board edge and power in the middle. The power pin voltage is 3.3V since the Pico W ADC range is 0 to 3.3 V.

Digital Input/Output (DIO)

There are eight (8) DIOs arranged in two groups of four, DIO0-3 and DIO4-7. Each group has an independent level shifter (TXS0104E). The level shifter includes 10 kΩ pull ups. Since the Pico W has 3.3V (only) I/Os, the VCCA of both level shifters use 3.3 V. However the VCCB of the external side of each level shifter is set by an external jumper (J5 for DIO0-3 and J9 for DIO4-7) and can be set to either 3.3 V or 5 V.

Each DIO group uses a 3x4 pin header, and uses the same pin layout as the roboRIO's DIO connections; signal, power, and ground. Ground is closest to the board edge and power in the middle. The power pin voltage is the same voltage pdovided to the VCCB of the level shifter.

Motor Control

There are two main interfaces for controlling motors and servos.

  1. PWM/Servo interface. Eight (8) conventional PWM/Servo connections.
  2. There is also a dedicated motor control interface to connect to a custom, 4 channel, low-current, motor driver board.
PWM/Servo

The PWM/Servo interface uses the first 8 channels of a PCA9685 PWM generator (I2C bus 0, I2C address 0x40).

If using the PWM/Servo interface for servo control, connect the J12 connector (supplying SERVO_VDD) to an external power supply. This is not needed if the PWM/Servo interface is being used to connect to external motor controllers from REV, CTRE, etc.

ChannelInterfaceFunction / #
0PWM BlockPWM 0
1PWM 1
2PWM 2
3PWM 3
4PWM 4
5PWM 5
6PWM 6
7PWM 7
8-15Unused
Motor Control

The motor control interface uses the first 8 channels of a dedicated PCA9685 PWM generator (I2C bus 0, I2C address 0x41).

These connect to the motor controller board and drive four (4) instances of a TI DRV8870 3.5 A motor controller. This board is intended to be used in FTC-class robots or for classroom and learning (not competition) use.

The DRV8870 has 2 signal inputs per IC (IN1, IN2). The motor controller operates as follows:

IN1IN2OUT 1OUT 2Motor Action
00High-ZHigh-ZCoast
Current direction remains and flows through reverse body diodes of H-bridge.
01GNDVDDReverse
Current flows from OUT 2 to OUT 1.
10VDDGNDForward
Current flows from OUT 1 to OUT 2.
11GNDGNDBrake
Current recirculates between low-side H-bridge.

Note: When pulse width modulating the IN1 & IN2 to provide speed control of the attached motors, it is important to realize that operating in coast or brake modes is important to consider.

In coast mode, the motor coasts when both IN1 and IN2 are 0. This matches the normal signal polarity of a PWM signal (high represents active).

ModeDirectionIN1IN2
CoastForwardPWM'd0
Reverse0PWM'd

The PWM will drive the motor fur the duration of the high time of the duty cycle and coast through the low time.

In brake mode, the motor breaks when both IN1 and IN2 are 1. This is opposite the normal signal polarity of a PWM signal, so the signal generation needs to be inverted and the low-time needs to represent the desired fraction of the output. Also, the PWM'd input signal must be swapped so that the correct direction is maintained.

ModeDirectionIN1IN2
CoastForward1inverse PWM'd
ReverseInverse PWM'd1

Also note this is a not the PWM encoding used for servo controls. The PWM modulation applied to IN1 and IN2 is full duty cycle of the signal's period (not the first 2 ms of 20 ms signal).

I2C bus 0, address 0x41

ChannelInterfaceFunction / #
0M0IN1
1IN2
2M1IN1
3IN2
4M2IN1
5IN2
6M3IN1
7IN2
8-15Unused

Status

The PRC provides simple interfaces for visual status.

NEOPIXEL on PCB

A single NEOPIXEL device is mounted on the board. This is intended to provide visual status while developing code or tuning algodrithms and mechanisms.

NEOPIXEL Strip

A 3-position 250-series WAGo connector is provided to connect a NEOPIXEL strip to the board. This is intended to provide visual status for distant observation. The most common use case being robot to driver status across the FRC field.

PCB Layer Usage

The PRC PCB uses four layers primarily to keep power distribution as clean as possible. The layers are used as described in the following table. Each layer label includes a link to the layer's image.

LayerUse
F.Cu+3V3 fill (main +3.3V plane)
Signal routing
Component placement (SMT)
In1.Cu+BATT fill (main battery plane)
Signal routing
In2.Cu+5V fill (main +5V plane)
VIOA and VIOB (DIO power)
Signal routing (across CPU, CAN, Eth modules)
B.CuGround fill (main ground plane)
+5V fill (small fills and 5V traces)

Parts

103
QtyValueFootprintReferences
160.1uCapacitor_SMD:C_1206_3216MetricC3, C5, C6, C7, C8, C9, C10, C11, C13, C14, C15, C16, C17, C20, C21, C22
13PESD1CAN-UXAppreciate:PESD1CANUXD2, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15
95K1Resistor_SMD:R_1206_3216MetricR1, R2, R3, R4, R5, R6, R7, R9, R18
813Resistor_SMD:R_0603_1608MetricR10, R11, R12, R13, R14, R15, R16, R17
8LEDLED_SMD:LED_0603_1608MetricD17, D18, D19, D20, D21, D22, D23, D24
410uCapacitor_SMD:C_1206_3216MetricC1, C4, C18, C19
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_PadH1, H2, H3, H4
4STEMMA_I2C_QTConnector_JST:JST_SH_BM04B-SRSS-TB_1x04-1MP_P1.00mm_VerticalX1, X2, X3, X4
4conn_04_03Appreciate:conn_04x03J2, J4, J7, J8
3250-202Appreciate:250202J1, J11, J12
3LOGOLOGOG***, G***, G***
2470uAppreciate:CAPAE830X1050NC2, C12
274HC14Package_SO:TSSOP-14_4.4x5mm_P0.65mmU11, U12
2APX321WG-7Appreciate:SOT95P285X145-5NU9, U10
2Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5, J9
2PCA9685PWPackage_SO:TSSOP-28_4.4x9.7mm_P0.65mmU4, U13
2TXS0104EPWPackage_SO:TSSOP-14_4.4x5mm_P0.65mmU7, U8
1100Resistor_SMD:R_1206_3216MetricR8
1250-203Appreciate:250-203_1J3
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6
1Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ10
1Conn_02x05_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ13
1DMG2305UX-13Appreciate:SOT96P240X120-3NQ1
1Ethernet_FeatherWingAppreciate:Feather_M4_CAN_ExpressU6
1KSC623JLFGAppreciate:KSC623JLFGS1
1LEDLED_SMD:LED_1206_3216MetricD16
1RPi_Pico_WAppreciate:RPi Pico WU2
1RPi_Picobell_CAN_BusAppreciate:RPi Pico WU3
1TCA9546Package_SO:TSSOP-16_4.4x5mm_P0.65mmU5
1UPR20e3Appreciate:DO-216D1
1WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD3
1Weewooday-820Appreciate:Weewooday-820U1

Questions

How big is the Pico Robotic Controller PCB?

It measures 91 × 110 mm and has 4 copper layers, 4.69 mm thick.

What parts does the Pico Robotic Controller use?

103 parts, built around the PCA9685PW, 74HC14, TXS0104EPW and TCA9546AD. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Pico Robotic Controller KiCad files?

From the 2468shrm/Pico-Robotic-Controller repository on GitHub, at the commit this page was made from: the board is Pico Robotic Controller.kicad_pcb and its schematic Pico Robotic Controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pico Robotic Controller design in my own project?

Its repository states no licence, so its author keeps all rights: ask 2468shrm before reusing the design.

Similar boards

  • 4 layers76 × 50 mmOpenmv can shield, the printed circuit board in 3D

    Openmv can shield

    2468shrm/openmv_can_eth_shield

    A PCB shield for the OpenMV camera which provides additional interfaces, including Ethernet and CAN

    32 parts
  • 4 layers37.5 × 37.5 mmOpenmv can shield, the printed circuit board in 3D

    Openmv can shield

    2468shrm/openmv_can_i2c_shield

    A PCB which is a shield for the OpenMV camera for CAN & I2C connection

    16 parts
  • 4 layers219 × 108.5 mmZ80DevBoard, the printed circuit board in 3D

    Z80DevBoard

    gianluca-rainis/Z80DevBoard

    An advanced development board for the Z80 microprocessor, powered by an RP2040.

    182 parts7CERN-OHL-S-2.0
  • 4 layers70.5 × 79.5 mmM4 CAN Feather Carrier, the printed circuit board in 3D

    M4 CAN Feather Carrier

    2468shrm/M4_CAN_Feather_Carrier_v6

    Sixth version of the M4 Feather CAN Express carrier board. Hopefully, "the last".

    70 parts1
  • 2 layersController, the printed circuit board in 3D

    Controller

    alvarop/ostur

    This is a work in progress for a cheese cave controller system. The goal is to be able to control a mini fridge to get the right conditions for cheesemaking.

    89 parts8MIT
  • 4 layers100 × 100 mmFlexible audio hub, the printed circuit board in 3D

    Flexible audio hub

    andrew-bolin/flexible_audio_hub

    My ears and speakers will last a lifetime (I hope), but home theatre audio standards do not. My old stereo amplifier works fine, why can't I get an HDMI upgrade module that gives it CEC (control via TV remote).

    91 parts8
  • 4 layers153 × 111 mmMaslow Mini Merged Board, the printed circuit board in 3D

    Maslow Mini Merged Board

    BarbourSmith/Maslow-Mini-Control-Board

    A third KiCad project that puts both existing boards on one PCB:

    156 parts
  • 14 layers205.6 × 228.6 mmAcmi2-fpga, the printed circuit board in 3D

    Acmi2-fpga

    jamead/acmi2-hw-fpgabrd

    ACMI-2 KiCad files for the FPGA Board

    406 parts