Skip to the content
PCBKitNew board
2 layers314.3 × 161.9 mmFREEBOARD, the printed circuit board in 3D

A Low Profile 60% Keyboard with an OLED Display and Rotary Encoder. This is the first iteration of the FREEBOARD, I will make one that has space for a SoM carrier board to be placed inside the case, similar to a Raspberry Pi 500 where the entire computer is encapsulated in a keyboard body.

Size
314.3 × 161.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
370
Nets
228
Pads
1,234
Tracks, vias
3,055, 437
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
27 Jul 2026
Updated
28 Aug 2026

Overview

FREEBOARD is an open-source printed circuit board by Ningheim, from the Ningheim/FREEBOARD repository on GitHub, published under the MIT licence. It is a 2-layer board of 314.3 × 161.9 mm with 370 parts on 228 nets, routed with 3,055 tracks and 437 vias.

It is built around the SK6812MINI-E. Its parts include 172 diodes, 95 capacitors, 86 switches, 4 resistors and 1 IC. It belongs with the computers and single-board computers and lEDs and displays boards and the RP2040 boards of this library.

Main components

1

README

README.md

FREEBOARD

A 60% RGB Backlit Keyboard with a OLED display, rotary encoder, and adjustable inclination stands.

This keyboard is powered by an Orpheus/Raspberry Pi Pico and an additional MCP23017 for extra GPIO pins. The firmware is entirely coded in QMK and the case is a little wider than a Framework 13 for reference, at about 320x165mm it's made to be compact and accessible to be used alongside a laptop. I made this because I wanted to fix a lot of things with the layout of other wormier and logitech keyboards where the keys weren't as inline as I'd hoped whilst still including function keys and appealing RGB factors.

Here are the pictures to the project

Intended Layout (Plate Generator):

LAYOUT

Schematic (KiCAD):

SCHEMATIC

PCB (KiCAD):

PCB FINALPCB

CASE (Onshape [Document Link])

CASE

Case Assembly

You can use adhesive for some of the parts but it isn't required as they should sit flush without any glue, you can also sand things down to fit flush if your 3d printed had a printing issue. All of the parts I'm naming in this section have corresponding names in the onshape document.

  1. Put the Plastic Spacer in first, then the Plastic Window into the slot on the inside of the Base Case, The window is meant to be made out of clear material like transparent plastic or something so you can see the Silkscreen design on the bottom side of the board.
  2. Cut a two 1mm diameter rods to 64mm and Thread each one through the holes of each set of tilt stands you as shown in the assembly tab on the onshape document. The stands should be able to turn/revolve around the axis of the rods, and you can make the rods of any material it just has to be firm. To lock the rods in, melt plastic or insert rubber friction pads into each of the 6 empty rectangular indents on the back of the Base Case
  3. Then you can put in the PCB with the Plate ontop of it. Now we have the Top Cover and Translucent Emblem left, so put the Translucent Emblem into the matching cutout on the Top Cover, and insert those joined pieces into the top of the case, to keep everything pressed down. Lastly, add the encoder knob and you're done!

How To Flash

Freeboard uses QMK Firmware running on a Raspberry Pi Pico. The firmware source is available in firmware/freeboard.

The firmware supports: An 81-key matrix 91 SK6812MINI-E RGB LEDs An I2C OLED display A rotary encoder connected through an MCP23017 GPIO expander Media and RGB controls through a function layer

To start building the firmware, install and configure the QMK development environment, then copy the Freeboard firmware into your QMK installation:

cp -a firmware/freeboard ~/qmk_firmware/keyboards/ cd ~/qmk_firmware qmk clean qmk compile -kb freeboard -km default

After a successful build, the flashable firmware will be located at:

~/qmk_firmware/freeboard_default.uf2

Flashing Sequence

Unplug Freeboard from the computer. Hold the BOOTSEL button on the Raspberry Pi Pico. While continuing to hold BOOTSEL, connect the keyboard to the computer using USB. Release BOOTSEL when a removable drive named RPI-RP2 appears. Copy freeboard_default.uf2 onto the RPI-RP2 drive. The drive will disconnect automatically and the keyboard will restart with the new firmware. Flashing future updates

Hold Fn and press Esc to enter the RP2040 bootloader. When the RPI-RP2 drive appears, copy the newly compiled freeboard_default.uf2 onto it.

CONTROLS

The Fn key is located between Right Alt and Left Arrow.

Input Action Rotate encoder Adjust volume Press encoder Mute or unmute Fn + Esc Enter the bootloader Fn + Home Toggle RGB lighting Fn + Page Up Select the next RGB effect Fn + Page Down Select the previous RGB effect Fn + Up Increase RGB brightness Fn + Down Decrease RGB brightness Fn + Left Decrease RGB hue Fn + Right Increase RGB hue Fn + End Increase RGB animation speed RGB brightness is limited in firmware because all 91 LEDs are powered from USB VBUS. Increasing the limit could exceed the available USB current.

BOM

ItemCostLink
PCB$37.84JLCPCB
Switches$40Aliexpress
Keycaps$10Aliexpress
Encoder$1Aliexpress
OLED Display$2Aliexpress
Plastic Case$38.36JLC3DP
Electronic Components$22.18LCSC
Display Connector$7.00Adafruit
Buffer for shipping and fees$5.00N/A
Total~$155

Notes:

The BOM file itself is in ~\FREEPCB\PRODUCTION, and the keycaps, switches, stabilizers, and encoder all probably have to be bought from an external retailer. So prices may vary. And there are screw holes for M3 screw inserts if needed. All of the parts will be friction fitted and pressed down flush but if they do come apart unexpectedly glue is always an answer since almost all of the parts need to stay in static positions anyways.

Parts

370
QtyValueFootprintReferences
91100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25 +75
91SK6812MINI-Efootprints:SK6812MINI-E_fixedD100, D101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112, D113, D114, D115 +75
811N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +65
81SW_Push_45degPCM_marbastlib-mx:SW_MX_1uSW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +65
8MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4, H5, H6, H7, H8
20.1uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C2
24.7kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2, R3
2LOGOLOGOG***, G***
2MX_stabPCM_marbastlib-mx:STAB_MX_2.25uS2, S3
110kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
110uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3
1350Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4
1470uFCapacitor_Tantalum_SMD:CP_EIA-7343-31_Kemet-D_HandSolderC5
1MCP23017x-x-SPPackage_DIP:DIP-28_W7.62mmU1
1MX_stabPCM_marbastlib-mx:STAB_MX_6.25uS4
1MX_stabPCM_marbastlib-mx:STAB_MX_2uS1
1OLED_DISPLAYConnector_JST:JST_SH_BM04B-SRSS-TB_1x04-1MP_P1.00mm_VerticalJ1
1RaspberryPi_PicoModule:RaspberryPi_Pico_Common_THTA1
1RotaryEncoder_SwitchPCM_marbastlib-various:ROT_Alps_EC11E-SwitchSW82

Questions

How big is the FREEBOARD PCB?

It measures 314.3 × 161.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the FREEBOARD use?

370 parts, built around the SK6812MINI-E. 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 FREEBOARD KiCad files?

From the Ningheim/FREEBOARD repository on GitHub, at the commit this page was made from: the board is FREEPCB/FREEBOARD.kicad_pcb and its schematic FREEPCB/FREEBOARD.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the FREEBOARD 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

  • 4 layers234 × 84 mmMain panel, the printed circuit board in 3D

    Main panel

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    234 parts3kApache-2.0
  • 4 layers180.8 × 300.3 mmDilemma, the printed circuit board in 3D

    Dilemma

    Bastardkb/Dilemma

    The Dilemma is a vertical stagger low-profile keyboard with mods.

    383 parts590
  • 4 layers48 × 32 mmFlatSat, the printed circuit board in 3D

    FlatSat

    Pwnsat/FlatSat

    Flatsat v1.0 is a hardware based platform for aerospace cybersecurity research

    106 parts575GPL-2.0
  • 2 layersDemo, the printed circuit board in 3D

    Demo

    adamws/kicad-kbplacer

    KiCad plugin for automatic keyboard's key placement and routing

    48 parts547GPL-3.0
  • 2 layers97 × 78.5 mmDumbpad, the printed circuit board in 3D

    Dumbpad

    imchipwood/dumbpad

    Simple 4x4 numpad with rotary encoder. Powered by QMK via ATmega32u4 Pro Micro

    62 parts517GPL-2.0
  • 4 layers82.5 × 39.4 mmV4head, the printed circuit board in 3D

    V4head

    makerforgetech/modular-biped

    An open source framework for creating a bipedal modular companion robot.

    26 parts493GPL-3.0
  • 2 layers115.7 × 95.7 mmFifi split keeb, the printed circuit board in 3D

    Fifi split keeb

    raychengy/fifi_split_keeb

    Fifi Keyboard 🐶 ⌨️

    66 parts334
  • 4 layers70 × 54 mmPicoLab, the printed circuit board in 3D

    PicoLab

    CoretechR/PicoLab

    Web-GUI Embedded Multitool

    285 parts327GPL-3.0