Circle Calendar




Introduction: Circle Calendar

This instructable is my version of tomatoskins' great project: the Automated Perpetual Calendar.

Since I don't have access to a workshop to do woodworking and I wanted to learn how to use 3D printers and a laser cutter, I decided to make my own version of the Perpetual Calendar. This calendar will consist entirely of lasercut plywood, the 3D printed gears are optional and can also be cut out of plywood.

Something else I changed about tomatoskins' design is the size, I'm making a smaller one. This calendar, including the casing, will be 20 centimeters wide and 23 centimeters tall. (approximately 8 x 9 inches)

The last thing I wanted to add is to make the device battery powered, I just think it will look way better without having a cable hanging out the bottom.



  • Laser cutter
  • 3D printer (optional)
  • Soldering iron
  • Hot air station (optional)
  • Drill and bits
  • Small glue clamps
  • Utility knife (optional)
  • 400 grit sanding paper (optional)
  • Arduino Uno (or serial programmer)
  • QFP-32 ZIF socket (optional)
  • Various jumper wires
  • Tweezers
  • Side cutters


  • [4] M3 hex nuts
  • [4] M3 x 20mm bolts
  • [12] M3 washers
  • [4] M2 x 4mm screws
  • [43] Magnets 3 x 1 mm
  • Plywood 500 x 250 x 3mm
  • Velcro
  • Woodglue
  • Heat shrink (optional)
  • Superglue
  • Solder
  • Solderpaste
  • Solder wick

Electrical components:

  • [7] 100 nF capacitor (0805)
  • [2] 20 pF capacitor (0805)
  • [2] 10 Ohm resistor (0805)
  • [1] 10 k Ohm resistor (0805)
  • [2] Male stepper motor connectors (JST 800921)
  • [2] 10 k potentiometers (3296W)
  • [2] A3144 hall sensors
  • [1] ATMEGA 328P-AU (TQFP-32) (with Arduino bootloader)
  • [1] ULN2803ADW (SOIC-18)
  • [1] LM393 (SO-8)
  • [1] 16 MHz crystal (HC49)

Step 1: Lasercutting the Parts

You may need to adjust the lineweight and color for your specific lasercutter.

The lasercutter settings I used are:

Trotec Rayjet 300

Engraving: Power 100%, Speed 50%

Cutting: Power 100%, Speed 2.5%

After lasercutting I used 400 grit sanding paper to remove the burn marks around the engraving and cuts.

Step 2: 3D Printing the Gears (optional)

I printed the gears on the Ultimaker 2+ using the following parameters:

  • PLA
  • 0.4mm layer height
  • 100% infill
  • Brim build plate adhesive

After printing, I used an utility knife and sanding paper to remove the brim. I found the gears were a little too small for the axle, so I used hot air to heat the hole in the gear and put the axle through.

Instead of 3D printing the gears, the gears can also be lasercut from plywood.

Step 3: Assembling the Rings

  1. Make sure the lasercutter went all the way through the plywood, if not, use sanding paper to remove unwanted material from the gears
  2. Apply woodglue to the small gear and stick it to the ring
  3. Clamp the gear and ring to eachother
  4. Repeat for the larger gear

Step 4: Assembling the Front Plate

  1. Glue the top plate level with the top of the front plate, leave 3mm on both sides for the side panels
  2. Apply clamps to the parts
  3. Glue the bottom plate level with the bottom of the front plate, again leave 3mm on both sides for the side panels
  4. Use the rings to get the middle part in position and glue it to the front plate, leaving 3mm left and right (make sure to check the text on the rings through the window in the front!)
  5. Let the glue dry
  6. Put the rings in their position
  7. Get 4 hex nuts and super glue
  8. Use the motors with attached gears to determine the perfect position for the hex nuts
  9. Super glue the nuts in position
  10. Make sure the rings are in position
  11. Apply woodglue to the corner where the side plates go in (make sure no glue gets on the rings or gears!)
  12. Put the side plates in their place
  13. Apply glue to the three sides of the top plate and glue it in place
  14. Remove excess woodglue before it dries

Step 5: Assembling the PCB

In order to assemble the PCB, it should first be ordered. I used JCL's prototyping service for ordering my PCBs.

  1. Download the latest gerber files from my Github repository
  2. Send the files to your favourite PCB manufacturer
  3. Wait for the boards to arrive

Before soldering the microcontroller, make sure the Arduino bootloader has been burned onto it. This instructable will tell you how to burn the bootloader. For burning the bootloader, I used a ZIF socket so I didn't have to solder the chip twice.

There are many ways to solder this PCB, here is how I did it:

  1. Apply solder paste to the pads of the SMD components
  2. Using tweezers and the schematic, put the components in place
  3. Solder the components using hot air
  4. Remove excess solder using solder wick
  5. Solder the through hole components and connectors
  6. Solder the hall sensors using the solid core wire
  7. Solder cables to the battery holder

Optional: shorten the cables of the stepper motors.

Optional: reduce the power used by the RTC module by modifying the module

Step 6: Mounting the Electronics

  1. Drill holes in the wood and use the M2 screws to mount the PCB in the enclosure
  2. Position the hall sensors above the rings
  3. Super glue a piece of velcro on the battery holder and in the enclosure
  4. Put the M3 bolts through the motor's mounting holes, place 3 washers and 3 wooden spacers
  5. Screw the motor in place
  6. Plug in the motors
  7. Plug in the RTC module

Step 7: Attach the Magnets to the Rings

To get the magnets in the right places on the rings I marked the place of the hall sensors on the rings.

  1. Place the ring in the casing
  2. Position the number/name of month so it's visible through the window in the front of the casing
  3. Mark the place of the hall sensor
  4. Drill a 1-2mm deep, 3mm wide hole for the magnet
  5. Repeat for all positions of the rings

Glue the magnets in place:

  1. Mark the south side of the magnets (I used this tutorial)
  2. Apply super glue to the holes in the rings
  3. Glue the magnets in place with the south side facing up

Step 8: Uploading Code

  1. Remove the microcontroller from the Arduino Uno board
  2. Connect GND, 5V and the RX, TX and reset lines to the PCB
  3. In the Arduino IDE make the following settings:
    • Board: Arduino Nano
    • Processor: ATmega 328P
    • Port: select your Arduino Uno
    • Programmer: Arduino as ISP
  4. Upload the code using the Arduino IDE

Step 9: Powering the Calendar

Now it's time for the final step, putting in the batteries. Make sure to use rechargable batteries with a voltage of 1.2V, because the operating voltage of the microcontroller has a maximum of 5,5V.

To operate the calendar using 1.5V batteries, you can add a (linear) voltage regulator.

PCB Challenge

Participated in the
PCB Challenge

Be the First to Share


    • Arduino Contest

      Arduino Contest
    • Barbecue Speed Challenge

      Barbecue Speed Challenge
    • Colors of the Rainbow Contest

      Colors of the Rainbow Contest



    4 months ago

    That's really cool. Honestly, I thought it was a great idea without being motorized, just a calendar where you can dial in the right day was a nice idea.


    4 months ago

    That turned out looking great! I'm so glad to have inspired you! You'll need to let me know how long the batteries last as that's something that I'm curious about!