edakit documentation

Corne keyboard v4, left half

Why: a split keyboard many makers build. Its v4 left half brings what no reference circuit has: an RP2040 with its crystal and USB-C port, 23 keys each on a GPIO of its own, and a chain of 23 SK6812MINI-E that runs one diode below 5 V while its data comes from a 3.3 V pin. It is the one LED chain on a board among the designs, and with the v3 it shows the same keyboard without and with a matrix.

foostan, Corne keyboard (crkbd), https://github.com/foostan/crkbd at commit 63366fb (63366fb7f51cf2a796462fdd90527e99dd126055), the sheet pcbs/common/left.kicad_sch ("Corne Left", rev 4.0.0, 2023-10-07) as the sheet "left" of pcbs/corne-cherry/hotswap/corne-cherry.kicad_sch ("Corne", rev 4.1.0, 2024-05-07), read on 2026-10-31 from a read-only clone. The LCSC numbers come from the schematic's "JLCPCB Part #" fields and pcbs/corne-cherry/hotswap/jlcpcb/production_files/BOM-corne-cherry.csv. The netlist was resolved from the schematic (wires, junctions, labels, power symbols) by a reader outside this repository and checked against the board file pcbs/corne-cherry/hotswap/corne-cherry.kicad_pcb: all 313 pins of the sheet are on the same nets there. · SVG

Corne left half corne-cherry-left · board main graph v1.0 (2026-10-31) · 732 x 915 mm drawn by edakit schematic draw – change the graph, not this drawing J1 USB-C receptacle EXLED1 per-key RGB LED EXLED1 EXLED2 per-key RGB LED EXLED2 Last LED of the chain: DOUT open (the schematic's no-connect). LED1 per-key RGB LED LED1 LED2 per-key RGB LED LED2 LED3 per-key RGB LED LED3 LED4 per-key RGB LED LED4 LED5 per-key RGB LED LED5 LED6 per-key RGB LED LED6 LED7 per-key RGB LED LED7 LED8 per-key RGB LED LED8 LED9 per-key RGB LED LED9 LED10 per-key RGB LED LED10 LED11 per-key RGB LED LED11 LED12 per-key RGB LED LED12 LED13 per-key RGB LED LED13 LED14 per-key RGB LED LED14 LED15 per-key RGB LED LED15 LED16 per-key RGB LED LED16 LED17 per-key RGB LED LED17 LED18 per-key RGB LED LED18 LED19 per-key RGB LED LED19 LED20 per-key RGB LED LED20 LED21 per-key RGB LED LED21 U1 RP2040 microcontroller GPIO5 (RE0A) goes only to the A pad of the EC12 encoder at EXSW1, which the BOM leaves empty: nc. GPIO21 on +3V3 tells the firmware this is the left half. U2 3.3 V regulator U4 16 MB QSPI flash J2 TRS jack to the other half TRS to the right half: tip +5V, ring the single-wire serial link (GPIO12), sleeve GND – the right half is powered through it when this half has the USB cable. J3 OLED module Conn_01x04 on the footprint kbd_local:OLED, not in the BOM: SDA (GPIO6), SCL (GPIO7), +5V, GND for an OLED module; GPIO6/7 are also the encoders' A/B lines. J4 SWD header Conn_01x03 SWD header, not in the BOM. Other VBUS VBUS VBUS VBUS D- D- D- D- D- D- D+ D+ D+ D+ D+ CC2 USB_DM USB_DM USB_DP USB_DP CC1 USB_VBUS_PIN USB_VBUS_PIN EXLED1_DOUT EXLED1_DOUT LED21_DOUT LED21_DOUT LED1_DOUT LED1_DOUT LED LED LED2_DOUT LED2_DOUT LED3_DOUT LED3_DOUT LED4_DOUT LED4_DOUT LED5_DOUT LED5_DOUT LED6_DOUT LED6_DOUT LED7_DOUT LED7_DOUT LED8_DOUT LED8_DOUT LED9_DOUT LED9_DOUT LED10_DOUT LED10_DOUT LED11_DOUT LED11_DOUT LED12_DOUT LED12_DOUT LED13_DOUT LED13_DOUT LED14_DOUT LED14_DOUT LED15_DOUT LED15_DOUT LED16_DOUT LED16_DOUT LED17_DOUT LED17_DOUT LED18_DOUT LED18_DOUT LED19_DOUT LED19_DOUT LED20_DOUT LED20_DOUT KEY4 KEY6 KEY3 KEY7 KEYEX1 RE1A_SDA RE1A_SDA REB_SCL REB_SCL KEYEX2 KEY2 KEY1 TX TX KEY9 KEY8 XIN XTAL_OUT XTAL_OUT XOUT SWCLK SWCLK SWD SWD RUN KEY16 KEY21 KEY17 KEY20 KEY18 KEY19 KEY13 KEY14 KEY15 KEY12 KEY11 KEY10 KEY5 QSPI_SD3 QSPI_SD3 QSPI_SCLK QSPI_SCLK QSPI_SD0 QSPI_SD0 QSPI_SD2 QSPI_SD2 QSPI_SD1 QSPI_SD1 QSPI_SS QSPI_SS BOOT +5V LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD LED_VDD +3V3 +3V3 +3V3 +1V1 +3V3 +3V3 +3V3 +3V3 +3V3 +1V1 +3V3 +3V3 +1V1 +3V3 +5V +3V3 +3V3 +5V +5V LED_VDD +5V GND A1 VBUS A4 CC1 A5 D+ A6 D- A7 SBU1 A8 VBUS A9 GND A12 GND B1 VBUS B4 CC2 B5 D+ B6 D- B7 SBU2 B8 VBUS B9 GND B12 SHIELD S1 J1 TYPE-C-31-M-13C R2 5.1k R5 27 R4 27 D1+ 1 D1- 2 GND 3 D2+ 4 D2- 5 NC 10 NC 9 GND 8 NC 7 NC 6 U3 TPD4E05U06DQAR R1 5.1k R8 5.6k R9 10K ZD1 RB521S30T1G VDD 1 DOUT 2 DIN 4 VSS 3 EXLED1 SK6812MINI-E VDD 1 DIN 4 VSS 3 EXLED2 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED1 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED2 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED3 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED4 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED5 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED6 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED7 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED8 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED9 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED10 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED11 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED12 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED13 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED14 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED15 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED16 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED17 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED18 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED19 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED20 SK6812MINI-E VDD 1 DOUT 2 DIN 4 VSS 3 LED21 SK6812MINI-E IOVDD 1 GPIO0 2 GPIO1 3 GPIO2 4 GPIO3 5 GPIO4 6 GPIO6 8 GPIO7 9 IOVDD 10 GPIO8 11 GPIO9 12 GPIO10 13 GPIO11 14 GPIO12 15 GPIO13 16 GPIO14 17 GPIO15 18 TESTEN 19 XIN 20 XOUT 21 IOVDD 22 DVDD 23 SWCLK 24 SWD 25 RUN 26 GPIO16 27 GPIO17 28 GPIO18 29 GND 57 QSPI_SS 56 QSPI_SD1 55 QSPI_SD2 54 QSPI_SD0 53 QSPI_SCLK 52 QSPI_SD3 51 DVDD 50 IOVDD 49 USB_VDD 48 USB_DP 47 USB_DM 46 VREG_VOUT 45 VREG_IN 44 ADC_AVDD 43 IOVDD 42 GPIO29_ADC3 41 GPIO28_ADC2 40 GPIO27_ADC1 39 GPIO26_ADC0 38 GPIO25 37 GPIO24 36 GPIO23 35 GPIO22 34 IOVDD 33 GPIO21 32 GPIO20 31 GPIO19 30 U1 RP2040 C7 100n C8 1u C9 100n C10 100n C11 10u C12 100n C13 100n C14 100n C15 100n C16 1u SW4 SW6 SW3 SW7 EXSW1 EXSW2 SW2 SW1 SW9 SW8 C1 27p 1 2 4 3 Y1 Q22FA23V0041800 C2 27p R3 1k C3 100n C4 100n C5 1u SMDSW2 SW16 SW21 SW17 SW20 SW18 SW19 SW13 SW14 SW15 SW12 SW11 SW10 SW5 GND 1 VO 2 VI 3 U2 NCP1117LPST33T3G C6 10u ~{CS} 1 DO(IO1) 2 IO2 3 GND 4 VCC 8 IO3 7 CLK 6 DI(IO0) 5 U4 W25Q128JVSIQ R6 1k SMDSW1 R7 10k ~ R ~ S ~ T J2 PJ-399B-6A Pin_1 1 Pin_2 2 Pin_3 3 Pin_4 4 J3 PZ254V-11-04P Pin_1 1 Pin_2 2 Pin_3 3 J4 PZ254V-11-03P D1 1N4148WT
StageCodeWhereJudgedWhy
checkDOCS.fileedakit.tomlcriterionThe transcription has no requirements file: what the published design must do stands in its own documents, not in edakit's form. edakit requires the file before a release (handbook 3.6); it is no point of the design.
checkLIM.vC6criterionThe 10 µF / 6.3 V X5R on +5V sees up to 5.25 V – inside its rating, but not with edakit's margin of 1.5 for ceramic capacitors; at 5 V an X5R of 6.3 V keeps only part of its capacitance (DC bias, not read).
checkREQ.missingLED_VDDrealThe 23 SK6812MINI-E have no decoupling capacitor at all; their datasheet calls one at every LED essential (section 14). The chain's supply is one diode below +5V with nothing to buffer the PWM current of 23 LEDs.
checkREQ.missingRE1A_SDAlacksThe board has no I2C pull-ups; they would have to come from the OLED module the builder plugs into J3, which is not part of the published schematic – whether it brings them depends on the module.
checkREQ.missingREB_SCLlacksAs RE1A_SDA: a pull-up on SCL can only come from the OLED module, which the schematic does not contain.
checkPARTS.supplierJ3lacksJ3 is the OLED position, not in the BOM; the 4-pin header that stands in for it has no LCSC number here – LCSC's search refused the request.
checkPARTS.verified/deviceJ3lacksAs PARTS.supplier: the stand-in header for the OLED position names neither an LCSC part nor an EasyEDA device.
checkREQ.missing/leaveTXrealThe split link runs from GPIO12 straight to the TRS jack's ring – no series resistor, no ESD protection – on a cable that is plugged and unplugged, next to the tip that carries +5V (HINT.jack_supply): a plug pushed in while powered slides the tip's 5 V past the ring contact.
simLIM.iJ1realWith every LED lit at the allowed 70 %, the half draws 0.79 A, beyond the 0.5 A a USB 2.0 port gives – before the right half, which this half also feeds through the jack. The firmware's brightness limit has to keep it below.
simLIM.iZD1realThe RB521S30's 200 mA DC rating (160 mA with edakit's derating) carries the whole board: 0.79 A with the LEDs lit, and the right half's current comes on top.
simLIM.tZD1realAt 0.79 A the Schottky dissipates far beyond its 200 mW (RθJA 635 °C/W): the LEDs lit at the allowed brightness would destroy it.
simLIM.tD1realThe 1N4148WT carries the 23 LEDs: 1.31 W at the allowed brightness against 200 mW (RθJA 500 °C/W). Its datasheet gives no continuous current at all, only 300 mA repetitive peak.
simSIM.stateU2realWith the LEDs lit, +5V sags behind the Schottky and the NCP1117LP (dropout about 1.1 V) falls to 2.7–3.2 V.
simLIM.rangeU1realWith the LEDs lit at USB nominal or minimum, 3V3 sags below the 3.135 V USB_VDD needs.
simLIM.rangeU4realWith the LEDs lit at the lowest USB voltage, 3V3 falls to 2.69 V, below the flash's 2.7 V.
simLIM.vC6criterion+5V reaches 4.3–4.9 V against edakit's 67 % derating of the capacitor's 6.3 V (4.22 V) – inside the rating, outside edakit's margin.
simLIM.rangeLED1realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED2realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED3realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED4realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED5realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED6realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED7realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED8realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED9realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED10realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED11realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED12realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED13realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED14realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED15realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED16realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED17realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED18realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED19realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED20realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeLED21realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeEXLED1realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.
simLIM.rangeEXLED2realOne diode (1N4148WT) below +5V – the trick that lifts the RP2040's 3.3 V data above the LEDs' VIH of 0.65 VDD, and the data level passes – the LEDs' VDD is 3.68 V at USB nominal and 3.43 V at the minimum, below the SK6812MINI-E's 3.7 V; with the LEDs lit lower still.

edakit's false alarms on this design, fixed

  • A crystal with four pads – two ground pads on its lid, the Epson FA-238V at Y1 – stopped edakit check (REQ, pin needs).
  • The 12 MHz crystal behind the 1 kΩ damping resistor at the RP2040's XOUT (its datasheet, 2.16, names the damping resistor) taken as missing (REQ.missing).
  • A bare microcontroller (kind ic, behaviour mcu) could not state the core current and on-chip regulator the model reads (PARTS.schema).
  • Pins on nets no simulated element reaches – the QSPI lines, SWD, the split link – judged as nan against their relative limit (LIM.v/inject, 288 rows).
  • The drawing put its no-connect crosses in the order of a set: with two on J1 (SBU1, SBU2) the catalog's SVG changed from run to run.