

ReadingLampController
A repurposing of my LCC Lighting Controller hardware into a customizable, Matter enabled, RGBW reading lamp
- Size
- 64.8 × 74.5 mm
- Copper layers
- 2
- Thickness
- 1.69 mm
- Parts
- 67
- Nets
- 39
- Pads
- 188
- Tracks, vias
- 278, 202
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 20 Feb 2026
- Updated
- 20 Feb 2026
Overview
ReadingLampController is an open-source printed circuit board by vsi5004, from the vsi5004/ReadingLampController repository on GitHub. It is a 2-layer board of 64.8 × 74.5 mm with 67 parts on 39 nets, routed with 278 tracks and 202 vias.
It is built around the SN74LVC1G125DCK, TJA1051T/3/1 and ADS1115IDGS, with the AP63205WU, LM358 and BBPY00160808152Y00 among its other parts. Its parts include 17 capacitors, 11 resistors, 11 connectors, 7 ICs and 4 diodes. It belongs with the lEDs and displays boards and the ESP32 boards of this library.
Main components
8SN74LVC1G125DCK
SC-70-5-40℃~+125℃ 0.6ns@3.3V,15pF 1 1 1.65V~5.5V 10uA 32mA 32mA 74LVC Tri-State Unidirectional SC-70-5 Buffers, Drivers, Receivers, Transceivers ROHSTexas InstrumentsBuffers, Drivers, Receivers, TransceiversTJA1051T/3/1
-- CAN Transceivers ROHSNXP SemiconductorsCAN TransceiversADS1115IDGS
MSOP10Ultra-Small, Low-Power, 4 Channels 16-Bit Analog-to-Digital Converter with Internal ReferenceTexas InstrumentsUncategorisedAP63205WU
TSOT-23-6-40℃~+85℃@(TA) 1 1.1MHz 22uA 2A 3.8V~32V 5V Buck Built-in Fixed Overcurrent Protection、Light load efficient mode、Cycle-by-cycle current limiting、Hiccup current limiting、EMI optimization (spread spectrum) Step-down type Yes TSOT-23-6 DC-DC Converters ROHSDiodes IncorporatedDC-DC ConvertersLM358
SOP-8-18V~18V 0℃~+70℃ 1.2MHz 10nA 2 24mA 3V~36V 500uA 50nA 5mV 80dB Built-in compensation SOP-8 Operational Amplifier ROHSMSKSEMIOperational AmplifierBBPY00160808152Y00
0603Ferrite BeadsChilisin ElectronicsRJ45
TH-12PTH-12P SMT ROHSJLCPCB AssemblyUncategorisedNUP2105L
SOT-23-55℃~+150℃ 100nA 2 24V 30pF 32V 350W@8/20us 44V 8A@8/20us Bidirectional IEC 61000-4-2、IEC 61000-4-5、IEC 61000-4-4 TVS SOT-23 ESD and Surge Protection (TVS/ESD) ROHSonsemiESD And Surge Protection (TVS/ESD)
README
README.mdReading Lamp Controller
A fully open-source smart reading lamp with Matter/Google Home integration. Features a cylindrical RGBW LED shade, rotary encoder control, analog color mixing, and multiple dimming modes including an animated fire effect.

Features
- Matter/Google Home — On/off control via WiFi after BLE commissioning
- Rotary encoder — Short press cycles modes, long press turns off, rotation controls brightness
- RGBW color mixing — Four potentiometers for real-time red, green, blue, and white adjustment
- Four dimming modes:
- Uniform — All LEDs at equal brightness
- Vertical Fade — Light expands from center row outward
- Radial Fade — Light wraps around the cylindrical shade
- Fire Flicker — Animated flame effect with realistic flicker-out
- Smooth transitions — Perceptual gamma correction and interpolated fades
Project Structure
This repository contains everything needed to build the lamp from scratch:
ReadingLampController/
├── Firmware/ # ESP32-S3 firmware (PlatformIO)
├── PCB/ # KiCad schematic and PCB design
├── Mechanical/ # CAD files (Fusion 360, STEP, DXF for CNC/laser)
└── Doc/ # Additional documentationFirmware
The firmware runs on a Seeed XIAO ESP32-S3 and is built with PlatformIO. It uses the pioarduino platform fork to enable Matter support via Arduino Core 3.x.
📁 Firmware Documentation — Build instructions, flashing, Matter commissioning, usage guide
📁 Architecture Guide — Deep-dive technical documentation for contributors
PCB
The PCB is based on my LCCLightingController project — a general-purpose ESP32-S3 lighting controller with I²C ADC, rotary encoder support, and LED strip output. This lamp runs custom firmware tailored for the cylindrical RGBW shade and Matter integration.
- Schematic:
PCB/pcb.kicad_sch - PCB layout:
PCB/pcb.kicad_pcb - Gerber outputs:
PCB/Outputs/
Mechanical
CAD files for the lamp body, shade, and hardware. Designed in Fusion 360 with exports for fabrication:
| File | Description |
|---|---|
Reading Lamp.f3z | Full Fusion 360 project |
Reading Lamp v5.step | STEP export for other CAD software |
*.dxf | 2D profiles for CNC routing or laser cutting |
*.3mf | 3D-printable parts and jigs |
Hardware Overview
| Component | Specification |
|---|---|
| Controller PCB | LCCLightingController — custom board with MCU, ADC, and connectors |
| MCU | Seeed XIAO ESP32-S3 (mounted on controller PCB) |
| LED Strip | 88× SK6812 RGBW LEDs (8 columns × 11 rows, zigzag wiring) |
| ADC | ADS1115 16-bit I²C ADC (on controller PCB) |
| Rotary Encoder | Adafruit I²C Rotary Encoder (seesaw) |
| Potentiometers | 4× linear pots (R, G, B, W channels) |
Quick Start
Prerequisites
Clone & Build
git clone https://github.com/vsi5004/ReadingLampController.git
cd ReadingLampController/Firmware/ReadingLampControllerOpen the Firmware/ReadingLampController folder in VS Code. PlatformIO will auto-configure the project.
Windows users: Set this environment variable before building:
$env:SCONSFLAGS = "-j1"
platformio runFlash
Option A — Pre-built binary (no dev environment needed):
Download the latest *-merged.bin from the Releases page and flash with esptool:
pip install esptool
esptool.py --chip esp32s3 --port COM3 write_flash 0x0 ReadingLampController-*-merged.binOption B — Build from source:
platformio run --target uploadCommission
Open a serial monitor at 115200 baud to see the Matter pairing code:
platformio device monitorOn first boot, use the Google Home app to commission the device as a Matter accessory.
Usage
| Action | Effect |
|---|---|
| Short press | Turn on (if off) / Cycle dimming mode (if on) |
| Long press (≥1.5s) | Turn off |
| Rotate encoder | Adjust brightness |
| Turn pots | Adjust R/G/B/W color mix |
| Hold reset button (5s) | Factory reset (erases Matter credentials) |
License
This project is licensed under the BSD 2-Clause License. See LICENSE for details.
Contributing
Contributions are welcome! For firmware changes, please review the Architecture Guide first to understand the codebase structure and design decisions.
Acknowledgments
- pioarduino — Arduino Core 3.x platform with Matter support
- NeoPixelBus — RGBW LED strip driver
- Adafruit seesaw — I²C rotary encoder library
Parts
67| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 100nF | Capacitor_SMD:C_0603_1608Metric | C5, C10, C11, C12, C13, C14, C15 |
| 5 | 10k | Resistor_SMD:R_0603_1608Metric | R15, R16, R17, R18, R19 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad | H1, H2, H3, H4 |
| 4 | Screw_Terminal_01x03 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-3-3.5-H_1x03_P3.50mm_Horizontal | J2, J7, J8, J9 |
| 3 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C3, C16 |
| 3 | 10uF | Capacitor_SMD:CP_Elec_5x5.3 | C1, C8, C9 |
| 3 | 220R | Resistor_SMD:R_0603_1608Metric | R10, R43, R44 |
| 3 | Fiducial | Fiducial:Fiducial_0.5mm_Mask1mm | FID1, FID2, FID3 |
| 2 | 22uF | Capacitor_SMD:C_0603_1608Metric | C6, C7 |
| 2 | 4K7 | Resistor_SMD:R_0603_1608Metric | R29, R30 |
| 2 | BBPY00160808152Y00 | Inductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolder | FB1, FB2 |
| 2 | EXT_BTN1 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-3.5-H_1x02_P3.50mm_Horizontal | J5, J6 |
| 2 | RJ45 | CustomLibrary:RJ45_TE_CONNECTIVITY_5555164-1_Horizontal-Low_Profile | J3, J4 |
| 2 | User | Button_Switch_SMD:SW_Tactile_SPST_NO_Straight_CK_PTS636Sx25SMTRLFS | SW3, SW4 |
| 1 | 0.1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C4 |
| 1 | 100 | Resistor_SMD:R_0603_1608Metric | R20 |
| 1 | 1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C17 |
| 1 | 3v3 | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP1 |
| 1 | 4.7uH | CustomLibrary:IND_B1047AS-4R7N=P3 | L1 |
| 1 | 5v | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP2 |
| 1 | ADS1115IDGS | Package_SO:TSSOP-10_3x3mm_P0.5mm | U2 |
| 1 | AP2114-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U5 |
| 1 | AP63205WU | Package_TO_SOT_SMD:TSOT-23-6 | U4 |
| 1 | CAN RX | LED_SMD:LED_0603_1608Metric | D25 |
| 1 | CAN TX | LED_SMD:LED_0603_1608Metric | D24 |
| 1 | EXT POWER | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-3.5-H_1x02_P3.50mm_Horizontal | J1 |
| 1 | Factory Reset | Button_Switch_SMD:SW_Tactile_SPST_NO_Straight_CK_PTS636Sx25SMTRLFS | SW2 |
| 1 | I2C Breakout | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J11 |
| 1 | LM358 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U6 |
| 1 | LOGO | Components:lcc-logo-registered-medium | G*** |
| 1 | MOUDLE-SEEEDUINO-XIAO-ESP32S3 | CustomFootprints:MCU_Seeed_ESP32C3_TH | U8 |
| 1 | NUP2105L | Package_TO_SOT_SMD:SOT-23 | D15 |
| 1 | RGBW LED | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-3-3.5-H_1x03_P3.50mm_Horizontal | J10 |
| 1 | SN74LVC1G125DCK | Package_TO_SOT_SMD:Texas_R-PDSO-G5_DCK-5 | U1 |
| 1 | TJA1051T-3 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U7 |
| 1 | WiFi | LED_SMD:LED_0603_1608Metric | D1 |
The 66 most common of 67 parts.
Questions
How big is the ReadingLampController PCB?
It measures 64.8 × 74.5 mm and has 2 copper layers, 1.69 mm thick.
What parts does the ReadingLampController use?
67 parts, built around the SN74LVC1G125DCK, TJA1051T/3/1, ADS1115IDGS and AP63205WU. 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 ReadingLampController KiCad files?
From the vsi5004/ReadingLampController repository on GitHub, at the commit this page was made from: the board is PCB/pcb.kicad_pcb and its schematic PCB/pcb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the ReadingLampController design in my own project?
Its repository states no licence, so its author keeps all rights: ask vsi5004 before reusing the design.
Similar boards
- 4 layers61 × 81 mm

- 4 layers48.5 × 33.5 mm

- 2 layers37 × 70.9 mm

Opendiag
maximus64/opendiag-hardware
OpenDIAG - Open Source OBD2 Interface (Hardware)
148 parts5CERN-OHL-S-2.0 - 2 layers101.6 × 53.4 mm

- 2 layers105.6 × 73.3 mm

STM32F767ZI LCC PNET Router
RobertPHeller/RPi-RRCircuits
A collection of circuit designs for various MCUs, not just Raspberry Pis relating to Model Railroading
52 parts24 - 2 layers115.2 × 78.6 mm

- 4 layers160 × 121 mm

- 4 layers160 × 118 mm

Polygonus Universal Base
FOME-Tech/Polygonus-Universal
Open source 88pin universal base (NOT A PNP)
91 parts4