Annual Clock: Experience Time on a Wider Scale!

by mst8k in Circuits > Arduino

1906 Views, 24 Favorites, 0 Comments

Annual Clock: Experience Time on a Wider Scale!

4 Seasons.00_00_00_00.Still001.png
4 Seasons.00_00_06_06.Still002.png
4 Seasons.00_00_12_18.Still003.png

See time from a broader perspective with this 3D Printed annual clock. Experience the progression of the year as it updates incrementally, moving less than 1 degree each day. This timepiece allows you to visualize the subtle passage of time and can be customized to match any circular annual graphic, whether it's a solar (solstice/equinox) or month-based calendar.

Powered by an ESP32, this clock syncs automatically via WiFi with internet clocks, ensuring precise timekeeping. It allows you to configure the orientation based on your preference. This versatile design provides a personalized and accurate yearly timekeeping experience.


Inspiration


I once heard that ideas are as original as the sources are distant, and this is not too far from the truth. Almost a decade ago I found a project on Kickstarter that was very affordable and ambitious. It sold out which was great, but this also drove up the price on the non-Kickstarter version--almost $900 now. You can buy this now from The Present shop. It's definitely worth the price as it runs on batteries, has mechanical gears, and looks amazing! This comes with its own limitations, which is why I wanted to add to these features to this version:

  • Customizable Zero-Point - Allows you to use either a traditional calendar or solar calendar. This also allows easy support of either the northern or southern hemisphere, and you can change it if you move!
  • User-Generated Background - Create your own background to be as literal or abstract as you want to be.
  • 3D Printable - Take advantage of the wide variety of materials and post-processing techniques to get the exact color and finish to match your decor.
  • DIY - Building stuff is fun and rewarding! Having a project that lets you use your skills is a huge plus!
  • Affordable - If an awesome clock is in the woods and nobody is around to enjoy it, does it really matter? Making it accessible lets more people enjoy it and experience this new way to see time pass.


License


Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International

This license requires that reusers give credit to the creator. It allows reusers to distribute, remix, adapt, and build upon the material in any medium or format, for noncommercial purposes only. If others modify or adapt the material, they must license the modified material under identical terms.

Supplies

Parts - 3D Printed.png
Parts - Electronics.png
Parts - Hardware.png

Print Files

Parts.png
Support Prints.png

Please visit Printables and download all the files for the project. Print with your favorite colors and within minimal post-production.

Organic/tree supports are ideal for the two areas in the core part that have a bridge--please review the blue arrows in the above graphic.

Review Wiring Diagram

FUBP66JLX8ZH67H.png

Please review the wiring diagram and refer to this in any subsequent steps.

Connect Wires to Photo Interrupter Sensor

Video Screenshots.00_03_51_22.Still021.png
Video Screenshots.00_04_46_27.Still022.png

Attach the dupont cables to the photo interrupter sensor based on the wiring diagram and this photo

Attach Photo Interrupter Sensor to Clock Body

Video Screenshots.00_04_54_02.Still023.png
Video Screenshots.00_05_02_10.Still024.png
Video Screenshots.00_05_13_22.Still025.png
Video Screenshots.00_05_19_01.Still026.png
Video Screenshots.00_05_38_18.Still027.png
Video Screenshots.00_06_16_29.Still029.png
Video Screenshots.00_07_04_18.Still031.png

Place the photo interrupter sensor in the direction shown and secure the smaller hole with one (1) self-tapping M1.7 x 8 screw and the larger hole with one (1) M3 x 10 tapered screw and one (1) M3 nut.

Attach Base to Clock Body

Video Screenshots.00_08_11_18.Still032.png
Video Screenshots.00_09_51_05.Still033.png
Video Screenshots.00_10_31_26.Still019.png

Slide the base over the sensor into place. Using two (2) pairs of M3 x 10 tapered screws and M3 nuts, attach the core to the base.

Mount Stepper Motor to Clock Body

Video Screenshots.00_10_57_22.Still037.png
Video Screenshots.00_12_05_25.Still038.png
Video Screenshots.00_13_49_19.Still039.png
Video Screenshots.00_14_19_12.Still040.png

Using two (2) M3 x 10 tapered screws and nuts, attach the stepper motor to the clock body. The motor must be flush inside the cutout or the arm will not line up correctly to the sensor.

Attach Arm

Video Screenshots.00_14_32_00.Still041.png

Slide the arm inside the clock body and then press fit the clock arm into the shaft of the stepper motor. If your print is too large/small, adjust your print in +/- 1% increments until it's just right. You will need to remove this for future steps and to change the background, so it should be snug, but not impossible to remove.

Center Arm Inside Photo Interrupter Sensor

Video Screenshots.00_17_20_18.Still043.png
Video Screenshots.00_17_33_10.Still042.png

Rotate the arm manually until it is between the U shaped opening of the photo interrupter sensor and does not touch either side. You can move it up and down manually and if your arm is printed with the correct tightness, it shouldn't move out of position.


Mount Dev Board to Breakout Board

Video Screenshots.00_18_19_11.Still044.png
Video Screenshots.00_18_24_04.Still045.png
Video Screenshots.00_18_42_17.Still046.png
Video Screenshots.00_18_49_11.Still047.png

The ESP32 Dev Kit should be placed into the breakout board. Please take care to line up the pins into the receiving sockets. Also make sure that the it is rotated correctly and the labels of the pins on the ESP32 match up with the labels on the breakout board. For example, make sure the VIN pin on the ESP32 is in the same corner as the VIN on the breakout board.

Connect Sensor to Breakout Board

Video Screenshots.00_18_56_12.Still048.png
Video Screenshots.00_19_17_08.Still049.png
Video Screenshots.00_19_26_28.Still050.png
Video Screenshots.00_19_35_02.Still051.png
Video Screenshots.00_19_53_18.Still053.png

Following the wiring diagram, connect three (3) dupont cables to the breakout board. Secure them with a small screwdriver, but do not over-tighten.

Connect Motor to Stepper Driver

Video Screenshots.00_20_10_13.Still095.png
Video Screenshots.00_20_22_10.Still055.png
Video Screenshots.00_21_36_23.Still056.png
Video Screenshots.00_22_08_06.Still057.png

Connect the wiring bundle from the motor to the board and snap into place. Then following the wiring diagram, connect six (6) dupont cables to the stepper driver. Pay careful attention to the pin order.

Connect Stepper Driver to Breakout Board

Video Screenshots.00_22_54_16.Still058.png
Video Screenshots.00_24_06_02.Still059.png
Video Screenshots.00_25_43_16.Still060.png

Connect the six (6) wires from the stepper driver to the breakout board following the wiring instructions

Confirm Board Wiring

Annual Clock Wiring Diagram.png

Check all connections match the wiring diagram. Confirm all connections are firm, but not too tight.

Install and Configure Arduino Software

Follow the directions supplied by the board in the attached PDF to download and configure the software for uploading your code.

Add Libraries

Library - NTP.png
Library - AccelStepper.png

There's some great and reliable code libraries that need to be installed.

  1. Click on the Libraries icon
  2. Type the name of the following libraries and then click Install:
  3. NTPClient
  4. AccelStepper

Download Code Files

Extract to Folder.png

Download the most up-to-date release from GitHub and extract the compressed file into a folder called Annual_Clock.

Configure Wifi File

Tab Switch to Wifi.png
Wifi.png
  1. Open the Annual_Clock.ino file. It will open two tabs.
  2. Select the second tab called wifi_credentials.h
  3. Update the CHANGE_ME for the SSID* and password
  4. Save the file.


*Please note that the SSID is case-sensitive, so doublecheck it before saving.

Configure Zero Point Date

Tab Switch to Project.png
ZeroPoint.png

Now, switch back to the Annual Clock tab. The main variable to confirm for your project is zeroPointDateTime. This date is used to tell the clock what date to use when the arm reaches the 6-o'clock position (straight down). The default is December 21st to align with the winter solstice for the northern hemisphere. This puts the summer solstice at the 12-o'clock position which is how our background graphic is designed.

Please keep this date and time in ISO format (don't forget the T that separates the date and hour!). You can set the time as well, but since it changes a bit each year and that at most you'd be 0.5 degrees off, it's probably precise enough for most projects.

Upload Code and Run Electronics Test

Video Screenshots.00_26_41_22.Still061.png
Upload.png

Before securing the electronics to the clock, we're going to run a test of all connected parts.

  1. Plug in the board via USB to your computer
  2. Click the ➡️button to verify and upload button the code

The program should connect to wifi, find the time, then move the arm in search of the photo interrupter sensor. If it does not move, confirm your wifi is connected and that it has access to the internet.


Note: As long as it has power, the arm will still advance at ~1-degree per day even without an internet connection. So as a complete backup, you can set the approximate location of the arm and then just leave it. It will advance at the correct pace, even without internet access.

Attach Driver Standoffs to Clock Body

Video Screenshots.00_28_28_08.Still063.png
Video Screenshots.00_28_38_13.Still064.png
Video Screenshots.00_29_26_20.Still065.png

Using four (4) of the M3 x 8 tapered screws, attach 4 standoffs to the back of the clock body. Do not over-tighten the nylon standoffs.

Attach Board Standoffs to Clock Body

Video Screenshots.00_30_41_10.Still066.png

Using four (4) of the M3 x 8 tapered screws, attach 4 standoffs to the back of the clock body. Do not over-tighten the nylon standoffs.

Attach Stepper Driver

Video Screenshots.00_31_39_24.Still067.png
Video Screenshots.00_33_26_11.Still068.png

Using four (4) of the M3 x 6 button head screws, attach the stepper motor driver to the standoffs in the orientation shown in the photos.

Tuck in Cables and Attach Board

Video Screenshots.00_35_00_11.Still069.png
Video Screenshots.00_35_12_08.Still070.png
Video Screenshots.00_35_20_00.Still071.png
Video Screenshots.00_36_43_13.Still072.png

Carefully tuck all the cables underneath the board and put any extra wire inside the base. Using four (4) of the M3 x 6 button head screws, attach the board to the standoffs. Do not pull the wires too tight and make sure they make smooth transitions underneath the board.

Confirm All Wiring Connections Are Secure

Video Screenshots.00_37_27_24.Still089.png
Video Screenshots.00_37_39_15.Still091.png
Video Screenshots.00_37_43_25.Still090.png

Gently tug on each wire to make sure it did not get unplugged during assembly. Re-secure any loose connections. Double check the wiring matches the diagram.

Remove Hand

Video Screenshots.00_38_21_13.Still073.png

Gently remove the hand from the motor axle and set to the side

Print Clock Face Graphic

Radial Gradient - Smooth - Seasons 1.png
Four Seasons.png
Stained Glass 2.png
Tree Seasons 2.png
Radial Gradient - Smooth - Google Brand Colors.png
Radial Gradient - Smooth - Bright Rainbow.png
Radial Gradient - Smooth - Seasons 2.png
Radial Gradient - Smooth - Seasons 3.png
Radial Gradient - Smooth - Seasons 4.png
Radial Gradient - Smooth - Seasons 5.png
Radial Gradient - Smooth - Cool Bright.png
Radial Gradient - Smooth - Dizzy Care Network 1.png
Radial Gradient - Smooth - Dizzy Care Network 2.png
Radial Gradient - Smooth - Dizzy Care Network 3.png
Radial Gradient - Smooth - Purple And Blue.png
Radial Gradient - Monthly - Seasons 1.png
Radial Gradient - Monthly - Seasons 2.png
Radial Gradient - Monthly - Seasons 3.png
Radial Gradient - Monthly - Seasons 4.png
Radial Gradient - Monthly - Seasons 5.png
Radial Gradient - Monthly - Dizzy Care Network 1.png
Radial Gradient - Monthly - Dizzy Care Network 2.png
Radial Gradient - Monthly - Dizzy Care Network 3.png
Radial Gradient - Monthly - Google Brand Colors.png
Radial Gradient - Monthly - Purple And Blue.png
Radial Gradient - Weekly - Seasons 1.png
Radial Gradient - Weekly - Seasons 2.png
Radial Gradient - Weekly - Seasons 3.png
Radial Gradient - Weekly - Seasons 4.png
Radial Gradient - Weekly - Dizzy Care Network 1.png
Radial Gradient - Weekly - Dizzy Care Network 3.png
Radial Gradient - Weekly - Google Brand Colors.png
Radial Gradient - Weekly - Purple And Blue.png
Leaves.png
Pagan.png
Garden.png
Tree Seasons 1.png
Annual Clock - Background Template - Overlay.png

Either use some of the attached graphics or create your own with the included photoshop template. You can also generate any gradient you'd like using the Radial Graphic Image Generator. Keep in mind that the outer 1/2 inch (13mm) will not be visible from all angles, so make sure your core design elements are inside this border.

It is recommended to test with a color laser/inkjet first if you plan on getting your printed professionally for a more finished look. Some home printers have amazing quality and when places on a table/shelf, the resolution is not that critical--so you'll likely be the only person who notices small imperfections.

Cut Out Printed Background

Video Screenshots.00_45_45_26.Still096.png
Video Screenshots.00_47_30_17.Still097.png
  1. Cut the outer perimeter of the graphic into an 8 inch (203mm) diameter circle
  2. Cut the inner hole of the graphic into a 1/4 inch (7mm) circle to form a hole for the motor axle to go through. This can be done most easily with a leather punch, but it can also be cut with a small blade too since the arm will hide most imperfections.

Place Prepared Graphic Behind Sensor on Face

Video Screenshots.00_49_46_26.Still100.png

Carefully place the graphic flush on the clock face behind the sensor. Rotate into position. You will fine tune this in a later step, so it does not need to be perfect.

Place Graphic Retention Ring Behind Sensor

Video Screenshots.00_50_18_23.Still101.png

Place the graphic retention ring behind the photo interrupter sensor.

Secure Retention Ring and Graphic on Clock Face

Video Screenshots.00_50_34_21.Still102.png

Using your fingers, press the retention ring down with your finger towards the clock face. You might need to run your finger all the way around the retention ring to make sure it's nice and snug. If the graphic does not lay flat, remove and trim any excess, then replace.

Align Background With Sensor

Video Screenshots.00_51_50_28.Still103.png
Video Screenshots.00_51_55_09.Still104.png

Now that the retention ring is secured, rotate the graphic to align with the center of the photo sensor (which is also the zero-point in the code).

Replace Arm and Re-center in Sensor

Video Screenshots.00_53_33_08.Still105.png
Video Screenshots.00_54_17_11.Still106.png

Remove Protective Film and Place Acrylic Cover

Video Screenshots.00_41_45_03.Still084.png
Video Screenshots.00_54_55_24.Still107.png

Remove the protective film and then place onto the ledge inside the 3D print. Be careful of fingerprints!

Place Angled Face to Secure Acrylic Cover

Video Screenshots.00_55_53_18.Still108.png
Video Screenshots.00_56_52_20.Still109.png

The final construction step is to place the 3D printed angled face to secure the acrylic. This should be a snug fit, but not impossible to remove. If it's not fitting correctly, re-print in +/- % increments to get it right.

Plug in and Confirm Functionality

4 Seasons.00_00_00_00.Still001.png

Everything should be complete and you should be ready to start enjoying your new experience of time!