
PSLab
fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io

Hey there, I'm Subham, a 14 year old kid (currently) from Chennai, India
ValkDeck is an open-source printed circuit board by SubhamSaiSamal, from the SubhamSaiSamal/ValkDeck repository on GitHub. It is a 2-layer board of 100 × 95.5 mm with 43 parts on 78 nets, routed with 504 tracks and 5 vias.
It is built around the WS2812B. Its parts include 18 diodes, 9 capacitors, 1 IC, 1 connector and 1 switch. It belongs with the RP2040 boards of this library.
Hey there, I'm Subham, a 14 year old kid (currently) from Chennai, India
I needed a better way to manage my flight sim telemetry, trigered automation workflows, and also blindly control my volume while locked into a game. I could have bought a generic macropad off Amazon for $20.
Instead, I spent 40 hours learning KiCad, routing my own custom PCB, designing an enclosure in onshape, and writing a CircuitPython program from scratch.
Welcome to ValkDeck.
It's a 9-key, fully hotswappable cyberdeck module powered by a Raspberry Pi Pico. It features per=key WS2812B underglow, a rotary encoder for media control, and a 0.91" I2C OLED display that feeds back live system status so I can actually know what my macros are doing.
If you look at the top right of the board, you'll see a machined metal blanking plug.
Originally, that 12mm hole was meant for a massive, avionics-grade MTS-101 toggle switch (the "Nuke Switch") to act as a hardware reset. I measured the top plate perfectly. What i forgot to measure was the internal Z-axis clearance. The massive rectangular block of the toggle switch slammed right into the PCB.
Physical reality remains undefeated. Instead of spending the next 6 hours rearranging the whole top-case, I pivoted. I covered it with a sleek metal plug for a premium industrial look. It's not a bug; it's an aesthetic hardware change.
I have been familiar with breadboards and scary jumper wire connections for quite a while. Instead of a terrifying 3D web of hand-soldered jumper wires, ValkDeck runs on a custom-routed, two layer FR-4 board.
Bottom-Mount SMD : The kailh hotswap sockets and 1N4148 diodes are all surface mounted on the upperside of the board. Ghost-Free Matrix : The diodes are correctly routed (Row to Column) to ensure complete N-key rollover without ghosting. Through-Hole Anchors : The Raspberry Pi Pico, Rotary Encoder, and OLED screen are all through-hole soldered for maximum regidity 💪.
ValkDeck runs on a custom FR-4 PCB with a proper diode-protected switch matrix.
If you're trying to understand the exact tracing or trying to make your very own ValkDeck, here is the routing:
| Component | Pico Pin (GPIO) | Note |
|---|---|---|
| Matrix Rows | GP09, GP10, GP11 | Row 0,1,2 |
| Matrix Cols | GP00, GP01, GP02 | Col 0,1,2 |
| Encoder | GP04(A), GP03(B), GND(C), GND(S2), GP05(S1) | Volume sweeping and mute |
| OLED | GP16(SCL), GP17(SDA) | Standard I2C |
| NeoPixels | GP15 | Single data line for all 9 LEDs |
| Buzzer | GP19 | PWM Audio (retro pokemon) |
ValkBlox is run using Adafruit's CircuitPython. It uses the keypad library for the background matrix scanning, and displayio to dynamically update the OLED based on what macro you just fired
To Deploy :
Flash your Pico with the latest CircuitPython.uf2
Grab the Adafruit Library Bundle and drop this stuff into your CITCUITPY/lip folder
Drop firmware.py from this repo to the root drive
| Name | Purpose | Quantity | Total Cost (USD) | Link | Distributor |
|---|---|---|---|---|---|
| Raspberry Pi PICO | Microcontroller (Controls everything lol) | 1 | $4.05 | View Product | Silverzone |
| 0.91 Inch I2C OLED | OLED Display to display backend info | 1 | $1.94 | View Product | RoboticsDNA |
| Cherry MX RGB Switch | Brown RBG Switch (Pack of 10) | 1 | $3.7 | View Product | Meckeys |
| Kalih Socket | Hot-Swap socket for cherry mx switches (Pack of 10) | 1 | $0.84 | View Product | Meckeys |
| Deep Purple Keycaps | Purple Keycaps (Pack of 5) | 2 | $2.00 | View Product | Meckeys |
| Rotary Encoder | M274 Rotary Encoder Switch | 1 | $0.46 | View Product | Robu |
| rotary encoder knob | 3D printed | 1 | ---- | ----- | ----- |
| 100nF capacitor | 100nF ceramic capacitor (Pack of 25) | 1 | $0.15 | View Product | roboticsDNA |
| 1N4148 Diode | IN4148 DIODE (Pack of 10) | 2 | $0.50 | View Product | RoboticsDNA |
| WS2812B RGB | WS2812B 5050RGB (Pack of 10) | 1 | $2.43 | View Product | Robu |
| AC1255 Buzzer | Buzzer | 1 | $0.074 | View Product | Robu |
| 2.54mm male header | Male header for PICO | 2 | $0.55 | View Product | Robu |
| Custom PCB | Custom PCB printed from JLCPCB (includes shipping) | 5 | $9.20 | View Product | Silverzone |
| Total | ----- | 0 | $25.82 | ----- | ----- |
(ps. this repo will be updated to v1.1 after i build this board irl, stay tuned! :3)
| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 1N914 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D2, D3, D4, D5, D6, D7, D8, D9 |
| 9 | C_Small | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C2, C3, C4, C5, C6, C7, C8, C9, C10 |
| 9 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D10, D11, D12, D13, D14, D15, D16, D17, D18 |
| 1 | 0,0 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a8 |
| 1 | 0,1 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a9 |
| 1 | 0,2 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a10 |
| 1 | 1,0 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a6 |
| 1 | 1,1 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a2 |
| 1 | 1,2 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a4 |
| 1 | 2,0 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a7 |
| 1 | 2,1 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a3 |
| 1 | 2,2 | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | a5 |
| 1 | Buzzer | Buzzer_Beeper:Buzzer_12x9.5RM7.6 | BZ1 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J1 |
| 1 | ER_OLEDM0.91_1x-I2C | Display:ER_OLEDM0.91_1x-I2C | U1 |
| 1 | LOGO | Logos and Stickers:valkdeckie | i |
| 1 | LOGO | Logos and Stickers:bannerfinal | g |
| 1 | RaspberryPi_Pico | Module:RaspberryPi_Pico_Common_Unspecified | A1 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW1 |
It measures 100 × 95.5 mm and has 2 copper layers, 1.6 mm thick.
43 parts, built around the WS2812B. 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 SubhamSaiSamal/ValkDeck repository on GitHub, at the commit this page was made from: the board is PCB/ValkDeck.kicad_pcb and its schematic PCB/ValkDeck.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask SubhamSaiSamal before reusing the design.

fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io

FrameworkComputer/ExpansionCards
Reference designs and documentation to create Expansion Cards for the Framework Laptop



PrintersForAnts/Micron
If you want to purchase full kits there are 3 available (Kits are slowly updating to R1 hardware just make sure to double check the included hardware in your kit and if you have any questions reach out in the discord)


