Introduction: Kinetic Seven Segment Clock

About: BSEE with a focus in RF/Microwave engineering and Embedded Systems. Electronics hobbyist for over 15 years.
  • This Instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (www.makecourse.com)

This Instructable will not walk you through how to build this clock for yourself. I do not think that the state of this project should be replicated. The clock is currently in version 1 and requires multiple parts to be redesigned before it would be in a stable and consistent state. Instead I will go through some of my design process and talk about issues I ran into. This clock consists of 28 moving segments used to indicate the time. These segments descend into the clock body passing through a light field causing them to become illuminated.


Current Fabrication and Construction issues:

  • Planarity issues associates with warped wood.
  • Tolerance errors between gearbox, segments, and face plates. Errors cascade due to multiple 3D printed parts that are fastened together.
  • Inconsistent gear placement on the servos leads to a couple racks binding and segments getting stuck in an up or down position.
  • Some gearbox covers will not entirely fasten due to 3D hole printing tolerances.
  • Broken teeth on wood spur gears due to wood quality. All wood parts in this project is either oak ply wood or finishing board (birch?)

Software issues and missing features:

  • Gui is not fully fleshed out. I would like to add the ability to change the LED colors and even patterns. I would also like the ability to sync the clock to an atomic clock as well as handle time zones.
  • Plans to allow use of the Nucleo calendar and alarm functions.
  • There is an issue with the current software that requires a restart after powering up. The GUI currently handles this when the name of the clock is clicked.
  • Possible issue with the LED driver software that is not allow full realization of changing color patterns in the digits.
  • When setting the time, sometimes numbers that were not intended to change do randomly, possible data corruption in UART.

Electrical missing features:

  • Backup battery is not implemented but the pin headers are broken out for the battery. Once in place the internal clock should be able to keep running when mains power is removed.
  • Initially I intended to implement a rotary encoder to be used for setting the clock time, I would still like to implement this feature.

I fully intend to redesign this clock from the ground up but I do feel this was a great starting point as I had never pursued a project of this magnitude before.

Supplies

I am leaving out amounts and dimensions as no one should build this version of the clock.
Hardware (Box):

  • Wood...Lots of wood. I used oak plywood for the outside case. Finishing board was used for everything else you see that is wood.
  • Self tapping screws for the Mag Mounts, keep faceplates attached to box magnetically
  • Neodymium Magnets
  • Joining brackets for marrying the two part of the box together. Box had to be made in two parts to to size limitations of my CNC.
  • French Cleat Picture Hanger for mounting clock to the wall. I used a 75lb hanger.
  • Wood Glue and sand paper

Hardware (GearBox):

  • Nylon screws for fastening the gearbox parts together as well as fastening the gear boxes to the inside of the box.
  • Super glue for adhering the mounting feet to the base backing.
  • Metal bolts for fastening servos to gear box.
  • Metal screws for fastening rack attachment to wood segments.
  • I used oak plywood to cut out gears and racks, but these could be 3D printed as well. Wood gears were quieter than 3D printed parts.

Electronics:

  • STM32G474RE Nucleo Board
  • WeMos D1 ESP8266
  • SG90 Servos
  • 90W 5V Meanwell powersupply
  • PCA9685 PWM controller
  • WS2812B Addressable RGB LEDs
  • Lots of wire for connecting RGB LEDs and routing power to the controllers and microprocessors.
  • A custom wiring board was designed for breaking out the pins used on the Nucleo board, creating a UART link between the ESP8266 and the Nucleo, and providing a power rail for the LEDS and the microcontrollers.
  • IEC C14 mains power connector
  • USB B to USB micro extension

Step 1: Manufacturing and Assembly

During the Manufacturing process I went through several spools of PLA iterating through gear box design and tuning the print process at the same time. I also went through several sheets of wood as I had to cut the gears, racks, and segments numerous times. I learned a great deal about milling with the CNC during this project, specifically in relation to squaring, tramming, and keeping in consideration material thickness. I broke multiple endmills getting feeds and speeds tuned properly for my tools. I can only recommend that if you choose to use a CNC for a big project with lots of parts make sure you have run through a few smaller projects first so that you have a better idea of how to effectively use you tools. Don't be like me and fly by the seat of your pants.

KNOW YOUR TOOLS...WASTE LESS


Assembly was very straight forward once all the parts were manufactured, it was a matter of lining up fasteners with their respective holes. This biggest issue I ran into during assembly was the lack of foresight I had in my design related to assembly. At some points I found it difficult to assemble the entire clock by myself. Other times I found I had not left enough clearance between parts for my hands or tools. And I completely neglected any thought of wire/cable routing and management.
I also had significant mismatch between the segments and the face plates, which is why the segments are much smaller than the holes in the face plates. These discontinuities were cased by warping in both the wood of the box and warping in 3D parts. I also neglected to design a tight channel for the rack, so some racks are at slight angles both vertically and horizontally. This is why for version 2 I am going to completely redesign the actuation method for the segments; either a properly design rack and pinion or linear actuators. I also plan on setting up a better way to mount the actuation method in the clock body, as my current design permits slight rotation around the Z-axis of the gearboxes with only two screws fastening them to the clock.

Step 2: Electronics

Over all I am very confident in my electronics selection and integration. I would primarily focus on coming up with better cable routing and management in the future. The current PWB (printed wiring board) design works well and I have not run into any issues with the board. I would possible look at getting a power supply with a little more wattage capability as I can theoretically draw the maximum current (5V 18A) from the power supply if I was to illuminate all LEDs to max brightness ("White") and moved all the servos simultaneously. I currently have a small delay in my servo control functions so that each servo moves individually before the next one, to prevent this issue from occurring. For version 3 or 4 I would like to design a fully integrated PCB that has the ESP and STM32 processors on a single board so that I do not have to use dev boards. Designing this board would allow other makers to use the board as a starting point for building their own types of mechanical clocks.

Step 3: Controls and Software

As I stated in the first section, I would like to fully flesh out the control system of this clock it would be nice to add the following features:

  • Ability to sync with an Atomic Clock
  • Time zone selection
  • Calendar and Alarm capabilities utilized.
  • Alexa enabled
  • LED color control
  • LED and servo patterns for dynamic and novel transitions between minutes and hours. This would also require much better tolerances in the over all build quality.
  • Rotary encoder for ability to set time without a wireless connection.

There are probably other features that would be nice, but this is what I have written down for the time being. I also need to profile and optimize my code so that I can run the processor at a lower speed and increase efficiency.

For those interested the code base for both the Nucleo and ESP can be found on my github page.

Step 4: Conclusion

As I stated in the beginning, this instructable is not for those looking to build the current version of this clock, but more for me to get out some of the problems and insights I gained during the process of building this monstrosity. Overall I am proud of the build and I am glad that it actually works. I plan to post instructables related to future versions of this clock as well as other projects I come up with so please keep a look out.

If you have any words of advice, questions, suggestions for features I have not thought of, or just want to say hi, let me know in the comments below.

If you are a student at USF and have not taken the Make Course, I highly recommend that you do. Getting college credit to work on a project you enjoy is a win-win in my book

Step 5: Puppy Tax

Big thanks goes out to Atom (Sad boy), Eva (Grumble pup), and Astrea (Speed incarnate) for keeping me focused and on task while working on this project.