Introduction: Browser-controlled ON-AIR Light Modification

Ever since my career turned towards Zoom-heavy days spent talking remotely with customers and teammates, I've wanted an old-fashioned "On Air" light that would tell my family when I'm in a call. My partner gave me this classic light-up sign as a gift, and I decided to add an inexpensive microcontroller to make it web-controllable so that I could trigger it from my desk when I join a conference call or video meeting!


Total cost for the parts was less than $10 (and even when bought in bulk!).

Supplies

Parts

  • On Air light with a momentary power switch, like this one from Paladone (p/n PP8597). This particular model is still available from a number of online stores, and the manufacturer makes a number of other novelty lights that could likely be similarly augmented.
  • Amazon: https://www.amazon.co.uk/Paladone-Light-Mountable-Desktop-PP8597/dp/B096H44MTL
  • UK store: https://www.brandacademystore.com/products/xxpl-on-air-light
  • ESP-01S microcontroller board (ESP8266 with WiFi) Another ESP or Arduino board could also work, but the ESP-01S costs between $2 and $3, making it just right for this hack
  • 3VDC power regulator I used a LM2596 step down module / buck converter, again because the $2 price seemed about right. If you're feeling brave, you can use a voltage divider circuit or a standalone voltage regulator. If you're feeling brave and lucky, you can try running the 3v ESP32 at 5v, but there's a strong chance you will release the magic smoke.
  • Temu lm2596-buck-converter-dc-to-dc-buck-converter
  • Queta-Converter-Efficiency-Stabilizer-Transformer on Amazon
  • 1000µFElectrolytic Capacitor to smooth out the power supply. Both FTDI programming and the 5v power from the light can be a little sketchy, and even with this in the loop, I still occasionally get a random reset. (I have also seen 470µF spec'd for this)
  • NPN Transistor (I used an 8050, but as long as it can handle a few hundred milliamps at 5v and switch at 3v, pretty much any will do)
  • 1000k Resistor
  • Hookup wire, DuPont pins/socket jumpers, and/or ribbon cable with headers.


Tools

  • Soldering iron and supplies
  • 5v-tolerant LED for testing
  • Multimeter
  • FTDI programmer or ESP-specific USB programmer


Recommended Other

  • Breadboard to prototype and for programming the ESP-01S
  • Nylon or pastic mounting stand-offs & screws
  • Protoboard/perfboard to mount the circuit. I used a piece of "philmore" style protoboard, which I like because it has traces for power and ground rails or small blocks, but also allows for freeform wiring.
  • Busboard PR3U on Mouser

Step 1: Disassemble Light

The back of the light fits snugly inside the side walls and snaps in place with cantilevered clips. There are small notches at each release point. Pry gently at each notch to release, and work around the edge with a small screwdriver or spodger to pull the back out. All of the components are mounted to the back plate.

Step 2: Solder Taps for Switch Lead and Power

The LED control board uses small IC driver chip. I suspect it's an ILD8150 or a clone, but I wasn't able to confirm that.The lighting control modes are switched between "off," "soft on," and "pulse" by a momentary switch. Rather than risk damage to the chip, we can emulate the switch directly (more on that later). The switch pulls an input on the controller low (to ground), so we'll add a lead from the input side that we can pull to ground. We'll also add leads for the 5vdc power from the USB side

  1. Add a jumper lead with a little extra length to the pad where the input side of the switch is connected (green)
  2. Add leads to the USB socket for 5v power (black and red). Using a JST connector here makes assembly or upgrades easier later.

Step 3: Program the ESP8266

Code and resources for this step can be found on github here:

https://github.com/wcbdata/onAirLight

The sketch in this repository acts as a webserver with static links for three operations: 1) toggle the built-in LED, 2) send a 0.10-second "tap" to the switch, and 3) send two 0.10-second taps, 0.10 second apart. This way we can go straight to fully-on (1 tap) or pulse operation (2 taps).

  1. Connect the board to a laptop or PC running the Arduino IDE. For the ESP-01S, there are dedicated USB dongles, or you can do it using the more rustic approach shown here. There's a good general Instructable that covers several options.
  2. Upload the SVG image to the ESP-01S using LittleFS, a filesystem for the on-board flash memory.
  3. Upload the sketch to the ESP-01S

Step 4: Breadboard the Circuit for Testing

We'll emulate the switch with an NPN transistor. The implementation above is from Bill Traynor and the CE Linux Forum's GPIO control reference. The 5v and 3v power supplies share a ground. It can be set up for testing using an LED wired from the 5v power rail in place of the switch input. Since the GPIO pins on the ESP-01S need to be held high to get it to boot without going into programming mode, we use the RX pin as a GPIO for the switch. (Note that this means we'll have to remove the module if we want to upgrade or reprogram it later.)

Step 5: Solder Up the Control Circuit

This whole thing could be assembled on one board, but given the low cost of the components and my personal tendency to go back and fiddle with things, a modular approach seemed better. In this case, JST connectors are used for the 3v and 5v power (incompatible, so that they won't be mixed up), and an 8-pin header and ribbon cable are used for the EPS-01S board. The switching circuit is implemented on a small piece of philmore-style protoboard.

Step 6: Mount the Parts

The LM2596 buck module and the protoboard have mounting holes, so epoxying a few standoffs to the back panel works well. They could also be hot-glued in place or mounted in another way.

The ESP-01S has no holes, and is a pretty compact board without room to drill, so I created a small glue-down mounting bracket that can be 3D printed. It can be found here on Thingiverse.

Step 7: Final Test

Power it up and run one final test of the webserver and light before closing up the case. If you recall, it's kind of a pain to open.

Step 8: Close Up the Light

Step 9: Some Additional Next Steps/Projects

There is a lot of room for improvement here. There are better, more complete HTTP servers for the ESP8266, the SVG does not center properly on a mobile browser, and it would be nice to add a feedback mechanism to be able to see the current state of the LED driver.

One easy improvement was to add the "API Request" plugin to my Stream Deck so that it can call the static links for single and double taps with custom buttons.

Step 10: Sources, Credits, and Tips O'the Hat

Anything Goes Contest

Participated in the
Anything Goes Contest