Skip to the content
PCBKitNew board
4 layers119 × 95.4 mmRight, the printed circuit board in 3D

Skardel (not sure why/how I landed on that name, or what it means really) is a low profile (ish) split wireless keyboard, with a 3x5+3 layout inspired by the likes of Corne and similar.

Size
119 × 95.4 mm
Copper layers
4
Thickness
1.6 mm
Parts
50
Nets
45
Pads
287
Tracks, vias
328, 79
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
6 Sep 2026
Updated
6 Sep 2026

Overview

Right is an open-source printed circuit board by sub-arctic, from the sub-arctic/keyboard repository on GitHub. It is a 4-layer board of 119 × 95.4 mm with 50 parts on 45 nets, routed with 328 tracks and 79 vias.

It is built around the CL31B106KAHVPNE, CL31B104KBCNNNC and RC0805FR-0710KL, with the RGV3216P-1504-B-T1, CC1206JRX7RYBB103 and RGV3216P-1004-B-T1 among its other parts. Its parts include 9 capacitors, 7 resistors, 3 ICs, 3 connectors and 1 inductor.

Main components

11

README

README.md

Skardel

Skardel (not sure why/how I landed on that name, or what it means really) is a low profile (ish) split wireless keyboard, with a 3x5+3 layout inspired by the likes of Corne and similar.

Description

MCU

Skardel is built around the Nordic nRF54L15. It is related to the exceedingly common nRF52840, with very similar wireless capabilities, but improves upon both performance and power draw. The nRF54L15 does forego a USB peripheral, however this isn't strictly necessary for a wireless board. As this keyboard was going to be a new design, and the 54 series wasn't more costly, It made the choice clear over the 52840. As for packaging, I initially implemented Nordic's reference design, intending to get the whole board assembled by JLCPCB, but the costs and complexity associated were more than was necessary. After some research, I landed on the Ezurio 453-00001R, which nicely packages the module and a PCB antenna in a tested and proven design. Measuring only 14x10mm, it is still tiny, and certainly not a mechanical constraint. There are other similar modules in the same Ezurio family with the same chip, and those in others, but I picked this one for its availability from DigiKey, and the good documentation attached to it.

Power

The next constraint is power. The nRF54L15 can operate between 1.7 and 3.6v, which is a pretty generous window. Initially, a coin-cell battery was the primary choice, given a nominal voltage of 3v and ease of replacement. A coin cell would be optimal in the sense that the voltage would not need to be regulated, however the internal resistance could potentially constrain further choices with the display and radio transmissions. After some deliberation, I decided to drop the coin-cell architecture, as suitably-sized cells such as the CR2450 end up being rather large, while being restricted in the aforementioned sense. Hence, I ended up going with a LiPo architecture. Given that a LiPo's nominal voltage is 3.7v (up to 4.2v charged), I'd need to regulate it. I could have gone for a buck-boost module, however the extra power draw and complexity was unwarranted, given how low the MCU could go in terms of voltage. After some research I settled on the TPS628438DRLR from Texas Instruments. It is a small, ultra-low-power buck regulator, with an input voltage from 1.8-5.5v, and an output between 1.8-3.6v. This fits nicely within the range of the LiPo, and given a quiescent current of 275nA, there would be almost no impact to battery life. With a max current of 600mA, it would have no problem for this design. I chose to configure it at 3.2v, for reasons to be explained later. As for measuring the voltage for battery life estimations, the MCU supports measuring input voltage on the VDD rail. However, given that the input voltage would be regulated, this would be meaningless for most of the battery's life. Hence, I needed a way to measure voltage across the battery. The easiest way would be to use a high-value resistor between the battery positive and an ADC pin on the MCU. However, this would have some amount of losses, dependent on the resistor. As I don't need constant voltage readings, and in aims to make this board as low-powered as possible, this wasn't the best solution. Instead, I opted for a single-channel load switch. The voltage would be measured in the same way; with a high-voltage resistor (plus some capacitance) to an ADC pin, but with this the load can be switched from a GPIO pin. I picked the TPS22919DCKR, again from Texas Instruments. Essentially, it acts as a very low-power switch. With a shutdown current of 2nA, it also has negligible impact on battery life. Periodically, the MCU can trigger the switch to allow current to pass, and then read the ADC pin's voltage after some time, which can be used to provide an estimate on the battery life. These methods aren't perfect though. A fuel-gauge IC would provide more accurate battery readings, as it can continuously monitor power in and out of the battery, but I couldn't find one that met the low power requirements enough. For the massive 2200mAh cells I intended to use, estimates would suffice anyways. As for charging the cell, to avoid placing any connectors on the board, I decided to omit charging circuitry from the halves. I figured it wasn't worth the extra complexity, given how massive the batteries are relative to the power draw. Instead, the dongle in future could support charging the cells outside of the case.

Matrix

Most keyboards use a diode-matrix key arrangement. With this, the keyboard is arranged according to columns and rows, such that with each key press a column is connected to a row, which the MCU can detect. There is more to it, but the reason for this is that it greatly saves on the amount of GPIO pins are required. For large keyboards, this is pretty much a requirement, as almost no MCU's have 80+ GPIO pins. There are other ways to handle many inputs, such as multiplexers and shift-registers, but these all add unnecessary complexity. The main problem with a matrix is that it needs to scan through all rows to determine which key has been pressed. This is fine in 99% of cases, and it happens fast enough to not be noticeable. Because my layout only requires 18 keys per half, the MCU can comfortably spare enough GPIO pins for all the keys. This saves on complexity both in software and hardware, at the expense of more difficult routing. For the lowest possible power draw, it would be optimal for the keyboard to only send a radio transmission when a key is pressed, and to do nothing otherwise. This can be accomplished with hardware GPIO interrupts. On the nRF54L15, GPIO pins fall under a few groupings, namely 0, 1 and 2. 0 and 1 can wake the MCU from system-off, while 2 can't. Due to other constraints, the three thumb keys had to be put on group 2, while the rest can be on group 1 or 0. This means that any key can wake the board, except for the thumb keys. These will still work, but cannot wake the board.

Display

I wanted to put displays on the keyboard halves, as with a small layout it would probably be useful to view layer states, battery health and connection status. I had used many small OLED displays, namely the SSD1306 and similar. They are cheap, easy to work with and look quite slick. However, the idle power draw is rather high, at up to 10µA. This is with the screen completely off, and with it being full white at 20–30mA. This dwarfs the power draw of the MCU. The next option that would likely come to mind is E-Paper. Because it moves actual physical pigments, it doesn't need any power to retain its state, unlike OLED. However, it requires a decent amount of current to change state, and takes some time to refresh. A better option is MIP, or memory-in-pixel. Similar to LCD, it consists of an array of pixels, but unlike LCD there is no backlight by default, and each pixel has its own memory. Because each pixel can remember if it is off or on, it requires very little current to retain a state, and can still refresh quite fast. Updates can be done via deltas (differences) to save further power. Unlike E-Paper, it does require some power to maintain its picture, as similar to computer memory the pixel's state needs to be refreshed periodically.The display I chose was the Sharp LS013B7DH03, a 128x128 MIP display. It can hold a static image at approximately 4µA, and at 1Hz it would only require approximately 17µA. This is far, far below that of OLED. Besides the small constant power draw, it has a requirement for the VCOM (LCD common-electrode) to be inverted periodically to prevent damage to the liquid crystals. Sharp specifies this to occur between 54 and 65Hz. This could be driven by a GPIO pin from the MCU, however this would require the MCU to be outside of system-off, and would use unnecessary power for nothing. After some research, I found the MicroCrystal RV-3028-C7. It is a tiny real-time-clock that can be programmed via I2C, and supports a clock output in a range, but specifically supports 64Hz output. At a typical power draw of 45nA, it is a no-brainer to use this to drive the inversion. The additional RTC features such as calendar wake and similar are useful, and with ±1ppm time accuracy, it would serve as a very good clock source in future.

Parts

50
QtyValueFootprintReferences
18choc_v1_SW_HSPCM_marbastlib-choc:SW_choc_v1_HS_CPG135001S30_1uCH1, CH2, CH3, CH4, CH5, CH6, CH7, CH10, CH11, CH12, CH13, CH14, CH15, CH16, CH17, CH18 +2
310µFCapacitor_SMD:C_1206_3216MetricC4, C7, C8
31µFCapacitor_SMD:C_1206_3216MetricC2, C3, C9
2100nFCapacitor_SMD:C_1206_3216MetricC1, C6
210kResistor_SMD:R_0805_2012MetricR1, R2
24.7kResistor_SMD:R_1206_3216MetricR4, R5
11.5MResistor_SMD:R_1206_3216MetricR6
110nFCapacitor_SMD:C_1206_3216MetricC5
11MResistor_SMD:R_1206_3216MetricR7
11µHInductor_SMD:L_0603_1608MetricL1
1205kResistor_SMD:R_1206_3216MetricR3
1453-00001CKeyboard:CON_453-00001C_EZUJ1
1AYF531035Keyboard:AYF531035J2
1Conn_01x06Keyboard:SWD_DEBUGJ3
1JST_PHKeyboard:JST_S2B-PH-SM4-TBBT1
1RV-3028-C7 32.768KHZ 1PPM-TA-QAKeyboard:RV-3028-C7_MCXU1
1TPS22919DCKRPackage_TO_SOT_SMD:SOT-363_SC-70-6U3
1TPS628438DRLRPackage_TO_SOT_SMD:SOT-563U2

The 42 most common of 50 parts.

Questions

How big is the Right PCB?

It measures 119 × 95.4 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Right use?

50 parts, built around the CL31B106KAHVPNE, CL31B104KBCNNNC, RC0805FR-0710KL and RGV3216P-1504-B-T1. 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 Right KiCad files?

From the sub-arctic/keyboard repository on GitHub, at the commit this page was made from: the board is pcb/keyboard/right.kicad_pcb and its schematic pcb/keyboard/keyboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Right design in my own project?

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

Similar boards

  • 4 layers90 × 56.5 mmSeed3-carrier, the printed circuit board in 3D

    Seed3-carrier

    B1narySolutions/amp-hardware

    Monorepo for our capstone team's PCBs and housing

    127 parts
  • 4 layersEigentime32, the printed circuit board in 3D

    Eigentime32

    captainchapster/Eigentime32

    A self-contained pocket watch that keeps its own time for a decade. No GPS, one coin cell, one PCB.

    53 parts1
  • 2 layers70 × 70 mmDigital level, the printed circuit board in 3D

    Digital level

    fearedspark/digital-level

    43 parts
  • 2 layers44 × 72 mmEda, the printed circuit board in 3D

    Eda

    rcyaon/funbbit

    open hardware clone of sony's 1998 dancing headphone pet

    86 parts
  • 4 layers157.5 × 98 mmBeamBender BigBox, the printed circuit board in 3D

    BeamBender BigBox

    kavanoz64/BeamBender-BigBox

    An AGA digital scandoubler and HDMI output card for the Amiga 4000, with Amiga 2000 / 3000 support.

    221 parts12
  • 2 layers112 × 202 mmRIAA, the printed circuit board in 3D

    RIAA

    leicht-io/BeoGram-4002-RIAA

    Open-source RIAA phono preamp for the Bang & Olufsen BeoGram 4002/4004 turntable (KiCad)

    63 parts5CERN-OHL-S-2.0
  • 4 layers100 × 120 mmPanoptes, the printed circuit board in 3D

    Panoptes

    jjCSE113NMT/dsp-neutron-spectrometer

    A place to keep all our material related to our senior design project.

    111 parts3
  • 4 layers170.2 × 79 mmInt brain pcb, the printed circuit board in 3D

    Int brain pcb

    eccentricOrange/int-brain-stm32

    217 parts