Software apps and online services
Hand tools and fabrication machines
This project was inspired by Fran Blanche’s NIMO Tube video. It’s a fascinating video and I recommend watching it for detailed information on NIMO tube operation and history. In short, the NIMO tube was a single digit CRT display manufactured for a brief period in the late 1960’s and early 1970’s. After watching Fran’s video I really wanted to build a NIMO tube clock. Unfortunately, NIMO tubes are practically unobtainium these days. Even if you could get ahold of some they required a complex high voltage power supply to operate. I quickly abandoned the idea of a vintage NIMO clock and started looking at replicating the NIMO look with modern parts.
My design uses six 1.44-inch TFT LCD displays to display NIMO-style digits. These small LCD displays are cheap (around $3.50 US each) and use the ST7735 chipset and SPI bus. To drive the displays I’m using the Adafruit Metro M4. I found that a traditional ATmega328 based board wasn’t fast enough to update the displays once per second and didn’t have enough memory to store all the digits. The Metro M4 is fast, has plenty of memory and is compatible with the Adafruit ST7735 library.
I wanted to try to replicated the phosphorus CRT glow so I replaced the fairly dim white LED backlights of the LCDs with 16 WS2812B (NeoPixel) RGB LEDs. The digits are displayed on the LCDs as white characters on a dark background. The color is provided by the NeoPixel backlights. Finally, I used plano-convex lenses (LED flashlight condenser lenses) placed directly in front of the LCDs to create a tube-like appearance.
There are several different versions of these 1.44” LCD displays available on eBay and AliExpress. I recommend using the photos above (Figs 1-3) to identify the correct version when shopping for displays. If you are unable to find the exact version you may need to modify the 3D-printed parts to fit your displays. More on this in Step 3.
The most important factor when choosing the displays is that they use the ST7735chipset. This project uses the Adafruit ST7735 library to write bitmap images to the displays. When ordering displays it is vital to confirm that they use the ST7735 chipset. It is possible to find displays that look identical but use a different chipset and are therefor not suitable for this project.
I recommend purchasing a few extra displays in case of damage or failure. I ordered ten from eBay and ended up with seven that were usable for this project. One was nonfunctional and two had the wrong chipset.
In order to use RGB LEDs to backlight the LCD the LCD must be separated from its circuit board. Very carefully slide a utility knife blade between the LCD and circuit board (Fig 4) to cut through the adhesive holding the two together. Take care not to damage the delicate flex cable or your fingers. Repeat on the other side (Fig 5).
Remove the reflective backing on the circuit board (Fig 6 & 7) by peeling it back with your utility knife (Fig 8). Use a finger nail or the corner of a plastic card to remove the adhesive (Fig 9) taking care not to damage the circuit board.
My LCD displays have an LED pin but it doesn’t seem to be connected to the LED backlight. In order to disable the LED backlight I had to cut the two leads (Fig 10) connecting the LED to the circuit board. If your displays have a functional LED pin you can skip this step and simply leave the LED pin disconnected. Take care not to damage the flex cable when cutting the LED leads. You should now be able to carefully fold the LCD back from the circuit board (Fig 11). Repeat for the other five displays and set aside.
The LCDs, lenses and LEDs are held in the correct orientation by a 3D-printed holder (Fig 12). Each modular holder houses two LCDs, lenses and LED boards. To build a six digit clock you will need three holders. There is also a lid for each holder that is printed separately. M3 size heated inserts are used to provide mounting points for the lid and for panel mounting the holder.
The holders are printed with the LCD slot and lens ring facing up (Fig 13). Printing in this orientation helps to ensure the dimensional accuracy of the critical parts of the holders and provides a good finish on the most visible surfaces. I used 1.75mm PLA filament with a 0.2mm layer height, 0.8mm wall thickness and 60% infill with support. The same settings are used for the lid but support is not needed.
Once the holders are printed the support material can be removed (Figs 15-18). Needle nose pliers can be used to help remove most of the material. A stiff piece of wire or a tool such as a lock pick can help remove the material from the LCD slot. The LCD slot requires particular attention when removing the support material as even a small amount of material will make it very difficult to slide the LCD into the slot.
The holders were modeled in Autodesk Fusion 360. The Fusion 360 files are included and can be modified as needed. It may be necessary to change the dimensions of the LCD slots if different LCDs are used.
The M3 inserts are installed using a special soldering iron tip (Fig 20). The beveled end of the insert is placed in the hole and the tip is inserted into the threaded hole of the insert (Figs 21 & 22). Apply light pressure to the insert as the heat from the tip melts the surrounding plastic. Insure that the insert is flush with the surface of the part (Fig 23). A tip temperature of 200 degrees C is sufficient for PLA.
The WS2812B RGB LED (NeoPixel) backlights are wired as shown in the above Fritzing circuit diagram (Fig 24). The NeoPixels are controlled using an Arduino Pro Mini board due to a shortage of pins on the Metro M4. The Pro Mini could be substituted with a Nano, Uno or most any Arduino board that is comparable with the Adafruit NeoPixel library. The NeoPixels require a well regulated 5V supply to operate and should not be connected to a standard “wall wart” as these are typically unregulated. In this case, they share the same 5V supply used to power the rest of the project. To further protect the NeoPixels from voltage spikes a 1000uF electrolytic capacitor (C3) is placed across the 5V input.
The LED boards are wired in pairs (Fig 25). Each pair has it’s own power connector to avoid excessive voltage drop across multiple modules. An approximately 12cm (5 in) power cable with JST connector is soldered to the power connections on one of the LED boards. Short jumpers are used to provide power to the other board (Fig 26).
The NeoPixel data signal must be wired in series across all six boards as shown in the circuit diagram (Fig 24). A short jumper wire is used to connect the Data Out and Data In connections of each pair of boards. Jumper wires with Dupont connectors are used to connect the Data Out and Data In connections of the three pairs together. This allows the LCD holder modules to be disconnected from each other without having to remove the LED boards. The Data In connection of the first board is wired to a pin on the Arduino through a 470 Ohm resistor (R1).
The LED boards used in this project have a small tab on one side of the board. This tab fits into a slot in the 3D-printed holder. This was found to provide sufficient support for the board. If you are unable to find the boards with the tab or find that the boards are too loose a couple of small globs of hot glue could be used to secure the boards to the holder.
The LCDs and the DS3231 Real Time Clock (RTC) module are connected to the Metro M4 as shown in the above Fritzing circuit diagram (Fig 27). The LCDs require 3.3V DC to operate rather than the 5V DC used to power the rest of the project. This 3.3V DC supply is provided by a simple circuit consisting of a 3.3V regulator (LD1117V33), 100nF ceramic capacitor (C1) and 10 uF electrolytic capacitor (C2).
In order to simplify the various connections and enhance the reliability of the clock a power/interface board (Fig 28) was constructed. I used a 5cm X 7cm proto board with solder pads on both sides. Standard 2.54mm (0.1 in) female headers were cut down to create three 2x7 pin connectors, one for each LCD module. A 2x9 pin connector provides the CS (Chip Select), RST (Reset) and A0/DC (Data Command) connections to the Metro. A separate 2 pin connector provides the SDA (MOSI) and SCK (Clock) connections to the Metro. The MOSI and Clock pins of all six LCD displays are connected to these pins.
The 3.3V regulator and C1/C2 are also mounted on the power/interface board. I used screw terminals to connect the 5V DC supply to the board. In some cases, it may be more convenient to simply solder the power wires directly to the board. Power and data connections between the connectors are made with short jumper wires and bridged solder connections on the back of the board (Fig 29).
The LCD circuit boards are mounted in the LCD/lens holders with the pins pointing downward. I used 3cm X 7 cm proto boards to make right angle adapters (Fig 30) for each module. A piece of female header is soldered along one edge of the board. Right angle male headers are soldered next to the female header pins corresponding to the pins on the LCDs. The solder connections are bridged on the back of the board (Fig 31). Be sure to double check that the position of the right angle header pins is correct before soldering them in, it’s easy to get them one pin off.
The connections between the power/interface board and the LCDs are made with 30cm (12 in) male to female Dupont jumpers (Fig 32). To make the connections easier I removed the single pin Dupont connectors and substituted two 7 pin connectors on the LCD end and one 2x7 pin connector on the board end. It is also possible to purchases the jumpers without the connectors installed. The connections between the power/interface board and the Metro M4 are made with male to male Dupont jumpers. Note that 8 pin right angle headers were used on the right angle adapter boards in the photos. The LED pin on the LCDs is not used so that pin is not connected (Fig 33). Double check that the pinout of the LCDs matches the wiring of your cables before proceeding to the next step.
The RTC is connected to the Metro M4 using male to female Dupont jumpers. The RTC uses the I2C bus to communicate with the Metro and is powered by the 3.3V and ground pins on the Metro.
Place one of the 28mm condenser lenses in each of the lens sockets of the LCD holder (Fig 34). The lenses should fit snugly but it may be necessary to keep the front of the holder facing down until the LCDs are installed to keep the lenses from falling out. Check the inside of the lenses and the front of the LCDs for dust. Remove dust with a microfiber cloth before proceeding. A few stray dust particles should not be visible when the clock is operating.
Slide an LCD into the LCD slot (Fig 35). Ensure that the front of the LCD is facing the lens. Avoid excessive force when inserting the LCD; the LCD should fit snugly but not so tight that it can’t be removed. It may be necessary to remove stray support material from the slot if the LCD won’t go in. The bottom of the LCD should be flush with the bottom of the holder (Fig 36). Repeat for the second LCD (Fig 37).
Slide a piece of plastic or cardboard into the slot in the bottom of the holder (Fig 38). This piece supports the LCD boards and helps prevent damage to the flex cables connecting the boards and the LCDs. Small pieces of tape can be used to hold this piece in place during testing and hot glue can be used for a semi-permeant solution.
Line up the pins on the right angle adapter board with the pins on the LCD boards (Fig 39). Double check that the pins are in the correct position and plug the LCDs into the adapter board (Fig 40).
Install the LED boards in the holder using the slots in the bottom of the holder (Fig 41). If the tabs on the boards won’t fit in the slots it may be necessary to remove additional support material from the slots. If your LED boards don’t have tabs or fit loosely a couple of small globs of hot glue could be used to secure the boards to the holder. Install the holder lid (Fig 42) with M3 screws.
Repeat for the other two holders.
Connect the LCD wiring harnesses to the power/interface board and connect the power/interface board to the Metro M4. Connect the RTC to the Metro M4. Connect the Data In connector of the first LED board to pin 10 of the Arduino Pro Mini through a 470 Ohm resistor. Double check that all connections match the circuit diagram. See the above photo (Fig 44) for reference.
Power for the project is provided by a 5V DC 10A switch mode power supply (Fig 45) from Adafruit. The 96 NeoPixels can draw almost 6A if run at maximum brightness. A 10A power supply is recommended for continuous operation. Adafruit power supplies are known to provide a well regulated 5V output. If another supply is used it should be tested to ensure the output voltage is regulated.
The 5V DC power supply is fitted with a standard 2.1mm male DC plug. I used a female 2.1mm socket with screw terminals to connect the power supply to the project wiring. A panel mount socket could also be used. The 1000uF electrolytic capacitor (C3) is connected across the power socket to protect the NeoPixels as recommended by Adafruit.
I made a power distribution board (Figs 46 & 47) to provide power connections for the LCD modules and Metro M4. The LCD power wires with JST connectors are connected to this board. A short wire with JST connector is used power the Metro M4 on the VIN and GND pins. The power distribution board, power/interface board and Arduino Pro Mini are connected to the power socket (Fig 44).
The current version of the software provides a basic clock display without any user interface. The code assumes the DS3231 RTC has been set by the user to the desired time zone, no provision is made for DST offset. Instructions are included in the NIMO_Clock sketch for setting the RTC. The RTC uses a 24 hour clock; the clock display can be set for 12 or 24 hours by making a small change in the code.
The NIMO_Clock sketch should be uploaded to the Metro M4. The NIMO_Clock sketch directory includes the “nimo_digits.h” file. This file contains the bitmaps of the NIMO style digits and must be kept in the same directory with the sketch file (.ino). The digit bitmap code was generated with image2cpp.
The NIMO_backlight sketch should be uploaded to the Arduino Pro Mini. This is a very simple sketch that sets the color of the NeoPixels and turns them on when the clock is powered on.
The NIMO_Clock sketch requires the installation of several libraries. Links to these libraries are included in the sketch file. If you are having trouble compiling the sketch please check that updated versions of all libraries are installed. Even if you have some or all of the libraries installed they may need to be updated to be compatible with the Metro M4. Version 1.8.5 of the Arduino IDE was used to write all sketches.
If this is your first project using the Metro M4 you will need to install Arduino IDE support for this board. The Adafruit Metro M4 learning guide has instructions.
The completed clock is shown in a temporary case. Future plans include construction of a plastic or metal case and the addition of one or more switches to control various functions. The LCD modules (see Step 3) were designed with threaded inserts for panel mounting.
Adafruit has indicated that a Mega form factor board based on the SAMD51 (M4) processor will be available in late 2018 or early 2019. I expect to switch this project to that board when it become available.