Skip to content
/ orch Public

A mostly ortholinear keyboard PCB that fits GMK keycaps.

License

BSD-2-Clause and 2 other licenses found

Licenses found

BSD-2-Clause
LICENSE
Unknown
LICENSE.CFTKB
MIT
LICENSE.ai03
Notifications You must be signed in to change notification settings

htpkbs/orch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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:

[{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:

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

Extended

Name Bit Value Status Reason
- 7 1 Unprogrammed Unused
- 6 1 Unprogrammed Unused
- 5 1 Unprogrammed Unused
- 4 1 Unprogrammed Unused
HWBE 3 0 Programmed Pin used to force bootloader after reset
BODLEVEL2 2 0 Programmed 4.3V brown-out reset threshold
BODLEVEL1 1 0 Programmed 4.3V brown-out reset threshold
BODLEVEL0 0 0 Programmed 4.3V brown-out reset threshold

Hex value is F0.

High

Name Bit Value Status Reason
OCDEN 7 1 Unprogrammed OCD disabled
JTAGEN 6 0 Programmed JTAG enabled
SPIEN 5 0 Programmed SPI enabled
WDTON 4 1 Unprogrammed Watchdog timer in interrupt mode
EESAVE 3 1 Unprogrammed EEPROM preserved on chip erase
BOOTSZ1 2 0 Programmed Default maximum boot size
BOOTSZ0 1 0 Programmed Default maximum boot size
BOOTRST 0 1 Unprogrammed 4.3V brown-out reset threshold

Hex value is 99.

Low

Name Bit Value Status Reason
CKDIV8 7 1 Unprogrammed Don't divide clock by 8
CKOUT 6 1 Unprogrammed Don't output clock
SUT1 5 0 Programmed Crystal oscillator with BOD enabled
SUT0 4 1 Unprogrammed Crystal oscillator with BOD enabled
CKSEL3 3 1 Unprogrammed Low power 16MHz crystal oscillator
CKSEL2 2 1 Unprogrammed Low power 16MHz crystal oscillator
CKSEL1 1 1 Unprogrammed Low power 16MHz crystal oscillator
CKSEL0 0 1 Unprogrammed Crystal oscillator with BOD enabled

Hex value is DD.

Setting Fuse Values

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

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:

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:

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:

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

About

A mostly ortholinear keyboard PCB that fits GMK keycaps.

Resources

License

BSD-2-Clause and 2 other licenses found

Licenses found

BSD-2-Clause
LICENSE
Unknown
LICENSE.CFTKB
MIT
LICENSE.ai03

Stars

Watchers

Forks