Wafer Frame

An edge-lit frame with silicon wafers on display, using NTP time to control brightness

Similar projects worth following
The Wafer Frame is a simple decorative project. Displaying two 6" wafers (and eventually an 8" wafer in the center) is a simple 'floating' frame from Michaels, to which I added 2 meters of DotStar LED strip to, at 30 LEDs/meter.

The code to run the display is fairly simple, and is implemented in Lua using NodeMCU and an Adafruit Huzzah. The code waits for WiFi to connect and then sets its RTC based on NTP time (synchronizing to The Lua code also connects to an MQTT broker that it uses to get control information for the current mode and an optional maximum brightness. The display has 8 modes ranging from a generic 'rainbow' effect to a party mode, 2 LED chaser modes, or seasonal fare such as christmas lights.

octet-stream - 415.60 kB - 06/15/2016 at 22:09


  • 2 × DotStar LED Strip 1M 30 LEDs per Meter
  • 1 × Adafruit Huzzah
  • 1 × 2.1mm OD Barrel Jack
  • 1 × Picture Frame from Michaels, and severely overpriced
  • 1 × 5V 5A Power Supply

View all 6 components

  • New Code

    Sukasa01/10/2017 at 22:48 0 comments

    Came back and revisited this project more, recently. I wasn't happy with some of the code quality and as it was my first ESP / NodeMCU Lua project some of the programming strategies were... questionable, at best. So, having learned a few things from other code I'd written for this device I chose to redo the code, utilizing the proper event systems present in the firmware and also to redesign the code to use Overlays, so that I wouldn't need to worry about one mode's memory use clobbering another's.

    I also took the opportunity to remove NTP time support from the program. While a nice feature and one I did appreciate, I see no reason why I couldn't just set that up running on Home Assistant or some other automation software, and make it a smarter system than a fixed uneditable value anyways. And the extra RAM it would free up (even if it wasn't much) wouldn't hurt either. The new code is now far, far simpler and didn't need to be "minified" or even compiled, for everything to fit nicely and run without a problem. And I've nearly doubled the number of modes that the frame can run, to boot!

    Overall I'm quite happy with the quality of the new code and its capabilities, and while I have one or two additions in mind (telnet support being one of them), the new code is definitely working out great.

  • On Memory Limits...

    Sukasa06/11/2016 at 15:29 0 comments

    NodeMCU is great, and it really did make this project an absolute joy to work on - having built-in MQTT, SNTP, RTC, etc code really made for a very convenient coding environment. Oh course, with convenience come caveats, and in this case the caveats include extremely limited memory space.

    After spending time on programming and hitting more and more memory limits, I've noticed that you really cannot do anything complex with NodeMCU (the ESP just doesn't have enough RAM), and this application alone very nearly exhausts the available memory. I already have had to compile the bulk of the program code down to an .lc file with the debugging symbols removed, and will likely have to do so again with the modes programming should I wish to add additional capabilities to the project in future.

View all 2 project logs

  • 1
    Step 1

    Flash the NodeMCU firmware available on this project page to the ESP8266.

  • 2
    Step 2

    Upload WaferFrame.lua, Modes.lua, and MQTT.lua. Adjust configuration values in files as necessary

  • 3
    Step 3

    Run the command node.compile("WaferFrame.lua")

View all 7 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

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