Spatial Desktop Clock

by IdeaZero in Circuits > Clocks

3857 Views, 84 Favorites, 0 Comments

Spatial Desktop Clock

frontc.jpg

"Arrow of time"


Perception of time is really an amazing and fascinating topic. Often we see analog clocks and get a feeling "Are we stuck in a loop going round and round"?, though in reality time is flowing continuously.

Inspired from this, I thought of making a simple desktop clock to visualize the flow of time in spatial dimensions from analog round dial clock.

From front view we can witness an analog round dial clock, from side view a linear clock, isometric view would visual spiral flow in 3D.

Supplies

Electronicsjpg.jpg

Materials:

  • Acrylic Transparent Slides x 13 - 5mm Thickness
  • Acrylic Colored Slide x 1 - 5mm Thickness
  • RGB LED strip WS2812B - 144 LED/meter - 12 LED length
  • XIAO ESP32-C3 module x1
  • DS3231 RTC Module x1 (Optional)
  • 30 gauge wire - 2 meter
  • M3 x 5mm x4
  • M3 Brass Inserts x4
  • USB-C cable
  • 3D printed parts:
  • Holder x1
  • Lid x1

Tools:

  • Drilling Machine with M5 drill bit
  • Knife
  • Paper Tape
  • Soldering Iron
  • Wire Cutter
  • Screw Driver
  • Marker Pen

Software:

  • Arduino IDE

Inspiration

clock-istock-2-700x420.jpg

TIME

Acrylic Parts -1

Acrylic..jpg

Laser cut acrylic parts, 5mm thickness

Transparent slides x 13

Colored slide x 1 (Optional) - Used for marking the holes for drill

Acrylic Parts - 2

Mark.jpg
  • Align the bottom of the colored slide to the transparent slide
  • Mark all the slides as per the colored slide through holes
  • Starting with the first drill hole overlapping
  • Mark with a marker pen from colored to transparent slide
  • Similarly mark consecutive hole to each transparent slide
  • Now, we have each transparent slide with one mark which is unique to each other

Acrylic Parts - 3

Drill.gif
ac_drill.jpg
  • With drilling machine, loaded with M5 drill bit
  • Drill a blind hole up to 4mm approx. on transparent slide
  • Similar procedure is followed for all the 12 transparent slides

3D Printed Parts

3D.jpg
  • 1 set of each base and lid is FDM 3D printed:
  • Color: Black or any dark color so that light leakage is minimized between inter slide
  • Infill: >40%
  • Quality: Standard
  • Brass Inserts is installed with a soldering Iron press at 4 places to fasten the lid with the base

Downloads

DS3231 RTC Modification

ds cut.jpg
DS3231.jpg
DS3231_2.jpg
  • The height of the RTC is a bit higher than the base enclosure
  • A modification is done to reduce the height
  • Battery which is by default on top of the PCB is de-soldered and placed next to the PCB side by side and soldered
  • Important Note:
  • De- solder and Re-Solder the battery pins one at time without shorting the battery terminals with metal soldering iron
  • Make sure battery polarity is same before and after the soldering, marking the terminals with marker and taking photographs were few methods I followed to double confirm

Electronics

Wiring_Diagram.png
wiring.jpg
  • Solder the wires as per the wiring diagram
  • Power the ESP32 module with USB and test for WS2812B and RTC
  • Device is powered by external USB - C cable

Electronics Assembly

assemble.jpg
Close lid.gif
  • Dedicated slots are provided on the 3D model to house the ESP32 module and LED per slide
  • Module is installed in the slot and then LED strip as per the below attached Image
  • ESP32-C3 module comes with an external U.FL Flexible PCB antenna with adhesive backed
  • RF connector is installed and antenna is stuck on the base surface as shown in image
  • Double check the wiring once visually and test for short circuit between 5V and GND
  • Check for any polarity inversion between the wiring of LED strip and RTC module


  • Close the Base part with 3D printed lid and fasten with M3 bolts

Functional Tests

LED_TEST.gif
  • Connect ESP32-C3 to PC and open Arduino IDE
  • Install ESP32 Boards from Tools>>Boards Manager >>ESP32
  • Select Tools>>Boards>>ESP32 Arduino >>XIAO_ESP32C3
  • Select the COM port

Libraries Required:

  1. RTClib
  2. FastLED

RTC connection test:

  • Open File>>Examples>>Wire>>WireScan
  • Upload the code to list a I2C device connection displayed in serial monitor with Address which makes sure the RTC connection to ESP32 is success

RGB LED connection test:

  • Similarly run a test code for RGB LEDs with FASTLED
  • Open File>>Examples>>FASTLED>>DemoReel100
  • Change parameters in the code:
  • DATA_PIN 4
  • LED_TYPE  WS2812B
  • NUM_LEDS  12
  • Upload the code to check if all LEDs are lighting up

Main Code

ide.PNG
  • Upload the main code "Spatial_Clock_IZ.ino"
  • If DS3231 is used, time has to be set for first time
  • Firstly upload the code by uncommenting the update time line
  • rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • Then comment the same line and re-upload the code to set the time

Install Slides

Slide_install.gif
After slide.gif
  • Install the transparent slides,
  • First one is fully transparent for visual window
  • From second, slides are inserted in slots of the base in sequence with drill hole - counter clockwise from first hole

Working Description

run3.gif
run5.gif
Run2.gif
top.jpg
  • 12 hour clock format
  • Hour is represented by 2 colors
  • PM: Orange
  • AM: White
  • Minutes is represented by Green color
  • Seconds is represented by blinking the Green color in minutes slide (Blink rate ON=1 second; OFF 1 second)
  • Minutes is incremented every 5 minutes from one slide to another similar to analog minute clock hand (60 minutes / 12 = 5)
  • For every 1-hour there would be a blue color sweep across 12 slides to indicate the hour transition

Perspective

3D-View.jpg

From front view we can witness an analog round dial clock, from side view a linear clock, isometric view would make a sine wave in 3D.

In Action

run4.gif

ESP32-C3 has Wireless functionality, It can be used for NTP (Network Time Protocol) time sync, notifications, timer and other custom applications etc.,

Wrapping it up!

Hope you enjoyed the project ,

Thank you and happy making! 🚀

Instagram: @ideazero_

P.S

Work.gif