Skip to the content
PCBKitNew board
2 layers80 × 61 mmPicoProducer, the printed circuit board in 3D

This project is an OBS Controller using a Raspberry Pi Pico and CircuitPython.

Size
80 × 61 mm
Copper layers
2
Thickness
1.6 mm
Parts
27
Nets
60
Pads
132
Tracks, vias
335, 30
Routed
Yes
KiCad
KiCad 5 (file 20210126)
Created
4 Feb 2021
Updated
3 May 2021

Overview

PicoProducer is an open-source printed circuit board by pjgpetecodes, from the pjgpetecodes/pico-streamdeck repository on GitHub, published under the MIT licence. It is a 2-layer board of 80 × 61 mm with 27 parts on 60 nets, routed with 335 tracks and 30 vias.

Its parts include 12 diodes and 12 switches. It belongs with the RP2040 boards of this library.

README

README.md

Pico Producer

About this Project

This project is an OBS Controller using a Raspberry Pi Pico and CircuitPython.

Pico StreamDeck Build 1

In Action

Pico StreamDeck In Action

Featured

The Raspberry Pi Pico Producer has been featured in the following publications;

Basic Circuit

Pico StreamDeck Circuit

I've avoid GP15 as it's assigned a USB function... Using GP15 results in the following error at startup;

"ValueError: GP15 in use"

PCB

Front

Pico StreamDeck PCB Front

Back

Pico StreamDeck PCB Back

PCB

Pico StreamDeck PCB PCB

You can have your PCB made at OSH Park here;

https://oshpark.com/shared_projects/UNP0qi2U

Parts List

Notes:

Case

We now have two different case designs....

Cliff Agius and his son have created a version of the box suited for buttons with holes for LEDs.

I've modified this design to add LEDs above each button;

Pico StreamDeck Case

It was originally based on this design;

https://www.thingiverse.com/thing:4186055

The keycaps are from here;

https://www.thingiverse.com/thing:4186055

You can find the project on Thingiverse here;

https://www.thingiverse.com/thing:4800253

Assembly Hints

  • Insert the 20 Pin PCB headers with the long legs away from the PCB towards the Pico (Otherwise it'll fowl the faceplate)
  • Solder the 2 Resistor Packs and the Pico PCB Headers first. Then the LEDs and Buttons. Then the Pico.
  • You'll need to trim the legs on the resistor packs which border the three left hand buttons.
  • Insert the LEDs into the PCB, then insert the Buttons into the faceplate and then insert that into the PCB.
  • Push the leds back through the PCB, so they poke into the holes in the faceplate, otherwise they'll be below the faceplate.
  • You'll need to trim the legs on the PCB headers otherwise it'll fowl the bottom of the case.

CircuitPython HID

You can find some more info about the CircuitPython KeyMappings here;

https://circuitpython.readthedocs.io/projects/hid/en/latest/_modules/adafruit_hid/keycode.html

Instructions

  • Plug in the Raspberry Pi Pico while holding the onboard button.
  • Your PC will mount the Pico as a drive
  • Copy the adafruit-circuitpython-raspberry_pi_pico-en_US-6.2.0-beta.1.uf2 file to the Pico
  • The Pico will reboot once it's done with CircuitPython onboard.
  • Copy the adafruit_hid folder and the code.py file to the Pico
  • In OBS setup Hotkeys for the different scenes by putting your cursor in the Hotkey Box and pressing a button...
text
Scene 1 =  ctrl + F1
Scene 2 =  ctrl + F2
Scene 3 =  ctrl + F3
Scene 4 =  ctrl + F4
Scene 5 =  ctrl + F5
Scene 6 =  ctrl + F6
Scene 7 =  ctrl + F7
Scene 8 =  ctrl + F8
Scene 9 =  ctrl + F9
Scene 10 =  ctrl + F10
Scene 11 =  ctrl + F11
Scene 12 =  ctrl + F12
  • Press the buttons to change scenes in OBS!
  • Each button will light a corresponding LED to show which Scene is currently active.

Debugging

Circuit Python creates a virtual COM port, so you can use a terminal Program set to 8N1 9600 Baud to debug the code... Just hit the enter key at teh prompt, and the terminal will echo there.

It might help to put a large enough delay at the start of your code to give you time to initialise the terminal.

Pico Debugging

Future Planning

  • Look at Bluetooth / WebSockets (Will need add on circuitary!)
  • Possible Matrix Input (But, I like the simplicity)
  • Possible Resistor Ladder Input (But, again, I like the simplicity)

Notes

The HID control code is based on a nice blog post by Hriday which shows how to get the Pico working as a HID device, emulating a keyboard;

https://hridaybarot.home.blog/2021/01/31/using-raspberry-pi-pico-has-hid-device-to-control-mouse-and-keyboard/

Thanks

Thanks to Cliff Agius and his son for the original 3d Files. Thanks to John Furcean for refactoring the code. Thanks to frankalicious for fixing some spelling checks.

Parts

27
QtyValueFootprintReferences
12MXButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PlateSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12
11LEDLED_THT:LED_D5.0mmD1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11
2R_Pack08Package_DIP:DIP-16_W7.62mmRN1, RN2
1LED5MMLED_THT:LED_D5.0mmD12
1RPI_PICO-SMDRaspberry Pi:RPi_Pico_SMD_THU$1

Questions

How big is the PicoProducer PCB?

It measures 80 × 61 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PicoProducer use?

27 parts. 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 PicoProducer KiCad files?

From the pjgpetecodes/pico-streamdeck repository on GitHub, at the commit this page was made from: the board is pcb/PicoProducer.kicad_pcb and its schematic pcb/PicoProducer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PicoProducer design in my own project?

Its repository publishes it under the MIT 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 layers47.6 × 27.3 mmMmc usb 1, the printed circuit board in 3D

    Mmc usb 1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    27 parts1.2k
  • 2 layers77.4 × 77.4 mmCORAZON LEDS CON FADE, the printed circuit board in 3D

    CORAZON LEDS CON FADE

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    27 parts915
  • 2 layers44.2 × 29.3 mmI2c tiny usb, the printed circuit board in 3D

    I2c tiny usb

    harbaum/I2C-Tiny-USB

    Cheap and simple I²C to USB interface

    27 parts454
  • 2 layers22 × 42 mmNvme bm to e, the printed circuit board in 3D

    Nvme bm to e

    CRImier/MyKiCad

    My KiCad boards. Can't be bothered uploading individually anymore, so here you go.

    27 parts253GPL-3.0
  • 2 layers186 × 45 mmAddOnD, the printed circuit board in 3D

    AddOnD

    freeDSP/freeDSP-aurora

    freeDSP ADAU1452 with 8 analog input, 8 analog outputs, S/P-DIF I/O, ADAT I/O, USB Audio Class2, WiFi, Bluetooth

    27 parts226CC-BY-SA-4.0
  • 2 layers29.6 × 40.6 mmDbwifi revB, the printed circuit board in 3D

    Dbwifi revB

    ugcs/ddc

    Drone Show Software is software designed for drone shows, allowing flight path planning as well as control of dozens of drones simultaneously in a synchronized manner.

    27 parts223
  • 2 layers110.2 × 90.6 mmWizza, the printed circuit board in 3D

    Wizza

    AlaaSaadAbdo/battoota

    Keyboards

    27 parts188