USB candles

Stained glass LED blinkenlights that can be USB powered

Similar projects worth following
For my wedding I made favours of small glass boxes with LEDs inside. An Atmel AT90USB162 controls them, and also identifies as a USB HID keyboard if connected to a computer. LED CapsLock reports are used to cycle through the different LED patterns. This relies on the host OS synchronising LEDs between keyboards

In early 2015 I was getting married and as a favour to my fiancée, rather than try to involve myself in planning the wedding (which would have mainly been the contribution of Analysis Paralysis) I worked on making wedding favours instead.

We had a small wedding, only 25 were needed, so I decided to stretch myself. Note to past self: this was a really stupid idea! The project consists of a truncated pyramid of stained glass, foiled in copper tape and soldered together, before being soldered to the populated PCB. The PCB has an Atmel uC running PWM on some warm-white LEDs in different patterns that it selects in turn.

To make it more interesting (again, really bad idea when you're also getting married), the device can be USB powered. It then uses the LUFA USB library to enumerate as a USB keyboard, and detects LED CapsLock reports sent by a host computer, and uses this as an input to select specific patterns. The computer thinks it has multiple USB keyboards attached, and on Windows and Linux (most window managers in Linux at least) if one keyboard sets a CapsLock, reports are sent to all keyboards to synchronise their CapsLock LED state. So the candle picks up input from the user without requiring any drivers at all! The circuitry to do this is effectively the same as the Minimus board, which is what I did my prototyping on.

As there weren't going to be any computers at the wedding, the board also runs from battery power using an NCP1402 step-up DC-DC converter that can generate 3V3 from as low as 0.9V. I actually bought the breakout board there as this seemed too good to be true to my jaded eyes but it's actually worked brilliantly. To keep size down I bought N batteries (which are AAA but 2/3rd as long).


Another lasercut jig for holding glass in shape while soldering

svg+xml - 9.43 kB - 03/28/2016 at 13:13



Lasercut jig for holding glass in shape while soldering

svg+xml - 6.01 kB - 03/28/2016 at 13:13



Mount for pogo pins to do testing of the boards

svg+xml - 9.65 kB - 03/28/2016 at 13:12



SVG for laser-cutting the skirt under the PCB

svg+xml - 11.19 kB - 03/28/2016 at 13:11


  • 1 × AT90USB162 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 5 × OSRAM DURIS E3 Warm white LED
  • 1 × NCP1402 Power Management ICs / Switching Regulators and Controllers

  • Pomodoro support

    Stephen B07/09/2016 at 19:08 0 comments

    Trying to improve my productivity at work I've added a pomodoro timer. This is a pattern that builds in intensity for 25 minutes (pausable with the caps lock) and then jazzes out until dismissed. Instead of throwing it in with the other patterns it's accessed with the Scroll Lock LED.

    To make things more challenging, Linux window managers don't appear to support Scroll Lock LEDs any more. They can be enabled, or you can toggle the LED directly with xset viz:

    xset led named 'Scroll Lock'
    xset -led named 'Scroll Lock'

    This is actually useful for me in work as after-spending ages making a LED trinket that works everywhere, it DOESN'T BLOODY WORK AT WORK PROPERLY because I use the awesome window manager and at this point it is not awesome as it doesn't synchronise any LEDs at all. But I can at least set a hotkey for some xset commands!

    Video to come.

  • Video

    Stephen B07/09/2016 at 19:00 0 comments

View all 2 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates