Skip to content

andornaut/splinter-keyboard

Repository files navigation

Splinter keyboard

A 62-key split columnar ergonomic keyboard

Versions

Version Keys MCU Features Firmware Photo
v4 62 splitkb Liatris (RP2040) Symmetrical enclosures, USB VBUS detection splinter v4
v3 62 Adafruit KB2040 (RP2040) Symmetrical enclosures splinter-v3.0 v3
v2 62 SparkFun Pro Micro (ATmega32U4) Symmetrical enclosures splinter-v2.0 v2
v1 61 SparkFun Pro Micro (ATmega32U4) Asymmetrical enclosures, traditional layout splinter-v1.0 v1

Installation

Install the following tools:

# Include submodules when cloning
git clone --recursive git@github.com:andornaut/splinter-keyboard.git
cd splinter-keyboard

# Install dependencies, including Ergogen
nvm use
npm install

# Install KiCad
sudo add-apt-repository ppa:kicad/kicad-8.0-releases
sudo apt install kicad

# Install KiKit
# Must use the same Python interpreter as KiCad (will not work in a venv)
sudo pip install kikit --break-system-packages

# Update submodules
git submodule update --recursive --remote

Alternatively, you can install OrcaSlicer and Kicad using these Ansible tasks.

Developing

Step 1. Configure the environment

Set the VERSION environment variable in .env to one of v1, v2, v3, or v4

Keyboard Layout preview

  1. Prototype a keyboard layout using Keyboard Layout Editor
  2. Export the layout configuration to keyboard-layout-editor/keyboard-layout-editor.json, so that you can import it and iterate on it in the future
  3. Use the prototype as inspiration for creating a production-ready design using Ergogen

Step 3. Ergogen

Ergogen preview

  1. Run docker compose up to start Ergogen GUI
  2. Open http://ergogen.internal (install docker_etc_hosts to manage /etc/hosts entries)
  3. Paste in, work on, and then download and save ergogen/config.yaml
  4. Run npm run build to generate and save outlines and pcbs to dist/v4/ergogen/ then npm run copy-pcbs-to-kicad
    • Alternatively, run npm run watch or npm run watch-and-copy-pcbs-to-kicad

Notes:

  • The Ergogen GUI is useful for prototyping key placement, layout, and outlines, but it does not render PCB layouts. Use the local npm pipeline to generate PCB files for KiCad.

Step 4. KiCad

KiCad preview

  1. Design the PCBs using KiCad
  2. Run npm run copy-pcbs-to-kicad to copy the dist/v4/ergogen/pcbs/*.kicad_pcb files generated by Ergogen to kicad/
  3. Run open ./v4/kicad/left.kicad_pcb
  4. Route the PCBs in kicad/, and then save them to kicad/routed/
    • Once you're happy with the routing, run npm run copy-pcbs-to-routed to copy the PCBs to kicad/routed/
    • If you've generated new PCB files using Ergogen, then you can run npm run copy-traces-from-routed to copy traces from the PCBs in kicad/routed/ back to those of the same name in kicad/. Select File > Revert > Yes to refresh the PCB in Kicad.
  5. Run npm run copy-pcbs-to-routed && npm run fab-jlcpcb to generate and save gerber and drill files to dist/v4/kicad/jlcpcb/*.zip
  6. Print the PCBs using JLCPCB (or OSH Park or PCBWay)
    • Submit the dist/v4/kicad/jlcpcb/*.zip files to JLCPCB

Customize net classes

  1. Navigate to File > Board Setup... > Design Rules > Net Classes
  2. Update the "Default" netclass
  3. Click the "+" button to add a "VCC" net class
  4. Configure a pattern to match nets with the text "VCC" to the VCC net class
Configuration Description
Default Clearance: 0.20mm, Track width: 0.20mm
VCC Clearance: 0.25mm, Track width: 0.25mm

Step 5. OnShape

OnShape preview

  1. Model the case using OnShape
  2. Create a new document
  3. Start a new sketch
  4. Select "Insert a DXF or DWG file" > "Import ..." (at the bottom of the dialog) > Select dist/v4/ergogen/outlines/full.dxf
  5. Design a keyboard case
  6. Export *.step files to onshape/

Step 6. OrcaSlicer

  1. Print the case using OrcaSlicer
  2. Open or create an OrcaSlicer project file
  3. Import *.step files from onshape/
  4. Print the keyboard case

Step 7. QMK Firmware

  1. Install the custom QMK firmware

About

A 62-key split columnar ergonomic keyboard

Topics

Resources

Stars

Watchers

Forks

Contributors