CCTRL Key Light Controller
A touchscreen controller for three tunable-white LED panels, with per-channel current sensing and latched fault protection.
- Status
- active
- Started
- Oct 25, 2026
- Stack
- ESP32-S3, PlatformIO, LVGL 8, TFT_eSPI, KiCad
- Repository
- GitHub
CCTRL drives up to three tunable-white LED panels across 2700 K to 6500 K. Each panel carries separate warm and cool channels, so colour temperature and brightness are set per panel or per group rather than per channel.
Hardware
Board revision 0.2, built around a socketed ESP32-S3-DevKitC-1-N16R8.
| Block | Implementation |
|---|---|
| Display | 3.5 in 320x480 IPS, ST7796U over SPI |
| Touch | FT6336U capacitive, over I2C |
| Input power | 24 V, fused, with reverse-polarity protection and a TVS clamp |
| Logic supply | 5 V rail |
| Panel switching | High-side P-FET and fuse per panel, low-side N-FET per channel |
| Current sense | 25 mOhm shunt into an INA181A2 per channel |
| Measurement | One ADS1115 per panel |
Continuous limits are 2.4 A per panel and 6 A total at 24 V.
Firmware
PlatformIO on the Arduino framework, with LVGL 8 for the interface and TFT_eSPI driving the panel. The platform is pinned to espressif32 6.12.0, which is Arduino-ESP32 2.0.17. It does not build against Arduino core 3.x.
PWM runs at 10-bit resolution and 25 kHz by default, selectable between 20, 25, 30 and 39 kHz, chosen so the panels do not beat against a camera shutter.
Protection is latched rather than advisory. The firmware watches for over-current, stuck MOSFETs and dead rails, and a Panel Check routine compares each channel against a saved reference so a failing panel shows up before a shoot rather than during one. A loop watchdog restarts the controller if the firmware stops servicing it.
A serial console runs over USB at 115200 baud, with sense, faults, check
and on/off for bench work.
Licensing
Firmware and tools are GPL-3.0-or-later. The hardware design is CERN-OHL-S-2.0. Documentation and photos are CC BY-SA 4.0. Bundled third-party libraries keep their own licences.