Janus is a small 34 key split ortholinear keyboard, powered by two Seeed XIAO RP2040 with the keyboards halves connected by an ethernet cable.
The PCB works as both a logical PCB and a bottom plate.
This keyboard is a grid of 1U keys with no special features: no hotswap, no RGB (except those on the XIAO RP2040), no OLED screen, no knobs. It only supports Cherry MX style switches.
gerbers
: Gerber files for PCB manufacturinggraphics
: Source assets for PCB silkscreenkicad
: KiCad project files (schematics and PCB designs)kicad-libraries
: KiCad components and footprintsimages
: Images for project documentationfirmware
: Firmware files
There is only one PCB design, and 4 copies of this PCB are used to assemble a single keyboard with bottom plates.
The PCB serves as both halves of the split keyboard, as well as bottom plates for those halves.
Flip the board horizontally to get the other keyboard half.
Both keyboard halves have surface-mount solder pads for diodes, microcontroller, and ethernet jack, all on the top side of the PCB.
The PCB is flipped vertically to serve as a bottom plate. The bottom plates are screwed directly to the logical PCB. Note the cutouts on the PCB line up with all the components' through-hole and plastic pins sticking out the bottom of the logical PCB.
The two halves of the keyboard communicate using full-duplex serial. Note the RX and TX connections are flipped on the top/bottom ethernet jack connections (TX connects to RX and vice-versa).
- KMK
- Setup instructions and basic configuration is in this repo:
firmware/kmk
- Setup instructions and basic configuration is in this repo:
- QMK
Part | Purpose | Quantity | Notes |
---|---|---|---|
PCB | circuit board | 4 | |
Seeed XIAO RP2040 | Microcontroller board | 2 | |
Kycon GMX-SMT2-N-88 | connect keyboard halves | 2 | This exact connector must be used to fit the board footprint! |
1N4148 SOD-123 | Diodes for keyboard row-column matrix | 34 | |
Keyswitches | 34 | PCB mount (5 pin) switches recommended | |
Keycaps | 34 | ||
M2 6mm screws | Secure main PCB and plate PCBs | 8 | |
M2 nuts | Secure main PCB and plate PCBs | 8 | |
2mm tall rubber bumpons | Raise board above desk surface and provide skid resitance | 12 |
You will also need an ethernet patch cable to connect the keyboard halves. Monoprice Micro SlimRun cables are my personal recommendation.
These are the manufacturing settings I used when ordering from JLCPCB:
- Base Material: FR4
- Layers: 2
- Dimensions: (whatever the gerber file specifies)
- PCB Qty: 5
- Different Design: 1
- Delivery Format: Single PCB
- PCB Thickness: 1.6
- PCB Color: Black
- Silkscreen: White
- Surface Finish: LeadFree HASL-RoHS
- Outer Copper Weight: 1 oz
- Gold Fingers: No
- Confirm Production File: No
- Flying Probe Test: Fully Test
- Castellated Holes: No
- Remove Order Number: Specify a location
IMPORTANT: The PCBs has "JLCJLCJLCJLC" silkscreen text underneath the ethernet jack footprint. If you want to remove the order number from the boards or you want to print the PCBs with another manufacturer, then I recommend removing this silkscreen text from the .kicad_pcb
file, and then regenerate the gerber files.
The PCB design is in favor of PCB manufacturers' minimum order quantity of 5 and cheaper price at board sizes 100mm x 100mm. Since 4 PCBs are required to build the board with bottom plates, you are only left with one spare PCB.
The Seeed XIAO RP2040 was chosen as the microcontroller because its size works well with the intended layout. It just barely fits within the space of an MX keyswitch. The castellated pads permit surface-mount soldering, which makes the reversible PCB design more practical.
An ethernet connector was chosen to connect the keyboard halves because its connector fits within the space of an MX keyswitch. The Kycon GMX-SMT2-N-88 part was the best fit I could find for this use case. Although only 4 wires are needed for full-duplex serial communication between halves, an 8P8C ethernet jack was chosen over other modular jacks due to better part availability.
- Before starting, check if the PCBs are warped, and bend them to be perfectly flat before soldering.
- Solder the top SMD components first, in order of smallest to largest: diodes, XIAO RP2040, 8P8C ethernet jack
- Before soldering the XIAO RP2040, adhere a piece of electrical tape to its back to prevent potential shorts
- Use a piece of heat-resistant tape to align the XIAO RP2040 in place when soldering. Solder the opposing edge pads, and ensure the component is straight and flat.
- Solder the switches last!
- Attaching the bottom plates with M2 screws and nuts takes patience and a steady hand. If it's too annoying, use double-sided tape instead!
Separate symbols and footprints are defined for the bottom plate cutouts (both for for MX switches and the 8P8C ethernet jack). No special code nor plugins are used here; these cutouts are manually positioned in the PCB design.
- Janus 1.0 (2022-06-24)
- Initial PCB design