Main Content

MCU-Driven Art
In North America, most radio-controlled clocks use WWVB’s transmissions to set the correct time. WWVB is a Colorado-based time signal radio station. Learn how these two Cornell students designed and built a prototype of a Digital WWVB Clock. The project’s main components include a Microchip PIC32 MCU, an external oscillator and a display.

In this article we explain how we designed and built a prototype of a Digital WWVB Clock, based on the design of the building at 200 Water Street in Lower Manhattan (Figure 1). Jason has always wanted to pay homage to this clock, as he finds the design inspiring. In this, our final project at Cornell, we were determined to utilize the same design to create a functional piece of technology that adds color, vibrancy and time to any room.

Making a clock requires a time base, a control circuit and a display. We implemented the time base and control on a Microchip PIC32MX250F128B microcontroller (MCU), using a development board built at Cornell University [1]. The clock has an external oscillator keeping time with an accuracy of ±1 minute per year, and a WWVB receiver for setting the time whenever the signal can be received. Time is displayed on a panel in front of 72 Adafruit DotStar LEDs. The clock takes input from three push buttons that select the mode of operation: Time, Date and Temperature. Additionally, because the project was inspired by a piece of visual art, we put extra effort into making it aesthetically pleasing, using wood instead of cardboard, and by eliminating the leakage of light between the LEDs by creating an individual housing for each one. Figure 2 shows the full electrical schematic of the clock and peripheral devices.

THE CLOCK BODY
We built the housing out of a combination of plywood sheets and softwood planks. The front panel was a piece of quarter inch plywood that was laser-cut at Cornell Rapid Prototyping Lab (RPL) [2] to represent the numbers. It was later drilled from the front and the back to install the buttons. The back face was a piece of quarter inch plywood that was drilled in the back for the ventilation of the power supply. The sides of the frame were 0.5” thick pieces of softwood, drilled on the bottom to hold the power supply in place, and on the left for the 120 VAC cord path.

We also secured the AC cord—consisting of line, neutral and ground cables—with zip-ties on either side of the left wall. We did this to ensure that if it were pulled, it wouldn’t come out of the power supply—which would cause electrical damage and endanger the user. We hot-glued the LED strips to the back face. To create a housing for each separate LED light and prevent light from leaking into other numbers, six long horizontal ribs were made out of quarter inch plywood and cut on a band-saw to fit into the box. Sixty-six short vertical ribs were laser-cut from pieces of leftover quarter inch plywood. The ribs were fitted to house the lights and hot-glued in place (Figure 3).

THE LEDS
We chose DotStar LED strips for their brilliant and vibrant colors. They had the added benefits of being easy to program and having good documentation, though they were somewhat costly. We chose strips that had 30 LEDs per meter, to space-out each LED in its own box. The DotStars support 8-bit RGB color, which allowed us extreme flexibility for color choice. Their implementation was complicated, as we had to solder them with short wires, based on research of the possible problems associated with using longer wires between cut strips.

We had the clock numbers displayed on the face of the clock ordered from left to right, top to bottom, wrapping around from the right end of one row to begin at the left end of the next (Table 1, red). However, we couldn’t have long wires stretching across the face, so we wrapped the LED strip in a “snake” pattern around the box, (Table 1, blue). Another good reason to use the DotStars was for their simple and reliable communication protocol via SPI. DotStars require 5 V power and 5 V command signals. Powering them was not an issue, because all our other components also used 5 V. To drive them from the PIC32 MCU, we used a voltage level translator to convert the 3.3 V PIC32 MCU signals to 5 V.”

Link to article