Skip to content

KarlJorgensen/Smart

Repository files navigation

Smart

A watch face for the sqfmi Watchy watch and compatible ones.

This is a simple analogue watch face without any frills.

Screen shot of watch face

It is a little different from other watchy projects out there in a couple of respects:

  • The static part of the watch face is designed in Inkscape and converted to raster format at compile-time. Attempting to draw lines, decorations and whatnot using C++ was ... ahem... simply not suitable. And slow. Designing this in Inkscape is much nicer.

  • The watch hands are also designed using Inkscape, and drawn as lines by the code. It makes it very easy to tweak their design.

  • The watch hands move precisely as they would on a real mechanical analogue watch (but only once per minute). A little fun with trigonometry was needed.

  • The text is placed to avoid overlaps with the watch hands. Over time, you will see the text "move around" as a result.

Building It

To build this, you will need a few things installed:

  • An operating system. I use Debian GNU/Linux, but any decent Linux distribution should work just as well. For MacOS/Windows: Your mileage will vary, and might not be much at all.

  • Assuming you want to actually run it: A compatible watch. They are sold by e.g. SQFMI and probably many others. Mine is probably a clone, as I got it from elsewhere (a big American retailer named after a rainforest, and who I'm now boycotting, so I won't link it here).

  • The Arduino IDE. I used version 1.8.19 (as packaged in Debian 12/bookworm), but other versions will probably work too.

  • The Aduino IDE board files for the watch. See https://watchy.sqfmi.com/docs/legacy#arduino-setup for the gory details.

  • GNU Make. That's how I build things. It is simple, and it works. All the compile-time graphics manipulation is done through the Makefile. You can use the Arduino IDE to compile/upload the code, but you need to use e.g. make headers first. Or you can let the Makefile do the whole thing with just make upload - this makes it easy to use an external editor.

  • Inkscape: Used at build time to get a decent SVG -> raster conversion. Also nice if you want to edit the designs. I used v1.2.2, but other versions are very likely to work out of the box as well.

  • imagemagick: The compilation process uses it to convert raster images to various formats.

  • python: There are a couple of custom python scripts used in the build. Probably needs python 3.

  • The source code. You are probably looking at on Codeberg or Github, and they have directions on how to get a copy. Both are good sources to get the latest version, although I may move things entirely to Codeberg in the future.

  • Patience. The build process is slow. Coffee is optional (but desirable as always).

If you have everything set up, and the watch connected via USB, then simply running:

make upload

should compile the code and upload it to your watch.

Tweaking It

See README-development.md for that.

Just So You Know ...

This is my first foray into the world of Arduino and other embedded systems: so please bear with me if I'm not following best practices etc. I don't know what they are yet.

It is also my first attempt at designing a watch face for Watchy; although I'm pretty pleased with the result, I'm sure there are graphics artists out there who would rip my design to shreds. That's OK. I'm still learning.

About

Watch face for sqfmi Watchy Open Source smart watch

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published