Internet of Things Tower Light

I recently came across the Adafruit 12V Tower Light and thought this would be ideal for my wife to remotely notify me when I’m working in the garage.

Because the light works on 12V though, it would be slightly more difficult to interface with it using a microcontroller running on 5V for example. So I decided to get rid of the 12V circuitry and replace it with a 5V microcontroller and LEDs, having the whole thing powered via USB.


Tearing down the light and removing the 12V electronics was quite easy. A screw is hidden under the sticker on the top lid. Once this is unscrewed, the electronics can be accessed. The LEDs are zip tied to the center shaft, but after detaching the flex cable, it is possible to slide them off. The PCB detaches easily as well.

A buzzer is located in the base of the light. It’s not glued or screwed in place, but only requires a bit of wiggling around to slide out of its socket.


Once all the electronics were removed, I also peeled off the different stickers. To get rid of the glue marks, I used hot soapy water and a cloth to clean the lamp.


The replacement electronics are super simple. I’m using a Adafruit NeoPixel ring controlled by a Particle Photon. Both are powered using a USB cable of which I cut off the end connector, in order to be able to slide it through the frame of the light. The NeoPixel ring is then controlled by the Photon’s D2 digital pin.

Screen Shot 2016-04-17 at 20.53.20

I found that the 12 LED NeoPixel ring fits best inside the tower light. Alternatively, a piece of LED strip wrapped around the center shaft would work as well.


The code consists of two parts:

  • a “DO” button via IFTTT providing the trigger
  • a sketch on the Photon listening for the trigger


The easiest way to create a “DO” button, is by installing the IFTTT “DO Button” app. It is available for both Android and iOS devices.

Create a button by selecting the desired channel, in this case, the Particle channel. Define an event name and the data to be sent. In total, I created 4 buttons for the same event, each with different data. This data will be parsed on the Photon, to trigger the matching animation.

IMG_1274 IMG_1276 IMG_1275


The code for the Photon is based on the “A-Rainbow” example of the NeoPixel library in the online IDE. I modified the sketch by adding the different animations and having the Photon listen for triggers by IFTTT. Be sure to use the same event name as the Do Button!

The code can be found below:

And that’s it. Once the Photon is connected to the network, it is constantly listening for the trigger. Use the DO Button app to send different animation values and see how your Photon applies it.

© Frederick Vandenbosch, 2014-2021. Unauthorised use and/or duplication of this material without express and written permission from this blog’s author and owner is strictly prohibited. Excerpts and links may be used, provided that full and clear credit is given to Frederick Vandenbosch with appropriate and specific direction to the original content.