
PicoIO THT
dj505/PicoIO
An affordable, simple, and feature-rich PIU controller IO board

An affordable, simple, and feature-rich PIU controller IO board
PicoIO is an open-source printed circuit board by dj505, from the dj505/PicoIO repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 73.2 × 58.4 mm with 53 parts on 55 nets, routed with 224 tracks and 19 vias.
It is built around the BSS138. Its parts include 15 connectors, 10 resistors, 10 transistors and 1 IC. It belongs with the RP2040 boards of this library.
An affordable, simple, and feature-rich PIU controller IO board
The PicoIO is an extension of the PicoFX that's meant for building larger hand controllers or buttonboards. It's possible to build dance pads too, but as this board lacks multiplexing and is made with 5V LED lighting in mind, it's not ideal. I may design a pad IO PCB in the future, though!
If you're not comfortable with soldering surface mount components, there is a second board revision in the "PicoFX-THT" directory (gerbers included) that only uses through-hole components. Check the components list to see which parts are required for which PCB!
The PicoIO has two current revisions, one using surface mount components, and one using through-hole components. There are some notable differences between the two!
| Components (per 1 PCB) | Specs | Notes | Recommended Purchase Link | Approximate Min. Cost of Components |
|---|---|---|---|---|
| 1x Raspberry Pi Pico | Any, however WiFi/Bluetooth is currently unsupported | Can be soldered with pin headers or surface mounted. | Link | $4 |
| JST XH connectors |
| 2.5mm pin pitch. Designed with vertical headers in mind. Horizontal ones may work but are untested. Recommended purchase link has a minimum order number of 50-100 depending on the connector, but they're still super cheap. | $2.50 | |
| 10x BSS138 MOSFET * | SOT23 Package | Required for button LEDs. Recommendation - buy extras. | Link | $0.40 |
| 10x 2N7002 MOSFET ** | TO-92 Package | Required for button LEDs. | Link | $0.40 |
| 10x Resistors * | 10k Ohm, 0805 Surface Mount | Required for button LEDs. Recommendation - buy extras. | Link | $1 |
| 10x Resistors ** | 10k Ohm, 1/4W Through Hole | Required for button LEDs. | Link | $1 |
| 1x Pin Header * | 3 pins | Optional, only used for debugging. | N/A | N/A |
* Surface mount board ** Through-hole board
Assembly is dead simple. The surface mount PCB are as follows:
And here are the steps for the through-hole PCB:
Here are some things to keep in mind:
Below are the pinouts for the buttons, as an easy reference in case you're playing around with the firmware.
| PicoIO | Raspberry Pi Pico |
|---|---|
| P1 down left LED | GPIO0 |
| P1 down left btn | GPIO1 |
| P2 down left LED | GPIO2 |
| P2 down left btn | GPIO3 |
| P1 up left LED | GPIO4 |
| P1 up left btn | GPIO5 |
| P2 up left LED | GPIO6 |
| P2 up left btn | GPIO7 |
| P1 center LED | GPIO8 |
| P1 center btn | GPIO9 |
| P2 center LED | GPIO10 |
| P2 center btn | GPIO11 |
| P1 up right LED | GPIO12 |
| P1 up right btn | GPIO13 |
| P2 up right LED | GPIO14 |
| P2 up right btn | GPIO15 |
| P1 down right LED | GPIO21 |
| P1 down right btn | GPIO20 |
| P2 down right LED | GPIO19 |
| P2 down right btn | GPIO18 |
| TEST | GPIO17 |
| SERVICE | GPIO16 |
| GP26 | GPIO26 |
| GP27 | GPIO27 |
| GP28 | GPIO28 |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | Conn_01x04 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J1, J2, J3, J4, J4, J5, J6, J7, J8, J9, J10 |
| 10 | 10K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2, R3, R4, R5, R6, R7, R8, R9, R10 |
| 10 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10 |
| 4 | LOGO | LogoFootprints:Arrow_6 | G***, G***, G***, G*** |
| 2 | LOGO | LogoFootprints:Btnboard_Arrow-2_8mm | G***, G*** |
| 1 | Conn_01x02 | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J14 |
| 1 | Conn_01x03 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J11 |
| 1 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J13 |
| 1 | Conn_01x06 | Connector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical | J12 |
| 1 | LOGO | LogoFootprints:PicoIO-8_38mm | G*** |
| 1 | LOGO | LogoFootprints:PicoIO | G*** |
| 1 | LOGO | LogoFootprints:Arrow_3mm | G*** |
| 1 | LOGO | LogoFootprints:CenterStep_6mm | G*** |
| 1 | LOGO | LogoFootprints:InfinitesimalLoop_18mm | G*** |
| 1 | LOGO | LogoFootprints:Btnboard_Start-2_8mm | G*** |
| 1 | LOGO | LogoFootprints:InfinitesimalLogo_18mm | G*** |
| 1 | LOGO | LogoFootprints:Btnboard_Options-2_8mm | G*** |
| 1 | Pico | MCU_RaspberryPi_and_Boards:RPi_Pico_SMD_TH | U1 |
The 50 most common of 53 parts.

dj505/PicoIO
An affordable, simple, and feature-rich PIU controller IO board

StuckAtPrototype/Racer
These are structured into their own files. I could have used submodules, but decided against it.

willem-pennings/balancing-cube
A cube that balances itself in a corner or edge using reaction wheels

abhishek-kakkar/BeagleLogic
A Software Suite that implements a logic analyzer with the PRU on the BeagleBone / BeagleBone Black.


lachlanA/eagle-to-kicad
Eagle SCH/LIB to KiCad SCH/LIB ULP conversion script

No0ne/ps2x2pico
USB keyboard/mouse to PS/2 interface converter using a Raspberry Pi Pico

StuckAtPrototype/AirCube
Works standalone out of the box. Pairs with Home Assistant in minutes. Other platforms are supported through community-contributed extensions.

It measures 73.2 × 58.4 mm and has 2 copper layers, 1.6 mm thick.
53 parts, built around the BSS138. 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.
From the dj505/PicoIO repository on GitHub, at the commit this page was made from: the board is PicoIO.kicad_pcb and its schematic PicoIO-THT/PicoIO-THT.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-3.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).