For a couple of years, I’ve had six nixie tubes in my workshop. I originally bought them off a Soviet surplus electronics dealer, as they’re not made anymore, so they can be considered antiques. I’ve always wanted to build a clock or some other number-displaying-device-thing out of them, but they have one problem: In order to make them glow, they require a voltage far higer than I’m equipped for and comfortable tinkering with – around 200V.


Right after I first engraved something into acrylic for edge-lighting, I thought about layering several of those engraves. My first idea was to create a full colour image by lighting three component channel images in red, green and blue. I haven’t tried that yet. My next thought was “Hey, if I stack ten numbers with individual LEDs…”, and the idea was born.

The thinnest acrylic I found was 2mm extruded, so I started my experiments with this. First attempts were put together with individual LEDs per slice, which meant controlling the display used a large number of data lines on the microcontroller. I started to work around this by using one or more 74HCT594 shift registers. This cut down on the required data lines: instead of ten data pins per display digit it only needed three (latch, data, clock) for potentially any number of digits, as the shift registers can be daisy-chained. It still meant a lot of soldering though…

…then I discovered WS2182B-LEDS. These come individually or – as pictured here – on strips. The LEDs each have their own IC that not only lets you turn them on or off individually, but also lets you set an individual colour per serially connected LED, all over just one data wire. I ordered a couple of meters from the Chinese electronics supplier of choice and ran into the next problem: The LEDs are spaced at about 4.5mm. I first experimented by laying the strip diagonally to have an effective horizontal spacing of 2mm, but that meant that the individual numbers would be too large to fit ten on a sheet of acrylic. In the end, I decided to space the numbers with an air gap between them so I could fit ten LEDs on the limited horizontal space I had. This meant more soldering again.

These are eight strips of five LEDs each soldered together to form a 40-LED unit, which I then glued into a laser cut MDF-frame which goes underneath the acrylic numbers. The display I’m building therefore has four numbers, which will work splendidly to display the time. It is intended as a proof of concept, but it might just as well serve a purpose as a desk clock.  If I had started the project from scratch today, I would have added a fifth stack with weather symbols (clouds, sun etc.) for additional display possibilities.

The next question was which microcontroller I would use for the display. As I’m using it as a clock, I first thought of an Arduino with an added RTC module to survive reboots. This would have made it necessary to add buttons to set the time, and I wanted to keep the project as clean as possible on the outside – ideally, just a cable for power. After some consideration, I decided to use an ESP8266 – as I’m using only one data line for all four numbers, an ESP-01 seemed to fit the bill. In the end, I decided on a NodeMCU-v3, as this has a built in USB connector and supplies 5V DC directly (the 3.3V of the ESP-01 is not enough to control the LEDs and I’m fresh out of level shifters). An added advantage of the ESP8266 over the Arduino is that I could program it in MicroPython, which I’m more comfortable in than the C-dialect of Arduino-boards. Also, the ESP8266 has a built in RTC, and its network stack allows getting the time from an NTP-server.

This is the final prototype - boxed into MDF, painted with black acrylic paint, and standing on my desk at work. Looking at it every day, I’m very much reminded that it is, after all, still a prototype. Here’s the things I want to change for the next model:


  1. The current model synchronises the time from my phone on startup - that’s it. As the real-time clock of the ESP8266 isn’t the most accurate (to put it mildly), I have to reboot the clock often to keep accurate time. I’ll have to introduce either a separate RTC, a regular synchronisation process or a way to manually trigger it.
  2. Currently, the colours of the numbers are fixed, with the minutes blinking between a slightly brighter and darker shade of orange. I’d like to introduce a way to have the colours defineable by time, so that I could, for example, set 12:00 to white and 13:00 to blue, with the coulour fading seamlessly between the two over the time in between.
  3. The only way to set the clock is currently to cycle it’s power supply while my mobile hotspot is on. A set of buttons to increase/decrease minutes and hours would be handy.
  4. While we’re on buttons: Four digits could also display a date, so a button to switch between time and date could also be implemented. To keep the design clean, an inductive touch panel inside the case would be nicer.
  5. The panels have an air-gap between them. At the moment, this isn’t too much of a problem, but once dust starts to gather between them it could be. The next iteration will probably be bigger and made out of 3mm acrylic, that should allow me to sandwich the panels without any gaps.

So, while I like the first prototype, I’m not in danger of running out of potential improvements quite yet. I’ve already had first requests to buy the clock, but before I get to that stage I’ll want a better model. Watch this space…

1 Comment
  • Walter Baumann (4 years ago)

    ist für mich auf der Moosegg sehr intressant! Liebe Grüsse Va