Like any red blooded engineer I like nice designs, shiny objects and blinking lights. One of the projects that burrowed its way into my subconscious and helped push me over the edge into buying a 3D printer earlier this year was the Adafruit Feather BLE + NeoPixel lamp with 3D printed Voronoi Shade that plays some animations by the Ruiz Brothers over at Adafruit. It’s a great addition to any office desk or maker workbench. After playing with the sample code which simply played a short animation when you pressed a button in the app I decided to augment the code to continuously play animations and add a few more to the mix.
You can view detailed step/by step instructions on printing this lamp here on the Adafruit Learning System. What follows in this post is a description of what changes/modifications I made to the build and additional functionality I added into the software running on the Bluefruit Feather.
Check out this video showing what I did with the software for this project here:
Software Revision Highlights:
- Currently selected animation will loop continuously without interruption (Original sample plays 1 animation and stops until another button is pressed)
- Cleaned up animation library/methods, fixed some issues with Adafruit sample code and finished off some incomplete methods
- Added additional animations to the up, down, left and right buttons in the Adafruit Bluetooth application
You can find the source code for the demo used in the video here on GitHub.
Notes on Building This Project:
I printed the base out of ABS filament and the Voronoi shade from light blue translucent PLA filament. I chose not to glue the shade onto the top ring of the base as I like to be able to show off the electronics. I friction fit the clear disk into the bottom of the lampshade so it stays securely as one piece. I also omitted the battery as I only plan to run the lamp in an office setting wherein I have access to plenty of USB ports.
BIG NOTE: As this caused me some headaches and wasted time. In the Adafruit Learning System write-up for this lamp, make sure to follow the Fritzing circuit diagram here and NOT from the step by step photograph here. The photograph shows one of the blue wires going into ‘BAT’ and not the expected ‘3V’. You should be powering the NeoPixels off the 3V pin.
Once I finished all the soldering I fit the board, wires and ring into the bottom half of the base and flashed the firmware onto the device and made sure it lit up and worked as expected.
Next up I screwed on the top half of the base and started working on the animations I wanted to use and assigned them to various buttons in the Adafruit ‘Bluefruit’ application.
Last up was testing the completed lamp. It lights up a dark room more that I expected which is nice and is clearly visible in a well lit room. Some of the animations in the above video are far better in person as the DSLR tends to blend a lot of the mixed colors into shades of white — you’ll have to see it in person by building your own.
With the above lamp completed you can also tie it into the IfThisThenThat (IFTTT.com) ecosystem via Adafruit IO. IFTTT allows Internet of Things (IoT) devices to react to a surprisingly large amount of interesting stimuli — if you get a certain type of email, if your phone shows up on your home wifi network, if an IoT sensor gets a certain reading your device and react to that message and carry out your desired task — its an incredible system and will be the focus of my next post, stay tuned.
P.S. If you build your own variant of this project, please leave a comment and share your thoughts and modifications.