Skip to the content
PCBKitNew board
2 layers100 × 51.3 mmDesk controller, the printed circuit board in 3D

Desk controller

FLRHW/Desk_controller

Standing desk controller - Touch display as HMI and servo motor interface

Size
100 × 51.3 mm
Copper layers
2
Thickness
1.2 mm
Parts
105
Nets
84
Pads
318
Tracks, vias
506, 71
Pours
43
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
14 Oct 2026
Updated
28 Oct 2026

Overview

Desk controller is an open-source printed circuit board by FLRHW, from the FLRHW/Desk_controller repository on GitHub. It is a 2-layer board of 100 × 51.3 mm with 105 parts on 84 nets, routed with 506 tracks and 71 vias.

It is built around the STM32G431K8T6, VNH7070AS and USBLC6-2SC6, with the RC0603JR-130RP, AC0603KRX7R9BB104 and AC0603FR-0710KL among its other parts. Its parts include 27 capacitors, 15 resistors, 8 connectors, 4 ICs and 1 diode. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

12

README

README.md

Desk Controller

A custom KiCad PCB design for a motorised sit–stand desk controller with a touchscreen human–machine interface (HMI).

Hardware design · Online documentation · Firmware repository · 3D renders · Manufacturing outputs

This repository contains the KiCad hardware design for a desk controller that brings together the user interface, control electronics, motor interface and end-of-travel sensing on one board. It is intended to interface with an external desk mechanism, motor/gearbox/encoder assembly and power supply. The project started as a personal engineering build; the design is published so others can inspect, learn from, or adapt it at their own risk.

Beyond the intended application, the repository documents the design workflow—from system-level architecture and hierarchical schematics through PCB layout, design checks and automated fabrication/assembly deliverables.

Project scope: This repository documents the controller hardware. The desk mechanism, motor assembly and external power supply are shown for context and are not part of the PCB design. Do not assume the design is production-ready or safe to connect to a desk without independent electrical, mechanical and functional validation.

System overview

The design is organised into these functional blocks:

BlockPurpose
Microcontroller / control logicCoordinates the user interface and motor-control signals.
Touch displayLocal human–machine interface for operating the desk.
Servomotor interfaceMotor power-drive interface and encoder signal conditioning.
Limit-switch interfaceConnections and conditioning for end-of-travel signals.
3.3 V DC/DC conversionLow-voltage supply for the control electronics.
Power-supply interfaceConnection to the external power source.

See System_overview.kicad_sch and Block_diagram.kicad_sch for the system-level drawings. The hierarchical schematic files provide the electrical details.

PCB renders and design outputs

The renders below are generated from the KiCad PCB design as part of the automated documentation workflow.

Top viewBottom view
Angled 3D render of the top of the Desk Controller PCBAngled 3D render of the bottom of the Desk Controller PCB

Additional renders and design files:

The generated files are published to make the design easier to review and reproduce. Their presence does not imply that the PCB, assembly or motor-control system has been manufactured, tested or validated. Check the current outputs and reports before considering fabrication.

Firmware

The firmware is developed separately in FLRHW/Desk_controller_source. It is under development and not yet usable. Please consult that repository for its latest implementation and status; firmware progress is intentionally not duplicated here to avoid maintaining two status reports.

Repository contents

PathDescription
Desk_controller.kicad_proKiCad project settings.
Desk_controller.kicad_schRoot hierarchical schematic.
Desk_controller.kicad_pcbPCB layout.
Microcontroller.kicad_schControl electronics.
Display.kicad_schDisplay interface.
Servomotor_interface.kicad_schMotor driver and encoder interface circuitry.
Limit_switch_interface.kicad_schLimit-switch interface circuitry.
DCDC_converter_3V3.kicad_sch3.3 V supply stage.
Interface_*.kicad_schExternal connection/interface drawings.
output/Generated documentation and manufacturing exports.
config.kibot.yamlKiBot output and documentation configuration.
.github/workflows/, ci/, scripts/, templates/Automated generation, helper scripts and drawing worksheets inherited from the KiCad starter.

Opening the design

  1. Install KiCad 10.

  2. Clone the repository:

    bash
    git clone https://github.com/FLRHW/Desk_controller.git
    cd Desk_controller
  3. Open Desk_controller.kicad_pro in KiCad.

  4. Open the schematic editor to navigate the hierarchical sheets, or the PCB editor to inspect the board layout.

  5. Run KiCad's Electrical Rules Checker (ERC) and Design Rules Checker (DRC) after making changes, and review the reports before fabricating a board.

This is an existing project, not a fresh copy of the starter template: you do not need to run the template's project-creation instructions to open it.

Generated documentation and manufacturing files

The repository uses KiBot and GitHub Actions to generate design documentation and manufacturing outputs. Depending on the active config.kibot.yaml settings and the latest completed workflow, output/ can include:

  • Schematic, assembly and fabrication PDFs
  • ERC/DRC reports
  • Bill of materials (BOM) and interactive HTML BOM
  • Gerber files and Excellon drill files
  • Pick-and-place files and 3D STEP exports
  • Optional renders and manufacturing ZIP packages

Browse the online documentation, or open output/index.html locally after cloning. The website is updated by successful default-branch builds when GitHub Pages publishing is enabled and shows the latest deployed outputs; use a release tag for a fixed snapshot. The original template's documentation contains more details on the export system: FLRHW KiCad Starter.

Before ordering PCBs: inspect the actual Gerbers, drill data, stack-up, BOM and fabrication notes. Generated outputs and a passing automation run are not substitutes for electrical and safety verification; inspect ERC/DRC reports separately.

Development status

This repository contains an evolving hardware design. The presence of schematics, PCB files or manufacturing exports does not imply that a physical prototype has been built, tested or validated. Anyone building or operating hardware based on this design must independently assess the risks, verify that the complete system is safe for its intended use, and implement and validate appropriate safeguards before putting it into service. The availability of design files or manufacturing outputs is not evidence of safety or fitness for use. For firmware progress and readiness, refer to the firmware repository.

Safety

Motorised desk systems can cause injury or property damage. Before operating hardware based on this design, independently verify power-stage ratings, polarity and protection; limit-switch behaviour; motor direction and feedback; fault handling; and the ability to stop motion reliably. Never rely on software alone as the sole protection against unintended travel.

In the author's personal installation, a manually operated power-disconnect switch is fitted upstream of the power supply feeding the controller. This arrangement is described for reference only and has not been established as a sufficient safety measure for other installations.

Anyone reproducing or adapting this design is responsible for independently assessing the hazards of their complete system, implementing appropriate protective measures, and verifying their effectiveness before use. No particular safety arrangement is prescribed or guaranteed by this project.

Licensing and reuse

This repository contains material covered by two separate licences, according to the origin and purpose of the files:

  • Original hardware design — CERN-OHL-P-2.0: The Desk Controller schematics, PCB layout and associated original design and manufacturing files are released under the CERN Open Hardware Licence Version 2 — Permissive. The LICENSE file contains the hardware licence text.
  • Inherited KiCad starter infrastructure — MIT: Applicable files retained or adapted from FLRHW/KiCad_starter, such as automation scripts, CI workflows and templates, remain under the MIT licence, with their original copyright notices preserved. The LICENSE-MIT file contains the corresponding MIT licence and notices.

These licences apply to their respective materials; the presence of both files does not mean that the entire repository is offered under a choice of either licence. Third-party dependencies or assets may have their own terms. The firmware is maintained separately and is subject to the licensing terms in that repository.

Disclaimer: This is a personal engineering project shared as is, without warranty of safety, fitness for a particular purpose, completeness or correct operation. Anyone reusing, building, modifying or operating the design is responsible for their own engineering review, applicable regulatory requirements, testing and safeguards. The applicable licence texts govern warranty disclaimers and limitations of liability; this summary does not replace their terms.

Parts

105
QtyValueFootprintReferences
21TestPointTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP1, TP2, TP3, TP4, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19, TP20, TP21 +5
120RPersonal:Jumper_0603JP1, JP2, JP3, JP8, JP10, JP11, JP12, JP13, JP15, JP16, JP17, JP21
7100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C6, C9, C13, C19, C20, C25
50RResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderJP4, JP5, JP7, JP14, JP19
510kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R7, R8, R9
51nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC7, C8, C21, C22, C23
52k2Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R5, R10, R12, R13
410nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3, C5, C26, C27
322uCapacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolderC15, C17, C18
20RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderJP6, JP20
20RResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalJP18, JP22
21uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC11, C16
222pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC10, C14
24.7uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC2, C4
25k1Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14, R15
101x04 socketConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ2
101x14 socketConnector_PinSocket_2.54mm:PinSocket_1x14_P2.54mm_VerticalJ3
10RResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalJP9
10RPersonal:Wire_9.603mmJP23
10RPersonal:Wire_6.310mmJP24
10RPersonal:Wire_9.532mmJP25
10RPersonal:Wire_6.853x8.890mmJP26
110uPersonal:L_Bourns_SRP6540L1
120 MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSolderingY1
1220uCapacitor_SMD:CP_Elec_10x10C24
123.2kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR6
133pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC12
164.9kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3
1820Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11
1B4B XH AConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ1
1B6B XH AConnector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_VerticalJ7
1BAV99Package_TO_SOT_SMD:SOT-23D1
1DC barrel assyPersonal:Dell_barrel_assyJ8
1Dell DC jackPersonal:Dell DC jackJ6
1HX JN1.27-2x5 WZ H4.9Personal:JN1.27-2x5 WZ H4.9J4
1LMR380x0Personal:Texas_HSOP-8-1EP_3.9x4.9mm_P1.27mm_ThermalVias_w_stepU1
1STM32G431K8TPackage_QFP:LQFP-32_7x7mm_P0.8mmU2
1TFT_2.4in_320x240Personal:Display_240x320_ILI9341_2.4in_no_padsTFT1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U4
1USB_C_Receptacle_USB2.0_16PPersonal:USB_C_socket_16P_verticalJ5
1VNH7070Package_SO:JEITA_SOIC-16_3.9x9.9mm_P1.27mmU3

Questions

How big is the Desk controller PCB?

It measures 100 × 51.3 mm and has 2 copper layers, 1.2 mm thick.

What parts does the Desk controller use?

105 parts, built around the STM32G431K8T6, VNH7070AS, USBLC6-2SC6 and RC0603JR-130RP. 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 Desk controller KiCad files?

From the FLRHW/Desk_controller repository on GitHub, at the commit this page was made from: the board is lib/project-backup/Desk_controller.kicad_pcb and its schematic Block_diagram.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Desk controller design in my own project?

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

Similar boards

  • 4 layers85 × 76 mmValvedrivers, the printed circuit board in 3D

    Valvedrivers

    npgo22/APRL-Electrical-New

    To use the board templates, set KICADUSERTEMPLATEDIR by:

    145 parts
  • 4 layers53.5 × 53.5 mmMiniTULPAR, the printed circuit board in 3D

    MiniTULPAR

    ErdemHtyl/Tulpar_Mini_FCB

    This project is under active development. The table below shows what is finished and what is still in progress:

    92 partsBSD-3-Clause
  • 2 layers100 × 100 mmStrobe HMI, the printed circuit board in 3D

    Strobe HMI

    FLRHW/Strobe_HMI

    While defining the project scope, I had to decide if I'd use the good old Xenon bulb or move to LEDs, as these have greatly evolved and are ubiquitous nowadays, making their way to commercial strobes…

    91 parts
  • 4 layers100 × 100 mmPong PCB, the printed circuit board in 3D

    Pong PCB

    Fontys-Pong/pong-PCB

    PCB for the pong-digitaal project

    99 parts
  • 2 layers153 × 95.8 mmSpekky Matrix, the printed circuit board in 3D

    Spekky Matrix

    jc-SpaceXp/Spekky-Matrix

    Spectrum analyser displayed on a LED matrix board connected to a STM32 device

    390 parts1MIT
  • 2 layers54 × 75 mmMp3, the printed circuit board in 3D

    Mp3

    LailaTheElf/mp3_pcb

    PCB for a high quality MP3 player

    54 parts
  • 2 layers70 × 82.5 mmAMP PCBv3, the printed circuit board in 3D

    AMP PCBv3

    Autonomous-Motorsports-Purdue/AMP_PCBv3

    Files relating to version 3 of the PCB for AMP kart

    86 partsMIT
  • 4 layers160 × 73.2 mmMainPCB, the printed circuit board in 3D

    MainPCB

    doppelgrau/esp32-f9p-io-board

    An IO-PCB (two motor-driver/H-bridge, CAN, RS232, ADS1115, relay, ethernet, ardusimple f9p compatible connector) with an ESP32 for 12V power, three 15V tolerant analog inputs, three 5V tolerant inputs.

    162 parts39