Nathan Moore's profile

WiFi-Controlled Pyramid Ship Lamp

WiFi-Controlled Pyramid Ship Lamp
Nathan Moore
First-person shooter RPG franchise Destiny has been a long-time passion of mine.  Naturally, I would like to have physical mementos to express my interest in the game, but its official merchandise is too expensive for my liking.  Additionally, the Internet and how it works with embedded devices is a topic I have always wanted to explore.  I decided to appeal to both of these interests at once by creating a WiFi-enabled lamp in the form of a Pyramid ship from Destiny 2 (depicted below).
A Pyramid ship of the Black Fleet from Destiny 2
To accomplish this, I needed to find a microcontroller with WiFi capability that was compatible with the Arduino IDE and can control an LED strip.  I chose a board with an ESP32 module since it met all of these specifications and was affordable.   Additionally, I wanted to be able to use wall power for the lamp to make it a standalone unit, so I obtained a power adapter as well.  The wiring schematic for connecting the ESP32 board to an LED strip using an external 5V power supply is shown below.
Wiring schematic for the ESP32 module and NeoPixel strip
Next, I needed to find a free, simple way to control the state of the LED strip using the Internet.  The MQTT messaging protocol seemed like a good fit, since it is fairly easy to use and lightweight, making it ideal for IoT devices like my lamp.  I decided to use Adafruit's IO service since it removes much of the hassle of manually implementing a MQTT setup. 

The LED strip has five states (not including "off") that it can switch to upon the ESP32 receiving a message from the Internet.  These states and the messages that trigger them are shown in the following diagram:
Diagram depicting the five states of the pyramid ship and how they are selected
I then modified a 3D model of a Pyramid ship to make room for the NeoPixel strip and the ESP32 board.
An image of the modified Pyramid ship 3D model
Once I had a model I was happy with, I created a (roughly) 1:1 foam board model of the Pyramid to test fit the components.
Foam board scale model
Finally, I 3D printed and painted the modified Pyramid ship model.  I secured the LED strip and ESP32 board in the model, then placed sanded strips of acrylic in the slots to diffuse the light and give the finished design a more polished appearance.  The completed lamp can be seen changing between patterns in the video below:
Finished Pyramid ship lamp changing to different states via the Internet, running off of wall power
WiFi-Controlled Pyramid Ship Lamp
Published:

Owner

WiFi-Controlled Pyramid Ship Lamp

Published: