
Clavier
lsartory/Clavier
An FPGA-based mechanical keyboard with an integrated USB hub and communication interfaces

Jarvis HomeDeck: a Raspberry Pi CM4 carrier board and voice-assistant software for a 7-inch smart display (KiCad hardware, generated from Python, plus the Python/JS assistant)
HomeDeck is an open-source printed circuit board by Kilan777, from the Kilan777/HomeDeck repository on GitHub. It is a 4-layer board of 130 × 105 mm with 228 parts on 161 nets, routed with 5,581 tracks and 609 vias.
It is built around the TPS5430DDAR, BME688 and CH224K, with the SCD40-D-R2, TPA3118D2DAPR and ICS-43434 among its other parts. Its parts include 96 capacitors, 47 resistors, 19 ICs, 18 diodes and 17 connectors. It belongs with the computers and single-board computers and lEDs and displays boards and the Raspberry Pi (Linux) boards of this library.
Public mirror. This is a snapshot of the private working repo (commit
f1d429f). Some private parts of the software are not included.
A self-built voice assistant with a screen: a Raspberry Pi Compute Module 4 carrier PCB that bolts to the 7-inch Raspberry Pi Touch Display 2, plus the software that turns it into "Jarvis". Personal project by Kilan.
The board carries the CM4, USB-C PD power, three 5 V bucks, a stereo class-D amplifier, two MEMS microphones, a Camera Module 3 connector, CO2 / temperature / humidity / pressure / VOC sensors, an RGB LED bar and an external WS2812B strip header, a fan header, buttons, a Qwiic-style I2C header, microSD, USB-A and a second USB-C.
The software is a single Python service with a module per feature and a touch UI in Chromium, plus a phone app served on a personal domain behind Google sign-in. Voice runs on a local wake word and hosted speech models; everything that is a command (timers, lights, music, volume, math) is handled on the device without a model.
| Folder | Contents |
|---|---|
kicad/ | KiCad project: hierarchical schematic (9 sheets), 4-layer routed PCB, project symbols and footprints, DRC rules |
tools/circuit.py | The single source the schematic, netlist and BOM are generated from. Edit this, not the KiCad files |
out/ | Gerbers, JLCPCB BOM and pick-and-place, schematic PDF, board renders, DRC report (rev A as ordered) |
docs/ | Hardware docs: README.md (board overview), ARCHITECTURE.md, BRINGUP.md, ORIENTATION.md, and PCB_ISSUES.md (what went wrong on rev A and what rev B should change) |
software/homedeck/ | The assistant: server.py, modules/, web/, install/. See docs/SOFTWARE.md |
software/homedeck_ui.py | The original bench dashboard used for bring-up (retired) |
docs/PCB_ISSUES.md.docs/SOFTWARE.md.Hardware: order from out/ (JLCPCB 4-layer, two-sided assembly), read docs/BRINGUP.md, then apply the rev A
fixes in docs/PCB_ISSUES.md before first power-on (the 9 V jumper setting matters).
Software, on the Pi:
rsync -a software/homedeck/ kilan@homedeck.local:~/hd/
ssh kilan@homedeck.local 'cd ~/hd && bash install.sh'Then open Settings on the device for location, Wi-Fi, Spotify, calendar feeds and the API keys the optional
features need (Groq for voice, 511.org for Muni). Secrets live only on the device in /var/lib/homedeck/config.json
and are never in this repository.
This repository is private. It contains no credentials, tokens or Wi-Fi passwords. The device redacts secrets from every API response, the phone app requires Google sign-in, and there is no VPN or third-party relay involved.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 37 | 100nF | Capacitor_SMD:C_0603_1608Metric | C10, C12, C16, C18, C22, C25, C26, C29, C30, C31, C34, C35, C43, C45, C47, C48 +21 |
| 13 | 10uF | Capacitor_SMD:C_0603_1608Metric | C27, C28, C33, C38, C39, C40, C41, C42, C44, C46, C49, C77, C92 |
| 12 | 10k | Resistor_SMD:R_0603_1608Metric | R3, R11, R17, R22, R23, R25, R35, R36, R37, R42, R43, R44 |
| 10 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D10, D11, D12, D13, D14, D15, D16, D17, D18, D19 |
| 8 | 1uF | Capacitor_SMD:C_0603_1608Metric | C4, C32, C54, C55, C57, C58, C59, C60 |
| 7 | 10uF/50V | Capacitor_SMD:C_1206_3216Metric | C1, C2, C5, C11, C17, C67, C69 |
| 5 | 100uF/35V | Capacitor_SMD:CP_Elec_6.3x7.7 | C3, C8, C14, C20, C70 |
| 5 | 22uF/25V | Capacitor_SMD:C_1206_3216Metric | C9, C15, C21, C23, C24 |
| 5 | 4.7k | Resistor_SMD:R_0603_1608Metric | R6, R8, R10, R38, R39 |
| 4 | 10uH 2.1A | Inductor_SMD:L_Sunlord_SWPA5040S | L4, L5, L6, L7 |
| 4 | 1uF/50V | Capacitor_SMD:C_0805_2012Metric | C71, C72, C73, C74 |
| 4 | 220nF | Capacitor_SMD:C_0603_1608Metric | C62, C63, C64, C65 |
| 4 | 22k | Resistor_SMD:R_0603_1608Metric | R18, R19, R27, R30 |
| 4 | 470R | Resistor_SMD:R_0603_1608Metric | R4, R26, R29, R41 |
| 4 | M2.5 display standoff | MountingHole:MountingHole_2.7mm_M2.5 | H1, H2, H3, H4 |
| 4 | SS34 | Diode_SMD:D_SMA | D6, D7, D8, D9 |
| 3 | 100k | Resistor_SMD:R_0603_1608Metric | R14, R33, R46 |
| 3 | 10nF | Capacitor_SMD:C_0603_1608Metric | C7, C13, C19 |
| 3 | 10uH 7.8A | Inductor_SMD:L_Sunlord_MWSA1004S | L1, L2, L3 |
| 3 | 15k | Resistor_SMD:R_0603_1608Metric | R5, R7, R9 |
| 3 | 2.2uF | Capacitor_SMD:C_0603_1608Metric | C50, C51, C52 |
| 3 | PD volt sel | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP1, JP2, JP3 |
| 3 | TPS5430 | Package_SO:TI_SO-PowerPAD-8_ThermalVias | U2, U3, U4 |
| 3 | ext button | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J18, J19, J20 |
| 2 | 10R | Resistor_SMD:R_0603_1608Metric | R24, R34 |
| 2 | 1nF | Capacitor_SMD:C_0603_1608Metric | C66, C68 |
| 2 | 2.2nF | Capacitor_SMD:C_0603_1608Metric | C53, C56 |
| 2 | 22pF | Capacitor_SMD:C_0603_1608Metric | C36, C37 |
| 2 | 330R | Resistor_SMD:R_0603_1608Metric | R13, R40 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R1, R21 |
| 2 | 6.8k | Resistor_SMD:R_0603_1608Metric | R28, R31 |
| 2 | AO3401A | Package_TO_SOT_SMD:SOT-23 | Q1, Q4 |
| 2 | ICS-43434 | Sensor_Audio:InvenSense_ICS-43434-6_3.5x2.65mm | U15, U16 |
| 2 | SY6280AAC | Package_TO_SOT_SMD:SOT-23-5 | U10, U12 |
| 2 | TS3USB221 | Package_DFN_QFN:Texas_UQFN-10_1.5x2mm_P0.5mm | U6, U7 |
| 2 | USB int | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J4, J5 |
| 2 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U9, U11 |
| 1 | 0R | Resistor_SMD:R_0603_1608Metric | R12 |
| 1 | 100R | Resistor_SMD:R_0603_1608Metric | R45 |
| 1 | 100uF/35V | CP_Elec_6.3x7.7 | C96 |
| 1 | 10k | R_0603_1608Metric | R47 |
| 1 | 12MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R15 |
| 1 | 1k/0.25W | Resistor_SMD:R_1206_3216Metric | R2 |
| 1 | 20k | Resistor_SMD:R_0603_1608Metric | R32 |
| 1 | 220R | Resistor_SMD:R_0603_1608Metric | R16 |
| 1 | 2N7002 | SOT-23 | Q5 |
| 1 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q2 |
| 1 | 3.9k | Resistor_SMD:R_0603_1608Metric | R20 |
| 1 | 5A | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | 74AHCT1G125 | Package_TO_SOT_SMD:SOT-23-5 | U19 |
| 1 | ACT (green) | LED_SMD:LED_0805_2012Metric | D3 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U5 |
| 1 | AO3400A | Package_TO_SOT_SMD:SOT-23 | Q3 |
| 1 | BME688 | Package_LGA:Bosch_LGA-8_3x3mm_P0.8mm_ClockwisePinNumbering | U18 |
| 1 | BTN A | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW2 |
| 1 | BTN B | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW3 |
| 1 | CAMERA (CAM1) | FPC_15P_1.0mm_BottomContact_RA | J7 |
| 1 | CH224K | HomeDeck:ESSOP-10-1EP_3.9x4.9mm_P1.0mm | U1 |
| 1 | CH334R | Package_SO:QSOP-16_3.9x4.9mm_P0.635mm | U8 |
| 1 | DISPLAY (DSI1) | FPC_15P_1.0mm_BottomContact_RA | J6 |
| 1 | DISPLAY 5V | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J8 |
| 1 | Expansion | Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_Vertical | J16 |
| 1 | FAN 5V | Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | J21 |
| 1 | GLOBAL_EN | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J13 |
| 1 | I2C ext (light sensor) | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J12 |
| 1 | LED strip ext | Connector_JST:JST_PH_S3B-PH-K_1x03_P2.00mm_Horizontal | J17 |
| 1 | PCM5102A | Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm | U13 |
| 1 | PD OK (green) | LED_SMD:LED_0805_2012Metric | D2 |
| 1 | POWER | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW1 |
| 1 | PWR (red) | LED_SMD:LED_0603_1608Metric | D4 |
| 1 | RESET | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW4 |
| 1 | Raspberry Pi CM4 | HomeDeck:RPi_CM4 | M1 |
| 1 | SCD40 | Sensor:Sensirion_SCD4x-1EP_10.1x10.1mm_P1.25mm_EP4.8x4.8mm | U17 |
| 1 | SMBJ24A | Diode_SMD:D_SMB | D1 |
| 1 | SPK L | Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | J10 |
| 1 | SPK R | Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | J11 |
| 1 | TPA3118D2 | Package_SO:HTSSOP-32-1EP_6.1x11mm_P0.65mm_EP5.2x11mm_Mask4.11x4.36mm_ThermalVias | U14 |
| 1 | UART debug | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J15 |
| 1 | USB-A | Connector_USB:USB_A_Molex_67643_Horizontal | J3 |
The 223 most common of 228 parts.

lsartory/Clavier
An FPGA-based mechanical keyboard with an integrated USB hub and communication interfaces

doug-harriman/E-Display
Electronic display for calendars, weather, etc.

BerkeleyHCI/PolymorphicBlocks
A Python-based hardware description language for PCBs for higher-level (block-diagram / system-architecture level) PCB design through libraries of directly reusable subcircuit generators.

ephemerkey/ephemerkey
The consumer half of the ephemerkey system, and the second PCB in this repo (alongside hardware/ephemerkey/, sharing the same scripts/kschgen.py engine, Makefile, and lib tables — the multi-project layout used by…

slemanz/chronolog
STM32-based temperature data logger with RTC, NOR flash storage, LCD and Wi-Fi. Hardware and firmware.

etherkit/Si5351AVFO
After any schematic change, run tools/exportdocs.sh (needs KiCad 10 kicad-cli). It rewrites docs/Si5351AVFOschematic.pdf, the netlist, SVGs and docs/erc.rpt.

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.

It measures 130 × 105 mm and has 4 copper layers, 1.6 mm thick.
228 parts, built around the TPS5430DDAR, BME688, CH224K and SCD40-D-R2. 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.
From the Kilan777/HomeDeck repository on GitHub, at the commit this page was made from: the board is kicad/HomeDeck.kicad_pcb and its schematic kicad/HomeDeck.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Kilan777 before reusing the design.