Hi! I made this PCB calendar and binary clock with Eagle CAD. I used ATMEGA328P MCU (from Arduino) and 9x9 LED matrix. Dimensions for my board is 8cmx10cm(3.14inch x 3.34inch). It`s a bit too small but first: free version of Eagle CAD allows 80cm^2 and second: jlcpcb.com max size for 2$ pcb is 10cmx10cm. I will be working on much better version of this project with STM32L series MCU and DCF77. But this also is cool and simple project from which You could learn all the process how PCB is designed and manufactured + how to use Arduino as programmer.
In this instruction I will show You how to make Your own PCB calendar.
P.S. It`s my first prototype in pictures and video so I made some small mistakes (luckily magic smoke didn`t come out :D ) Via size is too big in my first project and solder mask can`t go over the drill so some texts are not fully writen. Last year is 2021 instead of 2023. I ALREADY FIXED THIS IN FILES YOU CAN DOWNLOAD ;)
Step 1: Design a Schematic
First You should choose controller for Your project and how You will control LEDs. I choosed ATMEGA328P as it is used in Arduino and it can be programmed in Arduino IDE. But this is not the best controller for low power applications. I recommend STM32 L series micro-controllers for low power applications.
For LED controlling I choosed 9x9 LED matrix as this is one of the best way to control a lot of LEDs (81 of them) with only 18 GPIO pins.
I added extra P-channel MOSFET to control power for all LEDs. This MOSFET can be driven with PWM signal to control LED brightness.
For battery I choosed CR2032 (150mAh). Although this is quite power efficient design because only one LED is on at any time and controller could be left in sleep mode, CR battery won`t last too long. For my next project I will use rechargeable battery with 5V USB port.
I choosed to use ATMEGA328P internal oscillator because it can be lowered to 1Mhz or even less for better power consumption but it has problem with internal clock frequency stability (there will be some seconds error in 24h).
Step 2: Design a PCB
I recommend this video to start with Eagle and search in forums.autodesk.com if You have some trouble. You can download and use my gerber files if You don`t want to make Your own design. In Eagle just import gerber files File->Import->Gerber.
In Eagle CAD 21 and 22 layer You can change text and add graphics to PCB. Eagle Layers
Great tutorial how to add graphics to Eagle PCB: Adding Custom Graphics to EAGLE PCB Layouts
Step 3: Make Your PCB
EDIT: great instruction how to make PCB: DIY Professional Double Sided PCB
Of course You can make it by Yourself but these days it`s much cheaper and better quality to make PCB in China. From JLCpcb.com You can get 10x10cm 10pcs as low as 2USD. Problem with JLCpcb.com is when You choose different color as standard green (black color is 17USD :( ) I also recommend elecrow.com because all colors cost 4.90$ (except matt-black and purple).
Just a quick example how to order PCB from JLCpcb:
1)press "QUOTE NOW"
2)press "Add your gerber files"
3)upload zip or rar
4)all properties could be left default
*the only thing You should change from properties is PCB Color (a little bit more expensive). In this case it`s cheaper to order them in www.elecrow.com
Step 4: Soldering
If You replicate my project this is the hardest step because I used 0603 SMD LEDs and 0402 resistors but It`s actually not that difficult to solder small parts if You have the right tools for the job. For me it took about one hour to solder all components. I learned how to solder from the master itself: EEVblog #997 How To Solder Surface Mount Components
I used sharp tweezers and small weller solder iron tip Amazon link
Use as thinn solder wire as You can get!
Step 5: Programming
WARNING: remove battery before You connect it to Arduino. Ardunino works with 5V but battery is 3V. I didn`t add diode in series with battery because 3V-Vdiode_drop would be 2.7V at best.
First follow this tutorial how to set up Arduino as ISP so You cold programm ATMEGA328P with Arduino IDE. In instructions follow Minimal Circuit (Eliminating the External Clock) example. If You have Arduino with SMD MCU You can follow this instruction: Arduino-Leonardo-as-Isp
You can download my Calendar.ino sketch and check how it works. There are some features still mising (set time with buttons, sleep modes and leap year calculation). IF statements could be replaced with SWITCH statements or even with arrays.
Step 6: Binary Clock
Binary clock displays time in binary format. Binary clock Wikipedia
If You are not programmer at first it seems strange but this is great way how to get used to binary numbers ;)
Step 7: Project BOM and Gerber Files
calendar_main_sch.txt file has all the parts for this project (open it with notepad or notepad++ for correct formatting)
Resistors R1 to R77 are LED current limiting resistors and can be from 100 to 400 Ohms but I recommend to use 220 Ohms resistors. You can read this tutorial for more information: How to calculate the series resistor for an LED
Q10 to Q18 are N-channel MOSFETS in SOT-23 case. You can use any N-channel Enhancement Mode MOSFET but check in datasheet parameter: "Gate Threshold Voltage". Max value must be lower than 3V.
caledar_main_sch.zip has all gerber files (These files are already fixed with smaller via size so solder mask can fully cover them and vias will be invisible and last year now is 2023). You can import them in Eagle or upload to JLCpcb and "QUOUTE NOW"
Calendar.rar is all my Eagle CAD project. Probably You should go into Library manager and add library location. In Eagle: Library->open library manager->Avalable->Browse->add Libraries location->click on library->use.