Skip to the content
4 layers153.8 × 106.1 mmSplitAnalogKeyboard, the printed circuit board in 3D
Size
153.8 × 106.1 mm
Copper layers
4
Thickness
1.6 mm
Parts
188
Nets
79
Pads
652
Tracks, vias
2,297, 252
Pours
4
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
24 Aug 2023
Updated
4 Oct 2024

Overview

SplitAnalogKeyboard is an open-source printed circuit board by LennartEd, from the LennartEd/Analog-Keyboard-kmk-PiPico-NormalSplit repository on GitHub. It is a 4-layer board of 153.8 × 106.1 mm with 188 parts on 79 nets, routed with 2,297 tracks and 252 vias.

It is built around the HX6659ISO-B, CD74HC4067M96 and RP2040-ZERO, with the EC11N1520401 among its other parts. Its parts include 90 capacitors, 44 diodes, 6 ICs, 3 switches and 1 connector. It belongs with the RP2040 boards of this library.

Main components

4

README

README.md

Image

Analog-Keyboard-kmk-PiPico-NormalSplit

This is a fully analog keyboard using magnetic keys and hall sensors. I'm using a RP2040 but since it is KMK (circuitpython) based it should be compatible with other boards. I build a split keyboard, but any type form factor should work. This is my first experience with circuitpython so code might me wonky.

#TO-DO

  • automatic callibration
  • support all types of multiplexers (not just 16:1)
  • fix mouse wheel only pressing every second turn

PCB

!DONT USE THE PCB PROVIDED! The PCB provided has some flaws that make it hard to work with. I would recommend making your own PCB and using mine as a template. In the future i might create v2 template that fixes the flaws. Also as LCSC didn't have the LEDs in stock, I build mine without them. So there is no guaranty that I did the LED wiring correctly. I did however test the code with the onboard led of the RP2040, so the code should work.

Flaws with v1

  • Horizontal encoder has the wrong footprint (gnd is not in the middle)
  • dont solder MCU daughter board onto PCB directly
  • bigger pads for hand soldering
  • more mounting holes
  • if possible 2 layer PCB for cost saving

Parts

DescriptionPartLCSC
Hall sensorHX6659ISO-BC495742
MultiplexerCD74HC4067M96C496123
TRRS jackPJ-3220-5AC707251
MCUWaveshare RP2040-zero--
Capacitor 100uFGRM21BR60J107ME15LC141660
(LED)sk6812 mini-eC5149201

Part notes

Hall sensor:

Multiplexer: Currently any 16to1 Multiplexer should work (giving you 64 keys). If you are not hand soldering i recommend choosing a smaller sized one. Larger (32to1) should also work.

MCU: Any circuitpython compatible board should work. You just have to change the footprint on the PCB (which you should do anyway. See "Flaws with v1"

TRRS jack:

Capacitor: Capacitors are not strictly necessary but improve resolution. I tried a few and found that 100uF worked the best. Use different sensor filters

How it works

The position of the magnet in the switch is red by the hall-effect sensor. Because the pi-pico only has 4 ADCs we need multiplexers to cycle between the sensors.

Code

To install the code connect your board and install circuitpython. Then copy the content of the "code" folder into the board. For editing the code you can use Thonny or any text editor.

pins

To make life easier by not having to use "board.GP.." all the time, create (if not already present) a python file in lib/kmk/quickpin. Then add all the pins (see the other files for reference). Now when imported with

text
from kmk.quickpin.<boardTypeFolder>.<boardPins> import pinout as pins

into other files you can just use "pins[x]" to reference pins

kb.py:

Here you define most variables for you specific board.

Code.py

hallCali.py

analogio.py

Case

Parts

188
QtyValueFootprintReferences
90CCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23 +74
44HX6659ISO-Bfootprints:SOT-23-3_L2.9-W1.6-P1.90-LS2.8-BRH1, H2, H10, H11, H12, H13, H14, H15, H16, H17, H18, H19, H20, H21, H22, H23 +28
44SK6812MINI-E_C5149201footprints:LED-SMD_L3.2-W2.8-TRLED1, LED2, LED10, LED11, LED12, LED13, LED14, LED15, LED16, LED17, LED18, LED19, LED20, LED21, LED22, LED23 +28
4CD74HC4067M96footprints:SOIC-24_L15.4-W7.5-P1.27-LS10.3-BLU1, U2, U4, U5
2RP2040-Zerofootprints:RP2040-Zero-outerU3, U6
2~footprints:MouseEncoderSW1, SW3
1EC11N1520401footprints:SW-TH_EC11NXXXXSW2
1PJ-322footprints:AUDIO-TH_HOOYA_PJ-322CN1

Similar boards

  • 2 layers79.9 × 36.2 mmDesk display, the printed circuit board in 3D

    Desk display

    nepyope/Project-Homunculus

    Project Homunculus is open-source, low-cost hardware for capturing human hand and arm motions. It has two parts.

    63 parts51
  • 2 layers100 × 116 mmQPCR main, the printed circuit board in 3D

    QPCR main

    hisashin/qNinja

    Open source Real-Time Quantitative PCR Implementation

    152 parts48GPL-3.0
  • 4 layers79 × 35 mmGlove v3-left, the printed circuit board in 3D

    Glove v3-left

    Eidon-AI/eidon-glove

    A robust 16-DOF hand/finger tracking wearable standard Bluetooth Human Interface Device (BLE HID) designed for humanoid teleoperation and collecting embodied AI training datasets.

    42 parts30
  • 2 layers142 × 58 mmQLAMP main, the printed circuit board in 3D

    QLAMP main

    hisashin/qNinjaLite

    for LAMP

    143 parts24GPL-3.0
  • 2 layers60 × 75 mmReadout BoardV1, the printed circuit board in 3D

    Readout BoardV1

    zademahi238/mission-mimosa

    To answer this, we compare task-completion success rates with and without tactile sensing across different robot-learning policies.

    31 parts2
  • 2 layers71 × 46.4 mmProbe, the printed circuit board in 3D

    Probe

    0xDBFB7/psychic-probe

    A dirt-cheap high-sample-rate multi-channel datalogger.

    104 parts
  • 2 layers80 × 110 mmDriftPad, the printed circuit board in 3D

    DriftPad

    Lyrux/DriftPad

    Custom Hall-effect macropad with adjustable actuation and release points, analog magnetic key sensing, and an OLED display for real-time profiles, settings, and visual feedback.

    56 partsGPL-3.0
  • 4 layers100 × 120 mmMicromouse pcb, the printed circuit board in 3D

    Micromouse pcb

    MukeshSethy/micromouse-runner

    This is my repo for the first version of full size micromouse development.

    184 parts

Questions

How big is the SplitAnalogKeyboard PCB?

It measures 153.8 × 106.1 mm and has 4 copper layers, 1.6 mm thick.

What parts does the SplitAnalogKeyboard use?

188 parts, built around the HX6659ISO-B, CD74HC4067M96, RP2040-ZERO and EC11N1520401. 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 SplitAnalogKeyboard KiCad files?

From the LennartEd/Analog-Keyboard-kmk-PiPico-NormalSplit repository on GitHub, at the commit this page was made from: the board is Split/PCB/splitAnalogKeyboard.kicad_pcb and its schematic Split/PCB/splitAnalogKeyboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SplitAnalogKeyboard design in my own project?

Its repository states no licence, so its author keeps all rights: ask LennartEd before reusing the design.