SCORPIO’s secret sauce is the 8x2 header at the end of the board, providing eight sequential general-purpose inputs/outputs (not shared by any other pins on the board) with a signal ground for each. Paired with the RP2040 chip’s PIO peripheral, SCORPIO is uniquely suited to certain types of parallel logic projects…large-scale NeoPixel installations, logic analyzers, etc. The mounting holes normally present at this end of a Feather board were sacrificed to make space for this header, there to simplify hookups compared to breadboard wires or a separate stacked FeatherWing.
The “inner” row of eight pins (labeled 0–7) connect to GPIO pins 16–23 through a logic level shifter, so this can safely interface with either 3.3V or 5V devices.
The “outer” row of eight pins are all ground points. Typically these are used so SCORPIO and a separately-powered circuit have a common 0V point of reference, though in some situations it’s okay to use these as a return when powering modest circuits (see “Powering SCORPIO NeoPixel Projects” page).
From the factory, SCORPIO is configured for 5V output on these eight pins (all other I/O pins work at 3.3V logic as usual). Solder pads on the back of the board allow reconfiguring this for 8 inputs and/or 3.3V logic.
Reconfiguring either setting requires cutting a PCB trace between adjacent pads using a hobby knife or file, then bridging the opposite pads with a dot of solder.
Looking at the back of SCORPIO with the text rightside-up…
The VLogic pads select 3.3V or 5V operation. By default—5V operation—the right two pads are connected with a PCB trace. To switch to 3.3V logic, cut the PCB trace between the center and right pad, then bridge the center and left pads with solder.
The Direct pads select input or output operation of the board-end header (other pins are unaffected). By default—output operation—the left two pads are connected with a PCB trace. To switch to input operation, cut the PCB trace between the center and left pad, then bridge the center and right pads with solder.
All 8 board-end pins are either input or output; there is no mixed-direction operation. If some application required switching all 8 between input and output modes, one could cut the Direct–Out PCB trace and solder a small wire from the center pad to an unused GPIO pin, then in code set that pin HIGH for output or LOW for input across the 8 pins. This is not built-in as it’s super esoteric and every last RP2040 GPIO pin was already assigned!
SCORPIO’s 8x2 header is not suitable for driving HUB75 RGB LED matrices; the arrangement of data and ground pins is altogether different. Use an RGB Matrix FeatherWing for that.
Coincidentally the 8 pins are sequential PWM channels (slice 0–3, outputs A & B), so this might find uses in multiple-servo projects.
SCORPIO arrives with both straight and right-angle 8x2 pin headers, either of which can be soldered in place. Looking from the top side of the board (with all the components), the upper row of pins are I/O, the lower row is all ground. Let’s talk about the SCORPIO side of an overall circuit. With a header installed, there are a few options for making connections here…
A 16-pin IDC ribbon cable with 8x2 headers—the exact same type used for HUB75 RGB LED matrices—carries all 8 signals and grounds on alternate wires in a tidy bundle.
Our Large Dual Row Wire Housing Pack for DIY Jumper Cables contains five 8x2 housings. These can be paired with Premium Female/Female Raw Custom Jumper Wires as part of an overall wiring harness. One end of each wire securely clicks into place in the housing.
In rare situations that rely on other ground paths on the SCORPIO board, the Large Single Row Housing Pack for DIY Jumper Cables can be used, and connect to only the upper row of pins. If in doubt, use the dual-row type.
If you have the parts and tools it’s easy enough to crimp a DIY version of these cables…but for onesy-twosey projects, the ribbon cable or jumper housing kits above are economical and the most time-consuming steps are already done.
So far we’ve talked about the SCORPIO side of the connection…but what’s the other end of this cable supposed to connect to?
There is no one-size-fits-all answer. This is where you come in.
If controlling 8 concurrent strands of NeoPixels, for example: each of those data wires will connect to the “DIN” pin of the first pixel in each strand, and each of the grounds to the strands’ grounds (the latter will usually be 2-way connections, as they usually also need to connect to power supply ground).
The “Powering SCORPIO NeoPixel Projects” section of this guide shows some example circuits.
Most often, you’ll cut the 16-pin cable in half (whether a ribbon cable or DIY jumper cable), strip the ends of each wire, and construct some sort of custom wiring harness, distributing data and power to all of the NeoPixels in your project. In addition to the parts mentioned above, this involves additional wire and some soldering and heat-shrink tubing and perhaps some JST-SM connectors for the strips and a DC barrel jack for power (or using half of a DC extension cable).
Here’s one such DIY wiring harness. This one’s built from scrap bin parts so it doesn’t visually match the Adafruit parts above, but the principles are exactly the same. Eight JST-SM plugs (left) connect to NeoPixel strips. Power and ground from each (in two groups of four, as multi-way splits are challenging to solder) lead to a DC barrel jack (top left, for a 5V power supply), and ground and data for each are joined to alternating pins of a ribbon cable (socket at right). Notice the inordinate amount of heat-shrink tube covering the soldered connections and also to keep bundles un-frayed and tidy:
Depending how power is distributed in your circuit, you might not need to make all 8 ground connections, but there is no harm in doing so and this usually keeps the wiring more orderly and secure: no loose ends and all 16 wires are populated and gripping the header.