Skip to the content
PCBKitNew board
2 layers62 × 6 mmTableLight, the printed circuit board in 3D

A 3D-printable, battery-powered, USB-C rechargeable table lamp in the classic "Poldina" shape - honeycomb disc base, thin stem, down-firing cone shade with a white top - running WLED on an ESP32, with a capacitive touch…

Size
62 × 6 mm
Copper layers
2
Thickness
1.6 mm
Parts
72
Nets
46
Pads
295
Tracks, vias
755, 58
Pours
8
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
11 Sep 2026
Updated
11 Sep 2026

Overview

TableLight is an open-source printed circuit board by jonny190, from the jonny190/TableLight repository on GitHub, published under the MIT licence. It is a 2-layer board of 62 × 6 mm with 72 parts on 46 nets, routed with 755 tracks and 58 vias.

It is built around the 74AHCT1G125SE, CH340C and ESP32-WROOM-32E-N4, with the MT3608, AP2112K-3.3 and DW01A among its other parts. Its parts include 22 resistors, 17 capacitors, 8 ICs, 6 transistors and 5 connectors. It belongs with the ESP32 boards of this library.

Main components

12

README

README.md

TableLight

A 3D-printable, battery-powered, USB-C rechargeable table lamp in the classic "Poldina" shape - honeycomb disc base, thin stem, down-firing cone shade with a white top - running WLED on an ESP32, with a capacitive touch pad hidden under the white top plate.

assembled

SizeØ118 x 36 mm base, Ø22 stem, shade Ø140 -> Ø104 x 120 mm, 279 mm tall overall
Light24-LED SK6812 RGBW (or WS2812B) ring under the head, shining down through a diffuser; optional second 16-LED ring
Power1 or 2 x 18650 Li-ion in parallel (1S) in the base, USB-C charging (1 A) in the base, runs while charging
ControlWLED app / web UI / Home Assistant + touch on the white top (ESP32 native touch)
Electronicsone custom Ø110 mm PCB in the base (KiCad board + PCBWay Gerber/BOM/CPL package included); flashes WLED over the same USB-C port
Runtime~5 h at full reading brightness, ~12 h at mood brightness with two 3500 mAh cells (half with one cell)

What is in this repository

text
cad/tablelight.py          parametric CAD (Python: trimesh + manifold) - ALL dimensions live here
cad/stl/                   ready-to-print STL files (6 parts)
hardware/pcb/              custom controller PCB: SKiDL circuit, KiCad 7 board (kicad/), PCBWay fab package
                           (fab/: Gerbers, drill, BOM, pick-and-place), board generator, design notes
firmware/wled/             WLED build override + settings for this lamp
docs/BOM.md                complete bill of materials (printed parts, electronics, hardware, consumables)
docs/PRINTING.md           print settings and orientation per part
docs/ASSEMBLY.md           step-by-step build
docs/WLED_SETUP.md         WLED configuration (pins, 2D matrix, touch button, battery, current limit)
docs/images/               renders, section drawing, PCB placement, block diagram

The parts

exploded

STLQtyWhat it does
base_shell.stl1Honeycomb-topped base disc: the PCB hangs under its deck (components facing down), USB-C, power switch and charge LEDs in the side wall, 1-2 x 18650 inside
base_bottom_plate.stl1Screw-on floor with rubber feet; remove it to reach the batteries, buttons and connectors
stem.stl1Ø22 hollow stem with a Ø40 foot flange; screwed to the deck from below, carries the wires to the head
head_plate.stl1White top: stem socket, two LED-ring channels on the underside, skirt that the shade screws to, touch-pad recess
cone_shade.stl1Opaque cone Ø140 -> Ø104, open at the bottom; 3 nubs hold the diffuser, 3 radial screws hold it to the head
head_diffuser.stl1Ø104 translucent disc 14 mm under the LED ring so you never see bare LEDs from below

Section through the assembled lamp (all clearances are modelled, nothing is glued):

section

Electronics in one picture

block diagram

Power path: USB-C -> TP4056 charger -> 1S pack (DW01A/FS8205A protected) -> load-share (Schottky + P-FET) -> VSYS -> MT3608 boost 5.1 V -> P-FET LED switch -> LED ring in the head (via the stem); VSYS -> 3.3 V LDO -> ESP32-WROOM-32E. The USB-C data lines go to a CH340C with auto-reset, so WLED is flashed through the charging port. A slide switch in the base wall is the hard off (about 80 uA drain). WLED's "relay pin" cuts the LED rail so standby is only the ESP32.

See hardware/pcb/README.md for the design rationale and hardware/pcb/SCHEMATIC.md for every net.

Build order (short version)

  1. Print the six parts (docs/PRINTING.md). Fit 12 x M3 heat-set inserts.
  2. Order the PCB: upload hardware/pcb/fab/tablelight-gerbers.zip to PCBWay (hardware/pcb/fab/README.md has the form values). Flash WLED (docs/WLED_SETUP.md).
  3. Tape the LED ring into the head plate, stick the touch foil in its recess, run the wires down the stem (docs/ASSEMBLY.md).
  4. Screw the stem to the deck, plug the PCB in, screw the PCB to the deck bosses, fit 1 or 2 cells, screw the floor on.
  5. Push the diffuser up into the cone, screw the cone to the head, push the head onto the stem and fix it with two screws. Done.

Regenerating the CAD / PCB files

text
pip install -r requirements.txt
python3 cad/tablelight.py                    # STLs -> cad/stl, renders -> docs/images
python3 hardware/pcb/tablelight_netlist.py   # tablelight.net, bom_pcb.csv, SCHEMATIC.md
python3 hardware/pcb/board_outline.py        # outline.dxf, placement.svg, PLACEMENT.md
python3 hardware/pcb/build_board.py          # KiCad board -> autoroute -> DRC -> fab/ (needs KiCad 7 + freerouting.jar)
python3 docs/block_diagram.py                # block_diagram.svg/.png

Change a value in the P = dict(...) block at the top of cad/tablelight.py (shade size and taper, stem length, base diameter, honeycomb size, ring diameters...) and everything that depends on it - head socket, cone screw positions, wall openings, PCB placement drawing - follows. The stem is 236 mm tall as printed; set stem_len lower if your printer's Z is under 240 mm.

Safety notes

  • Cells in parallel must be the same model and within ~0.1 V of each other when inserted. Never mix a fresh and a flat cell.
  • The board has over/under-voltage, over-current and short protection (DW01A + FS8205A), but a lamp is a closed plastic box: keep the WLED current limit at or below 1200 mA and do not leave it charging on a cushion.
  • Use a 5 V USB-C supply rated 2 A or more when charging and running at the same time.

License

MIT for the code and design files. WLED is licensed separately by its authors.

Parts

72
QtyValueFootprintReferences
6100kR_0603_1608MetricR8, R11, R14, R15, R16, R17
6100nFC_0603_1608MetricC3, C11, C14, C15, C16, C17
410kR_0603_1608MetricR10, R12, R18, R19
410uF 10VC_0805_2012MetricC1, C2, C10, C12
41kR_0603_1608MetricR4, R5, R7, R22
422uF 10VC_0805_2012MetricC4, C5, C6, C7
4M3MountingHole_3.2mm_M3H1, H2, H3, H4
212kR_0603_1608MetricR20, R21
21uFC_0603_1608MetricC9, C13
25.1kR_0603_1608MetricR1, R2
2MMBT3904SOT-23Q5, Q6
2SS34D_SMAD1, D2
11.2kR_0603_1608MetricR3
1100RR_0603_1608MetricR6
1100uF 6.3VCP_Elec_6.3x5.4C8
118650BatteryHolder_Keystone_1042_1x18650BT1
118650 (optional 2nd cell)BatteryHolder_Keystone_1042_1x18650BT2
12N7002SOT-23Q4
1330RR_0603_1608MetricR13
14.7uH 4AL_Bourns_SRN6045TAL1
174AHCT1G125SOT-23-5U7
175kR_0603_1608MetricR9
1AO3401ASOT-23Q3
1AO4407ASOIC-8_3.9x4.9mm_P1.27mmQ2
1AP2112K-3.3SOT-23-5U5
1BAT ALTJST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ5
1BOOTSW_SPST_TL3342SW3
1CH340CSOIC-16_3.9x9.9mm_P1.27mmU6
1DW01ASOT-23-6U3
1ESP32-WROOM-32E-N4ESP32-WROOM-32U1
1EXPPinHeader_1x06_P2.54mm_VerticalJ4
1FS8205ATSSOP-8_4.4x3mm_P0.65mmQ1
1GREENLED_0603_1608MetricD4
1LED RINGJST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ2
1MT3608SOT-23-6U4
1POWERSW_Slide_SPDT_Angled_CK_OS102011MA1QSW1
1REDLED_0603_1608MetricD3
1RESETSW_SPST_TL3342SW2
1TOUCHJST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ3
1TP4056SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mmU2
1USB-C 16PUSB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1USBLC6-2SC6SOT-23-6U8

Questions

How big is the TableLight PCB?

It measures 62 × 6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the TableLight use?

72 parts, built around the 74AHCT1G125SE, CH340C, ESP32-WROOM-32E-N4 and MT3608. 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 TableLight KiCad files?

From the jonny190/TableLight repository on GitHub, at the commit this page was made from: the board is hardware/pcb/kicad/tablelight.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the TableLight 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 layers35 × 39 mmNex, the printed circuit board in 3D

    Nex

    dialgorithm/nex

    esp32 swarm bots

    60 parts1
  • 2 layers150 × 40 mmBicopter, the printed circuit board in 3D

    Bicopter

    InputBlackBoxOutput/Bicopter

    Design files for a PCB Bicopter

    79 parts1MIT
  • 2 layers61 × 61 mmVael, the printed circuit board in 3D

    Vael

    dialgorithm/vael

    esp32s3 flight controller

    66 parts
  • 2 layers70 × 120 mmMultimetre V2, the printed circuit board in 3D

    Multimetre V2

    hilham1990/Multimetre

    AkademiUsta Multimetre: ATmega328P + 16 bit ADS1115 ADC, OLED ekran ve Li-ion pil ile açık kaynak el multimetresi. KiCad 10 dosyaları, Gerber ve LCSC kodlu BOM. Kart henüz üretilmedi.

    86 parts
  • 2 layers100 × 100.1 mmDiploma, the printed circuit board in 3D

    Diploma

    t3ry4git/stm32Co2

    A simple CO2 and environmental monitor based on the STM32F103C8 microcontroller. The firmware reads temperature and humidity from a DHT22 sensor, measures CO2 concentration using an MHZ19B module and displays values on…

    62 parts
  • 2 layers25.8 × 34.5 mmCargadorDeBaterias, the printed circuit board in 3D

    CargadorDeBaterias

    Tintun1/Practicas

    Practicas de programacion / diseño / demas

    27 parts
  • 2 layers56.1 × 37 mmPowerBoard, the printed circuit board in 3D

    PowerBoard

    dev-campusfab/chessLab

    Interactive Chess board that brings visuals to the game and can help the player to learn.

    44 parts2AGPL-3.0
  • 2 layers35 × 100 mmWalkieTalkie, the printed circuit board in 3D

    WalkieTalkie

    GuzziFlipFlops/ESP32-Walkie-Talkie

    An open source ESPNOW based walkie talkie with a 600 meter tested distance, with an OLED and multiple buttons to interact with

    66 parts7MIT