Skip to the content
2 layers208.3 × 169.5 mmAngloDox, the printed circuit board in 3D

Custom row-staggered split keyboard with enough keys.

Size
208.3 × 169.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
308
Nets
272
Pads
1,122
Tracks, vias
1,607, 281
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
27 Jul 2023
Updated
4 Mar 2024

Overview

AngloDox is an open-source printed circuit board by gauravmm, from the gauravmm/AngloDox repository on GitHub. It is a 2-layer board of 208.3 × 169.5 mm with 308 parts on 272 nets, routed with 1,607 tracks and 281 vias.

It is built around the TYPE-C-31-M-12, USBLC6-2SC6 and AMS1117-3.3, with the 74HC165D and TS-1187A-B-A-B among its other parts. Its parts include 95 capacitors, 50 ICs, 45 switches, 10 resistors and 5 diodes. It belongs with the keyboards and input boards and the STM32 boards of this library.

Main components

5

README

README.md

AngloDox Keyboard

This is yet another split keyboard with the following features:

  • Per-key RGB LEDs
  • Separate function row
  • RC-circuit debouncing for each key (the internal pullups allow you to swap switches while the keyboard is on!)
  • Kailh hot-swap sockets
  • USB-C connectors (but I2C protocol!) for the halves, with ESD protection
  • Key polling via shift register instead of matrix
  • Entirely manufacturable by JLCPCB, using basic parts as much as possible.

Keyboard Layout

The keyboard layout is specified in keyboard-layout.json and can be edited in KLE. The current layout is based on the reference ANSI-104 layout, with a macro column on the left, a collapsed arrow cluster on the right, and added thumb clusters from the venerable Ergodox keyboard.

The current layout has 46 keys on the left and 54 on the right, for a total of 100 keys.

Development

This relies on a combination of scripts and hand-routing. Here's the general workflow:

text
1. Generate the basic circuitry as a hierarchical schematic in KiCad.
2. Specify a key layout as a [http://www.keyboard-layout-editor.com/#/](KLE) JSON file.
3. Run the [KLE Placement Plugin](TODO) for the key layout.
4. Specify the layout for each key next to the schematic for the key.
5. Enforce the layout using the [HierarchicalPCB plugin](https://github.com/gauravmm/HierarchicalPcb).
6. Route the parts between keys, using the swap positions option in the KLE Placement Plugin to improve performance.

Regenerate KiCad Library

The Kicad library is generated using JLC2KiCad_lib. To regenerate the library, run:

bash
JLC2KiCadLib C1525 C25779 C36871 C965555 \
    -dir temp_jlc_import/

Then merge the symbol and footprint libraries into the main library manually. Remember to update the Value field of the symbols.

When setting up the Footprint library, set the nickname to footprint.

Design Notes

Component selection is driven by what is available on JLCPCB as a basic part, making construction as cheap as possible. The only extended parts are the USB ESD protection circuit and the RJ11 connectors.

Crystal Design

We choose a generic 12MHz oscillator as it is the cheapest basic part available on LCSC. As the load capacitance is 20pF, and the stray capacitance is assumed to be 5pF, we need a pair of 30pF capacitors to get the right frequency. (See section 3.3 of the application note for the derivation.)

ESD Protection

For peace of mind, we add ESD protection to both USB-C ports.

  1. Use a generic bi-directional 6V TVS diode between VBUS and GND.
  2. Use a USB-specific ESD protection circuit on the data lines. This is one of the few extended parts we use. This is based on the suggestions in Phil's Lab tutorial.
  3. Short shield pins to GND directly. (This disagrees with the tutorial mentioned above.)
Half-to-half Connection

The halves are connected via USB-C to USB-C cables. This is preferable to TRRS cables (which have a nasty habit of shorting connections) and RJ11 cables (which are painfully tall and would have to be hand-soldered later). Since we're already paying the extended part fee for the connector, we might as well use them and enjoy the reversible connection it grants us.

To prevent damage from accidental connections, we apply the same ESD protections to the half-to-half connections as we do to the legitimate USB-C port.

Parts

308
QtyValueFootprintReferences
91100nFCapacitor_SMD:C_0402_1005MetricC55012, CL2001, CL10001, CL11001, CL12001, CL13001, CL14001, CL17001, CL18001, CL19001, CL20001, CL21001, CL22001, CL24001, CL25001, CL26001 +75
4533kΩfootprint:R0402RB2001, RB10001, RB11001, RB12001, RB13001, RB14001, RB17001, RB18001, RB19001, RB20001, RB21001, RB22001, RB24001, RB25001, RB26001, RB27001 +29
4568kΩfootprint:R0402RA2001, RA10001, RA11001, RA12001, RA13001, RA14001, RA17001, RA18001, RA19001, RA20001, RA21001, RA22001, RA24001, RA25001, RA26001, RA27001 +29
45SK6812MINI-E_C5149201footprint:LED-SMD_L3.2-W2.8-TRU2001, U10001, U11001, U12001, U13001, U14001, U17001, U18001, U19001, U20001, U21001, U22001, U24001, U25001, U26001, U27001 +29
45SW_PushPCM_Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MXSW2001, SW10001, SW11001, SW12001, SW13001, SW14001, SW17001, SW18001, SW19001, SW20001, SW21001, SW22001, SW24001, SW25001, SW26001, SW27001 +29
674HC165Package_SO:SOIC-16_3.9x9.9mm_P1.27mmSR15001, SR16001, SR23001, SR32001, SR42001, SR54001
55.1kResistor_SMD:R_0402_1005MetricR55005, R55006, R55007, R55008, R55009
315kResistor_SMD:R_0402_1005MetricR55001, R55003, R55004
3RedLED_SMD:LED_0603_1608MetricD55001, D55003, D55004
21.5kResistor_SMD:R_0402_1005MetricR55002, R55010
2100uFCapacitor_Tantalum_SMD:CP_EIA-3528-15_AVX-HC55013, C55014
230pFCapacitor_SMD:C_0402_1005MetricC55001, C55002
26V ESDfootprint:SOD-123FL_L2.8-W1.8-LS3.7-BID55002, D60001
2TS-1187A-B-A-Bfootprint:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL-2PB52001, PB55001
2TYPE-C-31-M-12footprint:USB-C_SMD-TYPE-C-31-M-12U55002, U60001
2USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U55003, U60002
1ALSConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ60001
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U55001
1CrystalCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmX55001
1DebugConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ55001
1I2CConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ60003
1STM32F103C8TxPackage_QFP:LQFP-48_7x7mm_P0.5mmSTM55001

More from gauravmm/AngloDox

1
  • 2 layersKey column, the printed circuit board in 3D

    Key column

    gauravmm/AngloDox

    Custom row-staggered split keyboard with enough keys.

    6 parts1

Similar boards

  • 4 layers21.7 × 89.8 mmEuroPlatvorm, the printed circuit board in 3D

    EuroPlatvorm

    nanassound/eurorack-nanassound

    Eurorack modules of Nanas Sound

    34 parts27
  • 4 layers65 × 45 mm03-final E, the printed circuit board in 3D

    03-final E

    ramtuc/rp2040-logic-analyzer

    RP2040 + TXU0104 16ch logic analyzer board for PulseView (sigrok-pico), 4-layer, JLCPCB PCBA

    82 partsCERN-OHL-P-2.0
  • 2 layers78 × 58 mmDick mouse, the printed circuit board in 3D

    Dick mouse

    segfau-yama/dxxk_mouse

    ESP32-S3 上で動作する Rust 製 USB 入力デバイスの実験用リポジトリです。

    51 partsMIT
  • 2 layers80 × 54 mmPl60c dmx, the printed circuit board in 3D

    Pl60c dmx

    tsmiltonAgents/pl60c-dmx-wakeup

    A small ESP32-S3 board that drives the wired DMX512 input of a Neewer PL60C panel light so the light can be ramped up slowly in the morning (sunrise alarm). Rev A, 2026-09-02.

    40 parts
  • 2 layers70 × 28 mmConsole usb, the printed circuit board in 3D

    Console usb

    jmcpheron/pico-quorum

    Several people, several keys, one Safe. Hardware approvals for Safe multisig wallets.

    57 partsMIT
  • 4 layers240 × 180 mmOparroy ci, the printed circuit board in 3D

    Oparroy ci

    kristofferkoch/oparroy

    WS2812 inspired versatile serial protocol and hardware

    570 partsMIT
  • 2 layers284.7 × 94.2 mmHE60, the printed circuit board in 3D

    HE60

    peppapighs/HE60

    60% Hall-effect keyboard

    332 parts118GPL-3.0
  • 4 layers50 × 70 mmStm32-portable data logger, the printed circuit board in 3D

    Stm32-portable data logger

    copperheadhq/copperhead-stm32-data-logger

    Portable STM32L433 data logger, 50 × 70 mm, four layers, microSD, USB-C LiPo charging. Designed with copperhead. Never built: do not order expecting it to work.

    90 parts3

Questions

How big is the AngloDox PCB?

It measures 208.3 × 169.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the AngloDox use?

308 parts, built around the TYPE-C-31-M-12, USBLC6-2SC6, AMS1117-3.3 and 74HC165D. 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 AngloDox KiCad files?

From the gauravmm/AngloDox repository on GitHub, at the commit this page was made from: the board is PCB/PCB.kicad_pcb and its schematic PCB/Alternatives/stm32mod.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the AngloDox design in my own project?

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