Initial design ideas

A project log for Colorb

Geodesic RGB hemisphere helping me wake up fresh

programagorprogramagor 06/25/2021 at 01:220 Comments

Let's create something simple, that I could actually feasibly make, without delving into the long and daunting journey of full on product design. I have a rough idea of what it is that I want: a thingamabob that will simulate the sunrise sequence, to help me wake up fresh.

To put it in more concrete terms, I require:

I know I can simply buy one of many off-the-shelf products that do this exact thing, but where would be the fun in that?

The configurability I decided to tackle by slapping a Raspberry Pi W in there, because I have many of those lying around, waiting for their moment to shine (in this case, quite literally); and because these days I'm already comfortable spinning up servers and databases on Linux and writing web apps in Django, rather than having to figure out something like ESP32 or AVR+WiFi/Bluetooth from scratch (maybe for another project?). Eventually I will need to actually come up with the app once I have the whole thing assembled, but for now I will focus on the hardware side.

To get the omnidirectionality, I debated whether to go for a flat design with a lens or a diffuser in front of it, or whether something like a geodesic dome design would look better. I decided to go with the geodesic dome design, with LEDs on each facet, because that way it can illuminate all the walls in my bedroom more or less equally, and simply because I think it looks cooler.

Various Frequency 2 Geodesic Domes
Various Frequency 2 Geodesic Domes

Colour changing can be achieved through more than one way.

I could get simple RGB LEDs and drive them with some external circuitry, but I figured that would raise the component count by quite a bit. So instead I decided to use these fancy RGB LEDs with inbuilt drivers. This means that all I need to do is hook them up to +5V, and feed them serial data. You have probably heard of the WS2812-powered NeoPixels. And you have probably learnt that communicating with those is non-trivial, because of their sensitivity to timing. They have no clock line, so the timing on the data line needs to be quite tight, or they won't understand what's being told.

Excerpt from the WS2812 Datasheet, showing timing requirements on the data line
Excerpt from the WS2812 Datasheet, showing timing requirements on the data line

There are other RGB LEDs too, though, some of which use a different communication protocol. The APA102-powered DotStars have a data line AND a clock line, meaning that they are not as sensitive to timing, making them much easier to talk with, especially using a device where I don't have control over individual instruction cycles (e.g. Raspberry Pi).

Excerpt from the APA102 Datasheet, explaining the SPI communication protocol
Excerpt from the APA102 Datasheet, explaining the SPI communication protocol

I can find these LEDs in two sizes: 5050 (5 mm x 5 mm) and 2020 (2 mm x 2 mm) packages. I haven't spotted any electrical differences, so naturally I'm going with the smaller one, since it's going to be reflow soldered anyway.


I decided to create a Geodesic Dome design, where each facet will carry one or more 2x2mm APA102 RGB LEDs (DotStar), with the brain being Raspberry Pi Zero W. Details will be worked out in the next update.