Introduction: Backlit Automated Perpetual Calendar - a CNC Project

Another approach on Automated Perpetual Calendar theme

I think there is no object more present in our lives than clocks and calendars. The passage of time has always been a major thing in people's lives. I'm no different either, I think this can be seen from the number of my watch projects. Now I would like to show you one of my calendar projects.

There are thousands of calendar projects but I have liked perpetual calendars, the idea of reusing a calendar has always seemed special to me, this way I don't have to change my office calendar every year, do I? The downside is that many of these types of calendars are large, cluttered tables that are hard to read and interpret. Or there are some cubes with the numbers of the days of the week and cubes that have the months of the year written on them, so these unfortunately must be updated every day. There are also sets of different (wooden, metallic. magnetic) pieces with the numbers from 1 to 31, which are matched, chosen, every month and placed on a panel.

I stopped at the variant in which there are two sets of numbers of the months and with a square slider you can choose the conformation of the days of the current month.

Although at first glance it seems inappropriate to enter this project in the CNC contest, you should know that most of the realization of the calendar was the design and milling of acrylic components. Otherwise, the electronic part is very, very simple and so is the software

In the next steps I will explain in detail what it is all about.

Step 1: Operating Principle

I searched the internet for a long time for the origin of this type of perpetual calendar but I didn't find anything. If someone knows something, I would like to know because I would like to be able to attribute the idea to someone, what is right is right.

In the picture above you can see how the calendar looks. In a table of 13 columns and 6 (sometimes 5) rows are placed the dates of the month and by sliding vertically a frame you can choose the configuration of the days corresponding to the current month. For October 2020 it would be as in the figure below.

But a problem arises for September 2020.

As you can see, although September has 30 days, the 31st still appears in the calendar. Even more annoying is February 2021, when although the month has 28 days, the days of 29, 30 and 31 are also visible.

This is the main disadvantage of this calendar, the months will have in the vast majority of cases, the days up to 31 visible. Despite this, on the internet you can find thousands of products or projects made according to this principle. Search etsy, or look at this links on amazon (link1, link2) or youtube (link1, link2, link3, link4) and you will see what I am talking about.

And there is another major drawback of this calendar, as with all office calendars, the fact that they have to be brought up to date sometimes daily or at least monthly, which does not always happen because we simply forget about it :)

My project takes into account these problems and therefore, to display the days of the current month I use a strip of LEDs placed behind a paper screen, on which are printed the numbers of the days of the month, only the necessary LEDs light up to show the days of the actual month.

The colors can be chosen, the current day lights up in a different color, and the weekends and working days in other colors, and all this is done by a microcontroller that takes the time from the internet, so the calendar is updated automatically. For example, February 2021 might look like this (first weekday - Monday).

Step 2: What Is Needed?

Necessary materials:

  • 2 pieces of smoked acrylic one with a thickness of 3mm and the other 5mm;
  • 3mm countersunk head screws, 3mm washers and nuts;
  • A4 White colored paper;
  • 72xWS2812 LEDs from a band of 60 leds/m;
  • ESP-01 module with ESP8266;
  • 5V/3.3V stabilizer;
  • 5.5x2.5mm DC Female Plug with Cable;
  • 5v/2A power supply with 5.5x2.5mm DC Male Plug;
  • Connecting wires.


  • Of course a CNC, that can even be a very cheap one because we need plastic processing, so the strength requirements are not high;
  • Soldering station;
  • Inkjet printer;
  • Hot Glue Gun;
  • 3mm End Mill;
  • 5mm Countersink End Mill;
  • Other general purpose tools.

Step 3: CNC Machining of Parts

As I said in the first step I don't think it's a surprise that the most important part of the project is the CNC manufacturing of the four components of the calendar. All the necessary vector files are attached below.

Note: The front is milled from 3mm acrylic the rest from 5mm thick acrylic.

There is not much to say about the operations themselves, the cutting and processing of the acrylic materials are treated in extenso here, on instructables:

but also on the internet:

to enumerate a few.

But as a basic rule, the rotation speed of the End Mill must be relatively low, the feed rate relatively high because the melting of the material must be avoided. This melting results in poor quality cut edges and can lead to vibration or even destruction of the End Mill. I used a 3mm End Mill for all cuts, at a speed of about 10000 rpm/min and a feed rate of about 420 mm/min. For countersinking I used a Countersink End Mill with a 5mm diameter. The milling depth was 1.5mm. The result was a profile where the ends of the screws fit very well. Above you have photos from the processing of the parts and of the result.

Step 4: The Paper Screen

While the CNC was working hard on the acrylic parts of the calendar, I printed the screen.

I attached below the SVG vector files, two variants, one with a black background and one with a white background. Notice that I also put the names of the months on the calendar, a logo that you can replace with your favorite logo, or motto, and some special signs that I plan to use in the future to signal important days like birthdays, holidays and so on.

I did the printing on a normal inkjet printer, but with a good quality paper that has a uniform texture, a strong white color, and a thickness slightly larger than a sheet of copier paper. I printed the pattern 5 times on the same piece of paper so that the black background was as opaque as possible. I used the same technique in my “VERBIS - Desktop 8x8 RGB LED Matrix Word Clock” and it worked very well, the display being clear, visible and pleasant to the eye.

Some photos with the printings are above.

Then, I put the paper aside to dry the ink well and continued with the electronic part.

Step 5: The Electronics

The scheme is very simple, I attached it above. For its realization I did the following operations:

  • I cut 5 pieces of 13 LEDs and one piece with 7 LEDs from the LEDstrip and tinned the ends for easy soldering of the connection wires;
  • I glued these pieces in the milled channels in the back piece of the calendar according to the electronic scheme, (the LEDstrip is self-adhesive);
  • With blue wires I made the connections of the pieces of LEDstrip between Data Out and Data In;
  • I soldered the power connections with red wires (+ 5V) and I used green wires (Ground) between the pieces of strips, pay attention to the polarity!;
  • I then made the connections to the power stabilizer, the connections between the stabilizer and the ESP-01 module;
  • At the ESP module I soldered a connection between Vcc and CH_PD as it is in the schematic then I made the connection between the GPIO2 pin of the ESP-01 module and Data In from the first piece of LEDstrip
  • The last operation was to solder the power cord.

You can follow the photos about this operations above.

Step 6: Assembly

After doing all the soldering at the electronic part, I fixed everything I could with a few drops of hot glue: the ESP-01 module, the voltage stabilizer, wires that could move then:

  • I cut the printed paper around the printed pattern at about 1cm and with a sharp object I made two holes, exactly in two opposite corners. I inserted two screws through the acrylic back, corresponding to the holes previously made in the paper and I fixed to the back the middle acrylic piece, the grid;
  • I carefully inserted the screws into the holes in the paper. Why so much care? I wanted to match the printing with the grid and the LEDs as accurately as possible;
  • I then put the front piece on the piece of paper;
  • This time I inserted in the 4 remaining holes, in front, in their place, the other four screws, and I tightened them a little with the washers and the nuts,
  • Then I took out the first two screws and reversed them and tightened them as well;
  • Finally I cut the printed paper as close as possible to the edge of the screen with a sharp cutter.

These steps are shown briefly in the photos above.

The calendar is ready, we just had to enliven it :)

Step 7: Programming

The program is based on the same framework with which I worked on my projects based on ESP8266, namely ESP 8266 Arduino IDE WebConfig by John Lassen and BVB_WebConfig_OTA_V7 from Andreas Spiess.

As I said many times, this framework offers a web interface through which I can configure the ESP8266 module access to a router and I also have access to the exact date and time taken from an NTP server. So it's perfect for this project. All I had to do was add a function to display the days of the current month and the current date but I wanted to also have the opportunity to choose the first day of the week to be Sunday or Monday. I also wanted to use the other LEDs so I thought it would be interesting to display some icons corresponding to some important events: birthdays or holidays during the year.. You can find the source program on Github.

I wrote more about the framework used in:

I did the programming with an adapter for ESP-01 and with a USB to TTL adapter as in the pictures above.

I will not insist on the programming, there are literally thousands of howtos that show ESP8266 programming and I have shown several variants in my older instructables, but if you have any questions feel free to ask.

To compile and load the program into the ESP used the Eclipse IDE for Arduino named Sloeber, the esp8266 library version 2.7.4 and the FastLED library version 3.3.3 , so the newest at this date.

Step 8: It's Alive!

I did some simulations for different months in the future, you can see them in the video below, I think it shows quite well how the calendar works.

As you can see the motto is not very visible, I thought that the red LED from the stabilizer will illuminate it enough but it seems that in the future I will have to add another one or two LEDs for a better effect.

Step 9: ​Options, What's Next?

I made the calendar from acrylic material because I had it at hand but nothing will stop you from making the back and the grid from other plastic material or wood only the front would be transparent or semi transparent acrylic.

The size of the calendar may seem large but if you want to reduce it you can use a LEDstrip with 120 leds/m or even two LED matrix displays of 8x8 leds, a lot of LEDs but you can use the extra ones for example to show the days of the week (color coded with rainbow colors :))

Although I did the project on a CNC, it can be done with a Laser Cutter or on a 3D printer. You need to use the SVG files in step 2 for this. However, it is true that you need a 3D printer whose platform can fit 235x120mm parts. I can only print pieces smaller than 220mm.

Several events can be compiled in the program but it is clear that an interface for their retrieval would be easier. It would also be interesting to synchronize the perpetual calendar with the calendar application on your mobile phone.

Anyway, I'm still very happy with the result. I have a great office calendar. I hope you will make one too.

As always I look forward to your feedback!

CNC Contest 2020

First Prize in the
CNC Contest 2020