Key Light Controller: the first public drop
The Key Light Controller repository is public. Rev 0.2 of the board, the firmware, the KiCad files and the docs are all in there under lautus-creations/key-light-controller.
It drives three tunable-white LED panels from 2700 K to 6500 K. Warm and cool are separate channels on each panel, so the interface works in colour temperature and brightness rather than making you think in raw channel levels.
Why the protection latches
The easy version of this project reads current, notices something is wrong, and keeps going. That is the version that melts a connector while you are looking at the other side of the room.
Every channel runs a 25 mOhm shunt into an INA181A2, and each panel has its own ADS1115. The firmware uses that to catch three separate failure modes: over-current, a MOSFET that has failed closed, and a rail that has gone dead. All three latch. Clearing a fault is a deliberate act, because a fault that clears itself is a fault you will see three more times and never diagnose.
Panel Check is the other half of it. It compares each channel against a reference captured when the panels were known good, which turns “this one looks a bit dim” into a number.
Why the PWM frequency is selectable
Default is 10-bit at 25 kHz. You can pick 20, 25, 30 or 39 kHz instead.
That is not configurability for its own sake. These panels exist to be filmed, and a fixed PWM frequency will eventually land in a bad relationship with some camera’s shutter or rolling readout. Having four options means the fix is a menu rather than a firmware rebuild.
Two things to know before you build one
The platform is pinned to espressif32 6.12.0, which is Arduino-ESP32 2.0.17. It does not build on Arduino core 3.x. That pin is deliberate, not neglect.
If you are using a clone DevKitC board, check the onboard RGB LED. On some of them it shares a GPIO with Panel C, which produces exactly the kind of fault that wastes an evening.
The backlight is switched rather than dimmed, which is on the list.
Next
Rev 0.3 is mostly about connector choice and getting the sense traces away from the switching nodes. The firmware side wants real backlight dimming and a less cramped settings screen.