Skip to the content
PCBKitNew board
2 layers313.6 × 83.8 mmOrch, the printed circuit board in 3D

A mostly ortholinear keyboard PCB that fits GMK keycaps.

Size
313.6 × 83.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
157
Nets
110
Pads
701
Tracks, vias
777, 74
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
14 Jan 2021
Updated
9 Sep 2021

Overview

Orch is an open-source printed circuit board by htpkbs, from the htpkbs/orch repository on GitHub, published under the BSD-2-Clause licence. It is a 2-layer board of 313.6 × 83.8 mm with 157 parts on 110 nets, routed with 777 tracks and 74 vias.

It is built around the ATMEGA32U4-AU and SK6812. Its parts include 68 diodes, 61 switches, 16 capacitors, 6 resistors and 2 connectors. It belongs with the keyboards and input boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

Overview

The orch is a keyboard PCB.

It has:

  • A mostly ortholinear layout
  • Key sizes that fit most GMK keycap sets
  • 1.25u super/meta/command keys
  • 19mm switch spacing
  • An arrow key cluster
  • A function key column
  • USB-C
  • A rotary encoder
  • No stabilizers unless you want one for a 2U spacebar
  • Optional 2U spacebar or 2 1U keys

Key Layout

The key layout looks like this. (Thanks to Keyboard Layout Editor for the image.)

Key layout

This is the corresponding data for pasting into Keyboard Layout Editor:

text
[{x:0.25,c:"#393b3b",t:"#9065c7",a:6,w:1.5},"Tab",{c:"#727474",t:"#c6c9c7",a:4,f:5},"Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\",{c:"#393b3b",x:0.25,t:"#c6c9c7",a:4,f:3},"Page\n\n\n\n\n\nUp"],
[{t:"#689b34",a:6,w:1.75},"Control",{c:"#727474",t:"#c6c9c7",a:4,f:5},"A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{c:"#393b3b",t:"#689b34",a:6,f:3,w:1.75},"Function",{x:1,t:"#c6c9c7",a:4},"Page\n\n\n\n\n\nDown"],
[{t:"#ee6d00",a:6,w:1.75},"Shift",{c:"#727474",t:"#c6c9c7",a:4,f:5},"Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{c:"#393b3b",t:"#ee6d00",a:6,f:3,w:1.25},"Shift",{x:2.5,t:"#dd1126"},"Code"],
[{y:-0.75,x:13.25,t:"#c6c9c7",a:4,f:5},"&uarr;"],
[{y:-0.25,x:0.5,t:"#ee6d00",a:6,f:3},"Fn",{t:"#0084c2"},"Ctrl","Alt",{t:"#dd1126",w:1.25},"Code",{t:"#0084c2"},"Code",{c:"#727474",t:"#000000",a:7},"","",{c:"#393b3b",t:"#0084c2",a:6},"Code",{t:"#dd1126",w:1.25},"Code",{t:"#0084c2"},"Alt","Ctrl",{x:3.5,t:"#dd1126"},"Code"],
[{y:-0.75,x:12.25,t:"#c6c9c7",a:4,f:5},"&larr;","&darr;","&rarr;"]

PCB Renders

PCB front

PCB back

Case

Case files are in the case directory and include a cutout for the rotary encoder. The "closed" layer requires some dremeling or filing to make room for the USB connector. Thanks to the swillkb Plate & Case Builder. There are two bottom case files included. One of them has smaller holes that are meant for tapping (to secure the screws directly into the back case layer), and the other has "open" holes that an M2 screw will fit through (to secure the case together with nuts).

Schematic

There is a PDF of the schematic here.

AVR Notes

These are just some notes on programming the ATmega32U4. The datasheet is here.

Programming

ISP headers are included in the "No Legs" Tag-Connect format. You need a Tag-Connect cable and retaining clip board to connect to it. For example, if you have an AVRISP mkII programmer, you need the "No Legs" cable and the retaining clip board.

Fuses

Default values are:

text
E:F3, H:99, L:5E

Extended

NameBitValueStatusReason
-71UnprogrammedUnused
-61UnprogrammedUnused
-51UnprogrammedUnused
-41UnprogrammedUnused
HWBE30ProgrammedPin used to force bootloader after reset
BODLEVEL220Programmed4.3V brown-out reset threshold
BODLEVEL110Programmed4.3V brown-out reset threshold
BODLEVEL000Programmed4.3V brown-out reset threshold

Hex value is F0.

High

NameBitValueStatusReason
OCDEN71UnprogrammedOCD disabled
JTAGEN60ProgrammedJTAG enabled
SPIEN50ProgrammedSPI enabled
WDTON41UnprogrammedWatchdog timer in interrupt mode
EESAVE31UnprogrammedEEPROM preserved on chip erase
BOOTSZ120ProgrammedDefault maximum boot size
BOOTSZ010ProgrammedDefault maximum boot size
BOOTRST01Unprogrammed4.3V brown-out reset threshold

Hex value is 99.

Low

NameBitValueStatusReason
CKDIV871UnprogrammedDon't divide clock by 8
CKOUT61UnprogrammedDon't output clock
SUT150ProgrammedCrystal oscillator with BOD enabled
SUT041UnprogrammedCrystal oscillator with BOD enabled
CKSEL331UnprogrammedLow power 16MHz crystal oscillator
CKSEL221UnprogrammedLow power 16MHz crystal oscillator
CKSEL111UnprogrammedLow power 16MHz crystal oscillator
CKSEL001UnprogrammedCrystal oscillator with BOD enabled

Hex value is DD.

Setting Fuse Values

avrdude commands to set the fuse values with an AVRISP mkII programmer:

text
avrdude -p m32u4 -c avrispmkII -U efuse:w:0xF0:m
avrdude -p m32u4 -c avrispmkII -U hfuse:w:0x99:m
avrdude -p m32u4 -c avrispmkII -U lfuse:w:0xDD:m

Note that the extended fuse will always show as C0 with avrdude (despite the datasheet saying that the first four bits are unprogrammed/1111).

You may need to erase the chip before you set the fuse values:

text
avrdude -p m32u4 -c avrispmkII -e

The first time flashing should be done with a programmer like the AVRISP mkII and you should compile QMK to include the bootloader in the firmware file (using :production). I have a fork of the qmk_firmware repository here that I may or may not try to get merged at some point.) To compile the orch branch with the QMK CLI:

text
qmk compile -kb orch -km default:production

I've had luck setting a custom bitclock setting (-B) for the initial flash when using the mkII, but this may not matter. For example:

text
avrdude -p m32u4 -c avrispmkII -U flash:w:orch_default_production.hex:i -B 154.37

You should now be able to flash regular (non-:production) firmware that doesn't include the bootloader over USB using QMK Tookbox.

Sublicenses

Parts

157
QtyValueFootprintReferences
601N4148orch:D_DO-35_SOD27_P5.08mm_HorizontalD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +44
50MX-NoLEDorch:MX-1U-NoLEDSW10, SW11, SW12, SW13, SW14, SW15, SW17, SW18, SW19, SW20, SW21, SW22, SW23, SW24, SW26, SW27 +34
120.1uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
8SK6812LED_SMD:LED_SK6812_PLCC4_5.0x5.0mm_P3.2mmD61, D62, D63, D64, D65, D66, D67, D68
3MX-NoLEDorch:MX-1.25U-NoLEDSW16, SW37, SW48
3MX-NoLEDorch:MX-1.75U-NoLEDSW2, SW3, SW51
222RResistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolderR2, R3
222pFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2
25.1kResistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolderR4, R5
2MX-NoLEDorch:MX-1.5U-NoLEDSW1, SW54
1100mAFuse:Fuse_0805_2012Metric_Pad1.15x1.40mm_HandSolderF1
110KResistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolderR6
110kResistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolderR1
116MHzCrystal:Crystal_SMD_Abracon_ABM3-2Pin_5.0x3.2mm_HandSolderingY1
11uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC16
14.7uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3
1ATmega32U4-AUPackage_QFP:TQFP-44_10x10mm_P0.8mmU1
1AVR-ISP-6Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ1
1LOGOorch:htpkbsG***
1MX-NoLEDorch:MX-2U-NoLEDSW25
1ResetButton_Switch_SMD:SW_Push_1P1T_NO_CK_KMR2SW61
1Rotary_Encoder_Switchorch:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW55
1USB_C_Receptacle_USB2.0orch:USB_C_GCT_USB4085P1

Questions

How big is the Orch PCB?

It measures 313.6 × 83.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Orch use?

157 parts, built around the ATMEGA32U4-AU and SK6812. 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 Orch KiCad files?

From the htpkbs/orch repository on GitHub, at the commit this page was made from: the board is pcb/orch.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Orch design in my own project?

Its repository publishes it under the BSD-2-Clause 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 layers145 × 145 mmNeofighter, the printed circuit board in 3D

    Neofighter

    w4ilun/neofighter

    A MIDI controller using arcade buttons with RGB lighting effects

    111 parts51
  • 2 layers315 × 121 mmSentry keyboard v1, the printed circuit board in 3D

    Sentry keyboard v1

    markstory/sentry-keyboard

    Replacement PCB for the gifted keyboards

    265 parts3MIT
  • 2 layers303.2 × 92.1 mmAthene pcb, the printed circuit board in 3D

    Athene pcb

    kebbn/athene-pcb-32u4

    65% PCB design for the Athene keyboard by KL using the ATmega32u4 MCU (No longer supported)

    182 partsMIT
  • 2 layers299 × 82.5 mmPixelWave, the printed circuit board in 3D

    PixelWave

    hackclub/OnBoard

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

    663 parts915
  • 4 layers95 × 95 mmOpenmicro, the printed circuit board in 3D

    Openmicro

    conol-ai/openmicrokbd

    Open-source recreation of OpenAI's Codex Micro macropad — PCB written in CoHDL, an AI-native hardware description language. Rust firmware (embassy) + companion app (makepad). MIT licensed. https://openmicrokbd.org

    88 parts154MIT
  • 2 layers312.5 × 122.3 mmSHEGO75-V5, the printed circuit board in 3D

    SHEGO75-V5

    Charading/Shego75HE

    My endgame 75% hall effect keyboard

    392 parts75
  • 2 layers140.1 × 121.8 mmTH LEDS, the printed circuit board in 3D

    TH LEDS

    DraftShift/Tophat

    StealthChanger now has an official website!

    89 parts64GPL-3.0
  • 2 layers187.9 × 127.2 mmDya panelized, the printed circuit board in 3D

    Dya panelized

    cormoran/dya-dash-keyboard

    DYA Dash portable wireless split keyboard with 25mm trackball

    269 parts57CC-BY-4.0