The absolute requirement for this watch was that the time could be set automatically. Just connect it to a power source to display accurate time. Previous clocks in that space had accuracy issues of 1 minute per month, which was a bit annoying.
I've been wanting to test these little microcontrollers in a project for a while and thought this would be a good first project. As a photographer, I thought this watch could be themed around cameras. I have several film cameras, one of which is my doppelgänger named Petri. I bought it just for the name and only use it for display.
My first thought was to 3D print a fake flash unit. Then I started browsing used flashes. It was reasonably priced and looked more authentic. I ended up purchasing a Soligor MK-21A unit from a camera store here in Finland.
I wasn't sure if everything would fit, but it was the perfect size. It also came with a removable diffuser which is perfect for display. I wish I had a broken unit for this, but I couldn't find one. It's so cheap that I think anything that breaks goes in the trash.
new electronics
I previously watched this YouTube video featuring the Raspberry Pi Pico and ST7735 display. Since it seemed easy to understand, I decided to incorporate these components into my watch as well. I chose the Pico W with Wi-Fi because I planned to use the internet to check the exact time and temperature.
I took apart the Soligor flash and found that the display and Pico fit inside very nicely. I had to remove old electronics from the flash and change the battery compartment, but everything looked stock from the outside except for the small hole where the USB cable came out.
I originally used jumper wires for testing purposes, but since they fit well and functionally, I decided to use hot glue to secure them. I 3D printed a tray and display frame for the Raspberry Pi Pico to fit into the flash head's diffuser holder (step files for printing can be found on GitHub).
code
I was a software engineer in a past life, so I've done my fair share of coding. However, this was my first microcontroller project. I decided to use CircuitPython for Pico because I've been using Python for a small project I've recently worked on.
I wanted a font that looked like the engravings on old lenses. Since I couldn't find a font I was happy with, I decided to create my own font (His SVG, TTF on GitHub) for this project. The CircuitPython font was a 1-bit font and looked jagged, so I also coded my own simple font system.
The fonts looked good, but I ran into an issue with the display being too bright. I noticed that this display does not support display brightness adjustment. For size reasons, the bitmap was a 256-color indexed bitmap, so I had to change the palette to achieve a darker image. I haven't coded with bitmap palettes since Windows 3.11, but I thought it was a good time to refresh my memory. At that time, the display was too blue for my liking, so I adjusted the palette to be more yellow.
One of the original requirements for me was for the clock to get the correct time from the internet, and that was easily accomplished using the CircuitPython library. Additionally, we added a temperature feature that collects data from Open-Meteo.
Code on GitHub
screen
Its main purpose was just to display the time. The time is displayed at the top of the display in large font that can be seen from a distance. I had more room, so I added an orange focal length mark-like temperature to the bottom left corner. In the bottom right corner there is a red dot that you see on many vintage lenses. It turns blue when the temperature drops below freezing.
The date will be displayed at the bottom. I used it experimentally and found it more distracting than helpful, so I made it configurable and didn't use it personally. The remaining space was filled with depth-of-field graphics that were common on older metal lenses. I wish modern lenses had something like this.
summary
The clock project started out of the inconvenience caused by accuracy issues with previous clocks. The idea for a camera-themed watch came from my interest in photography.
Another concept I had in mind was a Back to the Future DeLorean time machine themed watch, but that might be a project for another day.
All in all, it was a great little project. MicroPython is suitable for this type of project, especially for beginners. The electronics were easy to work with and help was easily available through YouTube videos.