Introduction: Jclock V1 (An Arduino-based Clock)

This Instructable is for building the Jclock, an Arduino based clock. Not much to say so let's get started.

Link to the project's Gitbub repository(Everything is included in here): https://github.com/Electro707/Jclock-V1

Link to more pictures for this project: http://imgur.com/a/0uj8L

Step 1: Parts

Here is the parts the you need to build this clock(Note: the name inside the bracket is the SMD package size / name if your getting the board professionally made with my board design(see next step)):

1x Atmega328p {32-TQFP}

1x MCP7940 {8-MSOP}

2x 22pF capacitor {0603}

3x 10k resistor {0603}

3x NPN Transistors {MMBT2222 SOT-23}

1x 16Mhz crystal {4-SMD 3.20mm x 2.50mm}

1x 32.768kHz crystal {2-SMD 3.20mm x 1.50mm}

1x 10k Potentiometers {J-Lead 4.50mm x 4.50mm x 2.55mm}

1x Coin cell holder {Keystone 3000TR}

(Optional) 2x Clock compensations caps(Choose the value that fits you(See the MCP7940's datasheet)) {0603}

Step 2: Making the Main Board

If you decide to make the main board yourself, build it based on the schematic. If your willing to get the board professionally made, the link to the gerber file for the SMD version of the board is linked in the project's Github repository(Through-hole version of the board coming soon).

Link to the Gerber Github folder: https://github.com/Electro707/Jclock-V1/tree/master/Gerber%20Files

Step 3: Programming the Micro

To download the code use the code's Github folder: https://github.com/Electro707/Jclock-V1/tree/master/Arduino_Code

If your using the DIP package of the microcontroller then you could directly program it before plugging it in.

Here is a link on how to program a standalone ATmega328P:

https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

If your using the SMD version of the micro then you need a Arduino(Any Arduino kind should work) to use as an ISP and an FTDI module. To burn the bootloader follow the "Burning the Bootloader" section of the tutorial linked above. To program the board after you burned the bootloader, plug the ftdi module directly on the J3 where the GND pin of the FTDI module is next to the J3 name.

The pinouts of my PCB board is the image above in case you have other ways of programming the board. The button pins(J2) is linked to pins A0-A3.

Step 4: Case + Buttons

If you want a nice case for this clock then you could print the included STL files on a 3D printer. After that's done screw in the DC adapter on the back-side of the case and wire the + and - wires to the main board. To set up the buttons build them on a perfboard according to the schematic(use a ribbon cable to attach the buttons to the main board). Align them up so you could screw it to the top of the case. After that's done place all the components inside and screw in the LCD and the button's board. Note that you don't need pull-up resistors: they are set internally inside the micro.

Note: You could change the button's pins by changing it in the Arduino code variables named{byes, bno, bselect, menub}.

Step 5: Expansions/Future Development

Even thought the basis of this project is complete, i will be expanding upon this project. For example this board's input is not limited to only push buttons. On the code's Github page i will be updating the code to add support to rotary encoders and sensors like a temperature sensor. If you have any idea on what to add to the code or any other module that you would like to add the code to let me know trough the comment section or trough my twitter.

Programs used:

-Circuit Maker (For schematic and PCB)

-FreeCAD (For the case)

-Arduino IDE (For the code)