Skip to content
Intermediate 5 hours (including print time)

3D Printed Wall Clock with DS3231 RTC Module

By Amit1379
July 13, 2026

The DS3231 is a temperature-compensated real-time clock IC that keeps time to within ±2 minutes per year — far better than Arduino’s own millis() timer, which drifts significantly. Paired with stepper motors to drive printed clock hands, this project combines electronics, mechanical design, and 3D printing into one polished wall clock build.

What You’ll Need

  • Arduino Nano
  • DS3231 RTC module (with CR2032 backup battery)
  • 2 × 28BYJ-48 stepper motors + 2 × ULN2003 driver boards
  • FDM 3D printer + PLA filament (white/cream for face, dark for hands) — ~120 g total
  • 12 V / 1 A power supply
  • M3 screws and heat-set inserts
  • Set of wall-mounting screws

Step-by-Step Instructions

  1. Design/download parts: Design or find on Printables: a 200 mm diameter clock face with hour markers, hour and minute hand, and a rear mounting box to house the Arduino and motor drivers. The motor shafts protrude through the centre of the face.
  2. Print all parts: Face in white PLA (0.1 mm for smooth finish). Hands in black or dark PLA. Rear box in any colour. Expect 6–8 hours of print time total.
  3. Install RTC: Wire DS3231 SDA → A4, SCL → A5, VCC → 3.3 V, GND → GND. Upload a time-setting sketch once to sync to current time. The CR2032 battery keeps time when the Arduino is powered off.
  4. Wire steppers: Connect each ULN2003 to Arduino pins 2-5 (motor 1) and 6-9 (motor 2). Power motors from 12 V rail, share GND with Arduino.
  5. Clock logic: Every second, read DS3231 time. Calculate target positions for hour and minute hands (0–360°). Step motors to those positions using AccelStepper library for smooth, quiet movement.
  6. Assemble: Feed motor shafts through the face. Attach printed hands to motor shafts with M3 screws into heat-set inserts. Mount rear box to wall.

Safety Notes

  • 12 V power supply — use a quality branded supply; cheap unregulated supplies can damage the motors and Arduino over time.
  • Ensure the wall mount is into a stud or uses appropriate wall anchors for the clock’s weight (~400 g).

Tips & Troubleshooting

  • If hands drift over time, the stepper is missing steps — reduce motor speed or add a gear reduction stage to the hand attachment.
  • Use the DS3231’s temperature register to also display room temperature on a small OLED added to the clock face.
  • Paint or apply vinyl numbers to the clock face for a more traditional look.

Leave a Comment

Your email address will not be published. Required fields are marked *