

Skrivebord
Height adjustable desk controlled with LiDAR
- Size
- 100 × 70 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 17
- Nets
- 27
- Pads
- 74
- Tracks, vias
- 92, 0
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 30 Jul 2026
- Updated
- 30 Jul 2026
Overview
Skrivebord is an open-source printed circuit board by matto24, from the matto24/smart_desk repository on GitHub, published under the MIT licence. It is a 2-layer board of 100 × 70 mm with 17 parts on 27 nets, routed with 92 tracks and 0 vias.
It is built around the IRLZ34N. Its parts include 6 resistors, 2 capacitors, 2 diodes, 2 transistors and 2 connectors. It belongs with the ESP32 and RISC-V boards of this library.
Main components
1README
README.mdDesk Controller
Open-hardware controller for a motorized (sit/stand) desk. A Seeed XIAO ESP32-C6 measures the desk height with a VL53L1X time-of-flight lidar and drives the desk's up/down motor lines until it reaches a requested height, exposed over a small WiFi web server.
skrivebordis Danish for desk.
The press-fit 3D-printed enclosure — sensor opening on top, ventilation slots on the front.
How it works
- The ESP32-C6 hosts an HTTP endpoint:
GET /target?cm=<height>. - On request it powers on the lidar, reads the current height, then holds the UP or DOWN line until the measured height reaches the target.
- Target height is clamped to a safe range (64–114 cm) and every move has a hard safety timeout, so the motor is never left running.
Repository layout
| Path | Contents |
|---|---|
kicad_files/ | KiCad 8 project — schematic, PCB, and fabrication gerbers |
casing/ | 3D-printed enclosure — see below |
esp_program/ | ESP32-C6 firmware (Arduino / .ino) |
casing/ — enclosure files
| File | Use |
|---|---|
box_top.3mf / box_bottom.3mf | Ready-to-print halves — press-fit together |
box.step | Neutral CAD for editing in any tool (FreeCAD, SolidWorks, Onshape…) |
casing.f3z | Editable Fusion 360 source archive |
esp_program/ — firmware
| File | Use |
|---|---|
main/simple_up_down.ino | Main firmware: lidar-guided move-to-height over WiFi |
lidar_xshut_test/lidar_xshut_test.ino | Standalone lidar bring-up / XSHUT test |
Building the firmware
-
Install the ESP32 board support (Seeed XIAO ESP32-C6) in the Arduino IDE.
-
Install the VL53L1X (Pololu) library via Library Manager.
-
Open
esp_program/main/simple_up_down.inoand set your WiFi credentials:cpp const char* ssid = "XXX"; // <- your network const char* password = "XXX"; // <- your passwordKeep your real credentials out of git — leave the placeholders in the committed copy.
-
Flash to the board, open the serial monitor at 115200 baud to see the assigned IP, then move the desk with e.g.
http://<device-ip>/target?cm=90.
Hardware
- Board / schematic / gerbers: open
kicad_files/skrivebord.kicad_proin KiCad 10.kicad_files/gerbers/desktop_control_v1.zipis the packaged fabrication output. - Enclosure: print
box_top.3mfandbox_bottom.3mfand press-fit.
License
Released under the MIT License — free to use, modify, and
distribute, keep the copyright notice. The bundled Seeed XIAO KiCad libraries
under kicad_files/libraries/ remain the property of Seeed Studio.
Parts
17| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R4, R5, R6 |
| 2 | 100n | Capacitor_THT:C_Rect_L7.0mm_W3.5mm_P5.00mm | C1, C2 |
| 2 | 10K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R2, R3 |
| 2 | 1N914 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D2 |
| 2 | G5LE-1 | Relay_THT:Relay_SPDT_Omron-G5LE-1 | K1, K2 |
| 2 | IRLZ34N | Package_TO_SOT_THT:TO-220-3_Vertical | Q1, Q2 |
| 1 | Conn_01x06 | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J2 |
| 1 | Screw_Terminal_01x04 | TerminalBlock:TerminalBlock_Xinya_XY308-2.54-4P_1x04_P2.54mm_Horizontal | J1 |
| 1 | XIAO-ESP32-C6-DIP | ESP:XIAO-ESP32-C6-DIP | U1 |
Questions
How big is the Skrivebord PCB?
It measures 100 × 70 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Skrivebord use?
17 parts, built around the IRLZ34N. 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 Skrivebord KiCad files?
From the matto24/smart_desk repository on GitHub, at the commit this page was made from: the board is kicad_files/skrivebord.kicad_pcb and its schematic kicad_files/skrivebord.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Skrivebord design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers100 × 50 mm

- 2 layers224.8 × 60.3 mm

Deurnode nieuw
Hans-Beerman/Deurnode_ESP32-PoE
KiCad design Deurnode for the MakerSpace Leiden, based on the Olimex ESP32-PoE
38 parts4Apache-2.0 - 2 layers111.3 × 68.1 mm

MKS relay v4
3D-Printing-for-Microfluidics/3D_printer_control
2nd generation 3D printer control software
67 parts3GPL-3.0 - 2 layers

Watch cleaner pcb
DavidJ-Saving-Time/watch-cleaner
So this is a very rough draft of code designed to run on an esp32 to control a watch cleaning machine see this YouTube video https://youtu.be/Opr75n8DbYY I'll be adding to this and making it easier for people to use.
16 parts3MIT - 2 layers31.8 × 114.8 mm

3DWelderPCB
destroyer796/3DWelder
An overbuilt 3D pen that will use a chc pro hotend and custom dc extruder powered by a power tool battery
17 parts3MIT - 2 layers83.8 × 50.8 mm

Shunt charge controller
grillbaer/solar-power-supply
Solar power harvesting for micro controller projects with li-Ion battery and highly efficient charge controller
16 parts3MIT - 2 layers80 × 45 mm

WifiOiler01
volw/wifiOiler
Automatic, distance depending chain oiler for motorbikes with track recording (GPS).
15 parts3GPL-3.0 - 2 layers80 × 20 mm

Spider dropper
aidtopia/spider_dropper
Mechanism to "drop" a spider (or other lightweight prop) for Halloween fun
10 parts2