Introduction: Annual Clock: Experience Time on a Wider Scale!
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
3D Printed Files
Electronics
1 x ESP-WROOM-32 with ESP32 Breakout Board
1 x USB-Mini Right Angle Cable
Hardware
8 x M3 x 8mm Tapered Head Screws
5 x M3 x 10mm Tapered Head Screws
8 x M3 x 6mm Button Head Screws
5 x M3 Nut
1 x M1.7 x 8mm Self-Tapping Screw
Software
IDE of your choice, however project was built in Arduino IDE
Step 1: Print Files
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.
Step 2: Review Wiring Diagram
Please review the wiring diagram and refer to this in any subsequent steps.
Step 3: Connect Wires to Photo Interrupter Sensor
Attach the dupont cables to the photo interrupter sensor based on the wiring diagram and this photo
Step 4: Attach Photo Interrupter Sensor to Clock Body
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.
Step 5: Attach Base to Clock Body
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.
Step 6: Mount Stepper Motor to Clock Body
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.
Step 7: Attach Arm
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.
Step 8: Center Arm Inside Photo Interrupter Sensor
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.
Step 9: Mount Dev Board to Breakout Board
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.
Step 10: Connect Sensor to Breakout Board
Following the wiring diagram, connect three (3) dupont cables to the breakout board. Secure them with a small screwdriver, but do not over-tighten.
Step 11: Connect Motor to Stepper Driver
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.
Step 12: Connect Stepper Driver to Breakout Board
Connect the six (6) wires from the stepper driver to the breakout board following the wiring instructions
Step 13: Confirm Board Wiring
Check all connections match the wiring diagram. Confirm all connections are firm, but not too tight.
Step 14: 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.
Step 15: Add Libraries
There's some great and reliable code libraries that need to be installed.
- Click on the Libraries icon
- Type the name of the following libraries and then click Install:
- NTPClient
- AccelStepper
Step 16: Download Code Files
Download the most up-to-date release from GitHub and extract the compressed file into a folder called Annual_Clock.
Step 17: Configure Wifi File
- Open the Annual_Clock.ino file. It will open two tabs.
- Select the second tab called wifi_credentials.h
- Update the CHANGE_ME for the SSID* and password
- Save the file.
*Please note that the SSID is case-sensitive, so doublecheck it before saving.
Step 18: Configure Zero Point Date
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.
Step 19: Upload Code and Run Electronics Test
Before securing the electronics to the clock, we're going to run a test of all connected parts.
- Plug in the board via USB to your computer
- 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.
Step 20: Attach Driver Standoffs to Clock Body
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.
Step 21: Attach Board Standoffs to Clock Body
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.
Step 22: Attach Stepper Driver
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.
Step 23: Tuck in Cables and Attach Board
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.
Step 24: Confirm All Wiring Connections Are Secure
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.
Step 25: Remove Hand
Gently remove the hand from the motor axle and set to the side
Step 26: Print Clock Face Graphic
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.
Step 27: Cut Out Printed Background
- Cut the outer perimeter of the graphic into an 8 inch (203mm) diameter circle
- 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.
Step 28: Place Prepared Graphic Behind Sensor on Face
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.
Step 29: Place Graphic Retention Ring Behind Sensor
Place the graphic retention ring behind the photo interrupter sensor.
Step 30: Secure Retention Ring and Graphic on Clock Face
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.
Step 31: Align Background With Sensor
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).
Step 32: Replace Arm and Re-center in Sensor
Step 33: Remove Protective Film and Place Acrylic Cover
Remove the protective film and then place onto the ledge inside the 3D print. Be careful of fingerprints!
Step 34: Place Angled Face to Secure Acrylic Cover
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.
Step 35: Plug in and Confirm Functionality
Everything should be complete and you should be ready to start enjoying your new experience of time!