Projects

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.