Ergonomic Clock (a Deliberately Vague Clock)

by NickZero in Circuits > Clocks

341 Views, 2 Favorites, 0 Comments

Ergonomic Clock (a Deliberately Vague Clock)

20250130_224936.jpg
20250130_225048.jpg
20250130_225108.jpg
20250130_225235.jpg
20250130_225315.jpg
20250130_225516.jpg
20250130_225639.jpg
20250130_225620.jpg

This is a Raspberry Pi Zero 2W powered "Ergo Clock", with 3 clock face modes, selectable colours and an alarm.

This is a fun project that is faily easy to make; soldering the power button is an optional step if you are not confident in that area.

Supplies

20250118_170331.jpg
20250118_155904.jpg
waveshare 7in Zero display.png
20250118_211646.jpg
SDCard.png

Raspberry Pi Zero 2W + 16GB (Minimum) SD Card, I would also recommend a small heatsink.

Can be purchased from the Pi Hut here: https://thepihut.com/products/raspberry-pi-zero-2

Waveshare 7" Zero Display (https://www.waveshare.com/zero-disp-7a.htm)

Also purchased from the Pi Hut here: https://thepihut.com/products/7-touch-display-kit-for-raspberry-pi-zero

Mini Speaker 8 Ohm 1W 20x30mm

PH 2.0mm Micro Connector 4-Pin Plug Male

6x6mm Momentary Tactile Mini Push Button Switch (5mm height)

2x short wires, electrical tape or shrink sleve

7x M2.5 screws + 3x M2.5 Nuts

3D printer + Filaments (I've used yellow and clear)

Soldering iron (optional)

USB C Power supply + (optional) USB C right angle connector

Some LRF's (little rubber feet)

All the parts are readily available on ebay or similar sites.

Pi Setup and Testing

imager.png
Pi+Screen.png

Obtain the Raspberry Pi Imager and mount your SD Card – any card 16GB or more should be sufficient.

  1. Select Raspberry Pi Zero 2 W as your Device
  2. Select Raspberry PI OS (32bit) as your Operating System
  3. Select the SD Card as your Storage

On the next screen, edit the customisation settings. On the General Tab add the hostname (“ergoclock”), leave the username at the default “pi” and set the password. Configure the WiFi with your SSID and password. Set the locale time zone and keyboard layout.

On the Services tab, enable SSH and use password authentication.

Once you are happy with the settings, apply them (answer “Yes”)

Confirm that you want to erase whatever was on your SD card. If you are using Windows to write the OS, it may pop up a message asking you to format the drive – cancel this – do not format the drive.

Wait for the process to write and verify. You can now remove the card and insert it into the Pi Zero.

Connect the Pi to the screen by pushing it onto the connectors on the right side.

Connect a keyboard and mouse to one of the USB ports on the side of the screen and power up the Pi. The file system will resize and the Pi will reboot. This can take a while on the Pi Zero but you should eventually land on the desktop screen.

You should not need to do anything to configure the screen or touch but there are notes and instructions here: https://www.waveshare.com/wiki/Zero-DISP-7A if you do need to adjust anything.

You should already be connected to WiFi so no further configuration needs to be done; an “updates” icon should appear at the top of the screen – it is advisable to install all available updates. Again, this will take a while on the Pi Zero. Reboot once finished.

Setting Up the Software

clockface.png

The best way to copy the files to the Pi is via an SSH client eg. WinSCP. But you can also do it directly on the Pi (if you are patient!)

In the /home/pi/ folder create a new directory called ergoclock and go into it.

mkdir ergoclock
cd ergoclock


Copy the following files into the new folder:

clockface.png
ergoclockpg.py
tone-beep.wav
up-beep.wav


Download the clockface.png file from the picture above.

Power Button Operation

20250118_181135.jpg
20250118_184942.jpg
pizeropinout.png
20250118_155821.jpg

(This is an optional step - skip if you are not comfortable with soldering.)

To allow the power button to shutdown the system, if held for 3 seconds, in /boot/firmware/config.txt

To edit the file, type:

sudo nano /boot/firmware/config.txt

and enter the following:

Dtoverlay=gpio-shutdown,debounce=3000,active_low=1,gpio_pull=up


Solder wires to two of the button pins (on one side), then to Pi Pins 5 & 6 (GPIO 3 + Ground)

Auto Starting

To set the script to launch at system startup we need to use an autostart file.

In a terminal window, type the following:

mkdir /home/pi/.config/autostart
nano /home/pi/.config/autostart/ergoclock.desktop


In the Nano editor, enter the following:


[Desktop Entry]
Type=Application
Name=Ergoclock
Exec=/usr/bin/python /home/pi/ergoclock/ergoclockpg.py



Save and exit with CTRL+X, y, enter.

Once rebooted the system will automatically start the ergoclock software. (you can use ESC to exit the software)

Printing the Parts

20250118_211813.jpg
20250130_225304.jpg

Print the main case in the colour of your choice, I've used yellow for a funky look.

You will also need to print the stand and a few internal parts:

  1. Stand
  2. SD Card Plug
  3. Power button back
  4. Button Back
  5. LED Plug

Print the LED Plug in clear PLA - the rest can be any colour.

I printed everything at 20% in-fill, no supports, dynamic quality (0.16mm)

Assembly

20250118_154211.jpg
20250118_154455.jpg
20250118_154522.jpg
20250118_154544.jpg
20250118_172752.jpg
20250118_211234.jpg
20250126_182923.jpg
20250118_172510.jpg
F32EP5DM6JOEGWW.jpg
20250118_172909.jpg

We need to connect the speaker to the 4 pin micro connector - but given that this is only a single speaker with two wires, we only need to connect to two of the pins on the connector. See pic.

Using a very small screwdriver or point, you can pull up the clip on the connector to release the two spare wires - I used these spare wires to connect the power button.

Solder (or twist and cover with tape) the connector wires to the micro speaker connector wires. Use some shrink sleeve to cover the connection. The speaker is self adheasive so stick that to the position in the case. Connect the speaker to the main board.

Insert the button board and firmly push down the button back part to secure it in place. Do the same with the power button. Connect the button board connector to the main board.

Push in the 3 nuts into the inside of the case so that they do not fall out. (might need to tape or glue them)

Push the stand onto the back and secure in place with 3 M2.5 screws.

Insert the LED plug - this acts like a light pipe to show the power status light on the back of the case.

Now you can carefully position the screen onto the case, making sure the wires are in place, not on the heat sink or covering any holes - this can be a bit tricky, use tape to secure the wires to make things easier.

Secure the case with 4x M2.5 Screws.

Final Steps and Operation

20250130_225044.jpg
20250130_225123.jpg
20250130_225139.jpg
20250130_225202.jpg
20250130_225342.jpg
20250130_225415.jpg
20250130_225441.jpg
20250130_225549.jpg
20250130_225651.jpg

Install the LRFs. :) ie. stick on the Little Rubber Feet to the stand and the botttom edge.

If you are using a USB C right angle connector, insert that and connect the power supply.

If all is well the Pi should boot up and launch the clock software, displaying the time in words and a date at the top.

Touching the screen will bring up the controls where you can change the colour, clock style, display the date and set the alarm. The controls will disappear afer a few seconds.

Setting the alarm: press the alarm control and you will be in alarm set mode. Adjust the hours and mins to the desired time then press set. There will be an indicator in the top left that shows that the alarm is on.

Once the alarm sounds, you can snooze it for ~5 mins by simply touching the screen and turn it off by pressing the alarm control.


Final Thoughts

FASD00ZM6JOEFTT.jpg
FBV5EROM6JOEFV0.jpg
FPPUU36M6JOEFVN.jpg

This was a fun project to make, surprisingly challenging to get the clock to say the right words as naturally as possible and getting all of the controls working correctly - my programming skills are not the best so the python code could probably be improved.

Please comment if you found this project interesting and if you made it.

The speaker is kindof quiet - Dont blame me if you are late for work!!

:)