// -- Motivation --
I dislike waking up, and getting out of bed. I want to ease this process, and reduce the pain of facing reality every morning.
We have blackout paper on our bedroom windows. It's wonderful at night (dark and cave-like), but waking up is harder, since there's no natural light to push my sleep cycle into wakefulness. Let's fix that with 14 watts of LED light.
// -- Parts --
* RGBW LED strips, see: https://www.youtube.com/watch?v=UA7I9fEAMOk
* 4.2" e-Paper display with breakout: https://www.waveshare.com/wiki/4.2inch_e-Paper_Module
* Lolin32 (ESP32 microcontroller)
* `e-ink-clock` board by @romkey. He also improved my life by donating the Lolin32 and e-Paper display, without knowing what I would do with them. Thanks!! https://github.com/romkey/e-ink-clock
* 3D-printed base, and enclosure. The original parts were printed with a "natural"-color PLA. The LED heat caused the base to bend upwards, which seemed like an accident waiting to happen, so I remade the base using a "clear" PETG (higher heat tolerance).
* Spray paint: translucent black (from an auto parts store) for the jagged lines. Spray frost top coat.
// -- Design --
Mountains == reminder that there are things worth getting out of bed for, to experience and strive for.
The display was a self-imposed design challenge: create a monochrome look that elevates the e-Paper aesthetic. I'm completely satisfied with the result. The backgrounds are custom halftone patterns typed by hand (see: `HalftonePattern.h`). The geometric regions are Voronoi diagrams. Nodes are arranged in various patterns to produce interesting layouts, and a sense of motion.
Since individual LEDs aren't distinguishable, I'm using one LED animation with a functional purpose. The three mountains crossfade between different colors of bright green- and blue-ish light. This works pretty well. For me, the best moments of wakefulness seem to occur when a darker color fades into the brightest color (100% RGBW), a future version of the code will probably sequence the colors dark-light-dark-light-etc.
The ESP32 is configured as a webserver, I can access the clock from a browser, and set params: wake time, fade-in time, total wake duration, LED count.