Close
0%
0%

E-paper Clock with power loss recovery

An E-paper digital clock that updates the time seamlessly, while using very little power

Similar projects worth following
This project started as a desire to have a modern digital clock that would use the natural light of the room for illumination. This means that the screen is always at a natural brightness, with it looking like paper rather than a traditional screen. By using an E-paper display, blue light is not emitted meaning that the clock does not disrupt your circadian rhythm before bed. It seamlessly updates every minute, and on the hour the screen does a full refresh.

Another useful function of the clock is that it uses a supercapacitor to ensure the time is kept even when it is unplugged for extended periods of time. This means the time does not have to be set again after blackouts like most other clocks.

Everything available on the linked Github Repo.

U8g2_for_Adafruit_GFX-master.zip

Arduino Library

Zip Archive - 9.28 MB - 07/19/2024 at 05:43

Download

GxEPD2-master.zip

Arduino Library

Zip Archive - 4.28 MB - 07/19/2024 at 05:43

Download

Case.stl

3D print file

Standard Tesselated Geometry - 109.07 kB - 07/19/2024 at 05:43

Download

Combined.3mf

3D print file

3mf - 176.22 kB - 07/19/2024 at 05:43

Download

Back.stl

3D print file

Standard Tesselated Geometry - 41.68 kB - 07/19/2024 at 05:43

Download

View all 15 files

  • 1 × Arduino Nano
  • 1 × Waveshare 2.9inch E-Paper Module for Raspberry Pi Pico E-paper display
  • 1 × Makerverse Real Time Clock (RTC) with Supercapacitor Backup RV-3028
  • 4 × Push Button 12mm x 12mm
  • 1 × Micro USB Cable

View all 7 components

  • 1
    Build

    Assumed Knowledge


    • Soldering
    • Arduino IDE
    • 3D printing

    Bill of Materials


    Tools


    • 3D printer 
    • Soldering Iron
    • Hot glue gun

    Wiring Table

    Arduino

    E-paper Display

    RTC unit

    Buttons

    5V

    VSYS

    3V3

    Vcc

    GND

    GND

    GND

    All buttons bottom right pin

    A4

    SDA

    A5

    SCL

    D2

    INT

    D3

    Button 1 bottom left pin (Down)

    D4

    Button 2 bottom left pin (Change function from changing hours to changing minutes to exit changing time mode)

    D5

    Button 3 bottom left pin (Turn on changing time mode)

    D6

    DC

    D7

    BUSY

    D8

    Button 4 bottom right pin (Up)

    D9

    RST

    D10

    CS

    D11

    DIN

    D13

    CLK

    CLK

    Schematic


    Schematic

    Assembly Instructions


    1. Connect the jumper wires from the Arduino’s male headers to the female headers on the E-paper module according to the schematic diagram or wiring table below. Some connections may need to be soldered, like the D13-CLK-CLK connection, since multiple devices are connecting to the same pin on the Arduino. The buttons all have to be soldered as well. Keep at least 8cm on each wire connected to the button so that there is enough slack for the buttons to be placed at the back of the case.
    2. Optionally hot glue the jumper wire connections so that they cannot lose contact over time. For a more permanent setup, all the connections can be soldered.
    3. Plug the Arduino Nano into your computer and adjust the Arduino sketch.
      1. Ensure that the ZIP libraries are all installed. They are all on the Github repository below under the E-paper_Clock folder. Install them at Sketch → Include Library → Add .ZIP Library. The libraries are Low Power, GxEPD2 and U8g2 for Adafruit GFX.
      2. Ensure that the time and date variables (int year =, int month =, etc) are set to the current date and time.![Variables](Images/Screenshot 2024-04-13 at 2.12.42 pm 1.png)
      3. Uncomment line 59 by removing the ‘//’ from the start. Line 59:
    //rtc.setTime(sec, minute, hour, day, date, month, year); //USE THIS TO INITALLY SET TIME. Once set it needs to be commented out so that it doesn't get set to this time every restart
    
      1. Upload the sketch. Set the board to Arduino AVR Boards → Arduino Nano.
      2. Turn the line above back into a comment by adding the ‘//’ to the start so that it looks like:
    //rtc.setTime(sec, minute, hour, day, date, month, year); //USE THIS TO INITALLY SET TIME. Once set it needs to be commented out so that it doesn't get set to this time every restart
    
      1. Upload the sketch again. The clock is now programmed.
    1. 3D print the 3 case parts. They can be printed individually or all together.
    2. The main case might need a brim depending on your printer since the contact area is quite small.

    Print settings:


    • Filament type: PLA
    • Nozzle Temperature: 210ºC
    • Bed Temperature: 60ºC
    • Infill: 15>#/li###
    • Layer Height: 0.2mm
    • Perimeters: 3
    • Solid Layers:
    • Top: 4
    • Bottom: 4 ![Print](Images/Screenshot 2024-04-13 at 2.23.16 pm.png)
    1. Melt the heated inserts into the 6 holes in the 3d print using a soldering iron. Video demonstration.
    2. Remove the e-paper screen protector and position the screen in the 3d print with the screen opening. Hot glue the corners of the back of the screen to the 3d print.Build
    3. Move all the electronics through the front of the main case and press the front closed. Its friction fit so it might take some force depending on your printer’s dimensional accuracy.
    4. Hot glue each button to the back piece in the button holes. Order the buttons so that they make sense when using them to change the time, i.e. the down button is below the up button.
    5. Plug the USB cable into the Arduino and guide the cable through the hole at the bottom of the back piece.Build2
    6. Push the back piece into the case of the clock. Once again it’s a friction fit.
    7. Screw the 3 grubscrews through the heated inserts at the bottom of the case. This will hold all the pieces of the case together.
    8. Plug the Arduino to a USB wall plug or computer port for power.

    How to Adjust the Time


    1. Click the ‘Changing time mode button’
    2. Use the up and down button to change the hour. There might be a little delay since e-paper screens have a low refresh rate.
    3. Click the change function button so that the up and down buttons can be used to adjust the minutes.
    4. Click the change function button again to exit change time mode. Once the screen does a full refresh, the new time is saved.

View all instructions

Enjoy this project?

Share

Discussions

Bella802 wrote 07/23/2024 at 09:13 point

What a great project! Could you view my message?Thanks

  Are you sure? yes | no

avi448 wrote 07/20/2024 at 17:17 point

This looks great. Do you plan on selling finished units?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates