A 3D printable, GitHub infused, WiFi enabled smart light powered by WLED and compatible with Home Assistant
To build the Octolamp, you'll need access to a 3D printer, soldering iron and the following components:
- Black PLA Filament (for the base) - [US] [UK]
- White PLA Filament (for the inner body and reflector) - [US] [UK]
- WS2812B LED Strip, 60 LEDs per meter, just under 2m worth but usually sold in spools of 5m - [US] [UK]
- ESP8266 NodeMCU D1 Mini Module (or similar clone or other WLED compatible device) - [US] [UK]
- USB lead (Micro or Type-C depending on the model of D1 Mini you have purchased, usually Micro-USB) [US] [UK]
If you are looking for recommended links to buy these somewhere locally then please see Purchasing Links below.
Assuming you already have the PLA filament and a spare USB lead, the construction cost for the electrical components works out at <$20 per lamp.
The lamp itself consists of 3 printable parts, printed in regular PLA on a printer with greater than a 210mmx210mm print bed (the popular Ender 3 or Prusa i3 should both work, this was tested with an Ender 3 S1)
All models are designed to be printed without supports. I used a 10% gyroid infill.
The 3 components are:
When constructed they snap-fit together as shown.
When you have assembled your 3d printed parts you can begin contruction.
First, you'll want to flash your D1 Mini device with WLED and then configure it to connect to your WiFi network. the WLED project is an open source firmware for many embedded devices that allow you to create beautiful LED displays and network them together. There are controller apps for iOS and Android and it is also fully compatible with the popular Home Assistant software meaning that once built you can control your lamp from anywhere and build any number of automations so that it flashes when someone stars your GitHub repo, changes color when your build breaks or switches on and off with your office lights.
Note that for large LED displays you can need significant power, you'll also likely want a controller that has a level shifter to send a reliable 5v signal for data to your LED strip. However as we're only powering 100 or so LEDs you can get away with pulling the power and data directly from the pins of an inexpensive D1 Mini.
The quickest and easiest way to install WLED on your D1 Mini is to plug it into the USB socket on your computer and then visit the WLED web installer site.
Flash the device with the latest build of WLED, configure the device to connect to your WiFi network and then you are ready to go.
The White Inner component acts as the guide for the flexible LED strip as well as the diffuser for the lights which are stuck to the side. You only need the +5v, G and Data pins so snip off any additional power lines that might come with your strip or solder on new wires to the strip if yours didn't come with pre-soldered wires. Remove the plastic from the adhesive backing and start sticking at the bottom middle, looping around the outside then over to the inside and finally around the central part. Cut at the marked lines when you are finally done. Depending on your LED strip, the central part may require some additional adhesive, such as PLA friendly glue, to remain in place due to the reverse bend going from Octocat's body to head.
When finished you should have around 100 LEDs in your lamp, but it's worth counting at this point as you'll need the exact number later (depending how I did my sticking I've used anything from 99 to 105)
Next, feed the wires through the hole in the reflector. If you are using plugs to connect your strip and controller then you can do this at any time but if you are soldering the strip directly to the controller then you need to do it now.
Rather than use plugs, I solder my strip directly to my D1 Mini, but you can use connectors if you wish. Connect the +5v and G lines to the corresponding pins on the D1 Mini and the data line to D4 (just above the +5v and G pins).
Next up, feed your USB lead through the back of the black outer body and connect it to your D1 Mini. Place the D1 Mini in the small inlaid portion in the center of the lamp. Then drop in the reflector and finally place the white inner onto it, and snap fit into the black outer body. This should force the white reflector down which then also secures the electronics in place. Power up your device and at this point about half of your LEDs should be glowing orange.
All the rest of the configuration is configuring WLED for your device. Connect using the IP address from installation time, then go to Config, LED Preferences and update the Length of the LED strip to be the number of LEDs you installed in Step 2 (for me that's typically between 99 - 105). When you press Save the rest of your LEDs should be glowing orange.
You can now configure your light display with the amazing flexibility of WLED. Once you have your favorite setting, store it as a preset and then go back to the LED Preferences and scroll down to Defaults where you can set which preset it displayed when the lamp is powered on (i.e. Preset 1 instead of the default orange in Preset 0)
That's it! You are now done but I'd love to see pictures of your built and assembled lamps. Feel free to share pictures of them in discussions here or on social media and tag me on them [email protected] on Mastodon or @martinwoodward on Twitter and other socials
I've tried to make the model super flexible so it includes ways to mount the lamp to a wall and different USB cable routing options.
The copyright for the invertocat logo belongs to GitHub. For acceptable use of that logo see the GitHub logo usage guidelines.
The fun part of this project is making it yourself, the lamp isn't officially sold pre-assembled (and the license is non-commercial use only so they shouldn't be doing that). But if you want to buy the components to make this them then the following components have been used and recommended by community members. Note some of these links make use of affiliate programs but they should always be linking to components the community trust.
- Black PLA Filament (for the base)
- White PLA Filament (for the inner body and reflector)
- WS2812B LED Strip, 60 LEDs per meter, just under 2m worth but usually sold in spools of 5m
- ESP8266 NodeMCU D1 Mini Module (or similar clone or other WLED compatible device)
- Ender 3 S1 3D Printer
- Black PLA Filament (for the base)
- White PLA Filament (for the inner body and reflector)
- WS2812B LED Strip, 60 LEDs per meter, just under 2m worth but usually sold in spools of 5m
- ESP8266 NodeMCU D1 Mini Module (or similar clone or other WLED compatible device)
- Ender 3 S1 3D Printer
- WS2812B LED Strip, 60 LEDs per meter, just under 2m worth but usually sold in spools of 5m
- ESP8266 NodeMCU D1 Mini Module (or similar clone or other WLED compatible device)
- WS2812B LED Strip, 60 LEDs per meter contains 2m, with 120 LEDs with connectors installed at ends and wires with connector for soldering to board
- ESP8266 Wi-Fi D1 Mini Module or similar clone or other WLED compatible device. Note: This option has pre-installed IO header strips so some desoldering may be required
Instructions: https://github.com/martinwoodward/octolamp