

Connector X
The Connector-X all-in-one IO breakout board
- Size
- 79 × 94.7 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 41
- Nets
- 70
- Pads
- 287
- Tracks, vias
- 317, 15
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 24 Nov 2023
- Updated
- 7 May 2024
Overview
Connector X is an open-source printed circuit board by having11, from the having11/Connector-X repository on GitHub, published under the CC0-1.0 licence. It is a 2-layer board of 79 × 94.7 mm with 41 parts on 70 nets, routed with 317 tracks and 15 vias.
It is built around the WS2812B, IRLML5203TRPBF and MBRD1060. Its parts include 11 connectors, 9 diodes, 4 capacitors, 4 resistors and 3 switches. It belongs with the RP2040 boards of this library.
Main components
3WS2812B
5mm X 5mm Surface Mount RGB LED with Intelligent ControlWorldsemiUncategorisedIRLML5203TRPBF
SOT-23-55℃~+150℃ 1 P-Channel 1.25W 14nC@10V 165mΩ@4.5V 2.5V 30V 3A 43pF 510pF 71pF P-Channel ±20V SOT-23 MOSFETs ROHSInfineon TechnologiesMOSFETsMBRD1060
TO-252-55℃~+150℃ 1 Pair Common Cathode 100uA 10A 60V 750mV@10A TO-252 Schottky Diodes ROHSGOODWORKSchottky Diodes
README
README.mdConnector-X
A drop-in, highly-configurable IO board compatible with the NI/FRC RoboRIO
The concept
Have you ever wanted to leverage the power and extensibility of the Arduino ecosystem on other hardware but realized it's not supported? This was the case for FRC team 5690 SubZero Robotics in the 2023 season when we were attempting to add sensors and LEDs to our robot. Born from this struggle was a very simple Arduino Nano-based board that supported a single LED strip, limited LED patterns, and a duty-cycle output for lidar. As one might imagine, this was quite limited, so the 2023 off-season was spent designing and then redesigning a brand new system called the Connector-X (Connect Anything).
The new system is meant to be far faster and more flexible, as its Raspberry Pi Pico processor allows it to act as both a peripheral for a RoboRIO and a central device for connecting sensors.
Hardware features
Starting along the top of the Connector-X is a pair of buttons that allow for reconfiguring the device and resetting it if needed. The DIP switch to the right was used to set the I2C address, but recent changes to the firmware have made it unnecessary. Lastly, the 3.3V regulator and Schottky diode help regulate incoming power and prevent damage if the inputs are accidentally reversed.
The DC barrel jack is meant for connecting 5V, center-positive power from a buck converter or other source that can supply a sufficient amount of current (> 5A preferred). Two LED ports sit below it, and each one has a starting, test WS2812B LED to help debug LED strip problems. The center has headers for 1 x SPI, 2 x I2C, and 3 x GPIO. Status indicators below the Pico display Power, Pico functionality, and I2C activity.
Attaching to your RIO
At the bottom of the board is a male 2 x 17 header and a female 2 x 17 header, both of which conform to and pass-through the RIO's MXP connector standard. The Connector-X itself is only electrically connected to the I2C SDA, I2C SCL, and GND pins, meaning that a power issue on the board will not affect the RIO.
What are ports and zones?
As mentioned before, the two ports each connect to a single LED strip, but that leads to the question of how different patterns can be easily shown on the same strip. So rather than connecting a strip per-port, the Connector-X allows for the strip to be subdivided into virtual zones that range from a single pixel all the way to the entire strip's length. To specify one, simply declare the offset (inclusive) and the size of the zone while ensuring it stays within the total number of LEDs present in the strip. The controlling device then sends commands to select the desired port and zone by index when setting colors/patterns.
It can show images
Within the Configuration, either a strip or matrix configuration can be set. In the case of a matrix, the port is automatically split into two zones with the first being the single test LED and the second as the matrix itself. Currently, there are seven patterns that make use of the matrix, and they generally work by accessing images as follows:
- A folder is created within the data directory
- 16-bit RGB bitmaps are placed into the folder. Names should be numeric, start at 0, and have the exact same number of images as the number of states specified in the Pattern configuration
- Selecting the pattern from a controlling device causes the Connector-X to cycle through them with the delay specified in the config or the command
Command structure
Now that Commands have been mentioned several times, you're probably wondering what it actually is. A Command is simply a small amount of data that the controlling device sends to the Connector-X containing the CommandType and an arbitrary amount of additional data depending on what the CommandType equals.
CommandType | Description | Additional data |
|---|---|---|
| On | Turns on an LED port | N/A |
| Off | Turns off an LED port | N/A |
| Pattern | Sets the current Pattern for a Zone | Pattern type, is one-shot, delay |
| ChangeColor | Sets the current Color for a Zone | R, G, B |
| ReadPatternDone | Checks if the set Pattern is done running | N/A |
| SetLedPort | Sets the active LED Port | Port number |
| DigitalSetup | Sets the mode (Read or Write) for a Digital IO Port | Port number, mode |
| DigitalWrite | Sets a Digital IO Port High or Low | Port number, value |
| DigitalRead | Reads a Digital IO Port's state | Port number |
| SetConfig (unused) | Sets a new Config for the Connector-X | N/A |
| RadioSend (unused) | Sends data to other teams via the onboard Packet Radio when enabled | N/A |
| RadioGetLatestReceived (unused) | Gets the latest Packet Radio data when enabled | N/A |
| GetColor | Gets the active Color for a Zone | N/A |
| GetPort | Gets the selected Port | N/A |
| SetPatternZone | Sets the current Zone for the current Port | Zone index, is reversed |
| SetNewZones (unused) | Configures new Zones for the current Port | Zone count, zone array |
| SyncStates | Sets the selected Zones' Patterns to the same State (animation frame) | Zone count, zone index array |
Test sequences
It is possible to execute a series of commands upon startup without intervention from the controlling device. To do so, simply specify a list of TestCommands in TestCommands.h that include the command type and any other required commandData within the union.
Expansion
Feel free to add Commands and Patterns to expand the functionality of your Connector-X. Some ideas might include adding an I2C sensor and passing it through, controlling an LED, or displaying images on a screen via SPI.
V3 coming soon...
Parts
41| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3, H4 |
| 3 | 220 | Resistor_SMD:R_0603_1608Metric | R1, R2, R4 |
| 3 | Conn_01x03_Socket | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Horizontal | J2, J3, J4 |
| 3 | TestPoint | TestPoint:TestPoint_Pad_D2.5mm | TP1, TP2, TP3 |
| 2 | 100nF | Capacitor_SMD:C_0603_1608Metric | C3, C4 |
| 2 | 10uF | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 2 | Conn_01x03_Socket | Connector_JST:JST_VH_B3PS-VH_1x03_P3.96mm_Horizontal | J5, J6 |
| 2 | D_Schottky | Diode_SMD:D_SMA | D7, D8 |
| 2 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D5, D6 |
| 1 | 470 | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | ALV | LED_SMD:LED_1206_3216Metric | D3 |
| 1 | Barrel_Jack_Switch | Connector_BarrelJack:BarrelJack_Horizontal | J1 |
| 1 | CONFIG | LED_SMD:LED_0805_2012Metric | D9 |
| 1 | CONFIG | Button_Switch_SMD:SW_SPST_PTS645 | SW2 |
| 1 | I2C | LED_SMD:LED_1206_3216Metric | D4 |
| 1 | I2C 0 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J9 |
| 1 | I2C 1 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J10 |
| 1 | IRLML5203TRPBF | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | MBRD1060 | Package_TO_SOT_SMD:TO-252-2 | D1 |
| 1 | NCP1117-3.3_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | PWR | LED_SMD:LED_1206_3216Metric | D2 |
| 1 | RIO side | Connector_PinSocket_2.54mm:PinSocket_2x17_P2.54mm_Vertical | J7 |
| 1 | RST | Button_Switch_SMD:SW_SPST_PTS645 | SW1 |
| 1 | RaspberryPi_Pico | Module_RaspberryPi_Pico:RaspberryPi_Pico_Common | U2 |
| 1 | SPI 0 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J11 |
| 1 | SW_DIP_x03 | Button_Switch_SMD:SW_DIP_SPSTx03_Slide_6.7x9.18mm_W6.73mm_P2.54mm_LowProfile_JPin | SW3 |
| 1 | Top side | Connector_PinHeader_2.54mm:PinHeader_2x17_P2.54mm_Vertical | J8 |
Questions
How big is the Connector X PCB?
It measures 79 × 94.7 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Connector X use?
41 parts, built around the WS2812B, IRLML5203TRPBF and MBRD1060. 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 Connector X KiCad files?
From the having11/Connector-X repository on GitHub, at the commit this page was made from: the board is hardware/ConnectorX/ConnectorX.kicad_pcb and its schematic hardware/ConnectorX/ConnectorX.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Connector X design in my own project?
Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers120 × 120 mm

- 4 layers131 × 78.5 mm

- 4 layers55 × 72.1 mm

Main unit
HyFiVeUser/HyFiVe
For this use case we developed a very flexible autonomous measuring system, which can be deployed on fishing gear to collect data in an affordable and scalable way.
132 partsCC-BY-SA-4.0 - 4 layers203.5 × 90 mm

BDCMotorController
nunosousa/TelescopeMirrorTester
This is an application intended to provide useful tools to perform Foucault or Wire testing on reflective telescope mirrors
323 partsMIT - 4 layers99 × 53.3 mm

PSLab
fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io
199 parts1.7kApache-2.0 - 2 layers26 × 30 mm

Microcontroller
FrameworkComputer/ExpansionCards
Reference designs and documentation to create Expansion Cards for the Framework Laptop
34 parts1.1kCC-BY-4.0 - 4 layers82.6 × 82.5 mm

- 2 layers95.3 × 161.9 mm
