The Sensor Watch is an open source, custom replacement board for the CASIO F-91W and similar watches. I bought one on a whim off Crowd Supply back in the fog of COVID and work that is the recent past. The project is by Joey Castillo / Oddly Specific Obbjects and collaborators.
The SensorWatch permits custom watchfaces, or you can select from a range of existing custom faces, and it comes with a default custom arrangement. The remaining hardware of the watch is unmodified which establishes some interesting boundaries to what's possible - there are three buttons available for operation, and the original CASIO LCD for output.
I'd purchased the board (and an additional temperature sensor, which is on the board in the later "red" edition), but did not do anything with it for eleven months until a recent isolation had me idle for a few days in my room. (I'm always happy to find my former self has sent cool things through time to me!)
The interface of the watch once it has new faces onboard is really interesting to me. At first the interface felt extremely familiar, because it's the three buttons of a CASIO watch, so the actions are familiar. The watchfaces however were unfamiliar - but the familiarity of the buttons makes the interface discoverable. Something I found interesting (via grep -rE "\bEVENT_" .
in the source) is that long presses are supported. I got to wondering if combined press events are supported?
But first: it took me nearly a year to swap the board into the F91-w on my wrist. Lazy bones. I knew it required a solder and was timid at first. Eventually when I was in iso a few days I did put the board into my everyday watch, and then a week or two later took it apart again to transfer the piezo connector from the original watch board (which went fine, as it should) and finetune my custom ROM.
One minor change I had wished for was having the days of the week ("MO", "TU", "WE") appear in Te Reo Māori ("HI", "TU, "AP"). It's distinctive and something special that reminds of my place in the world as we spin through the cosmos. The localisation change is extremely minor - a single array needs replacing in the source:
index 9e524762..0225dee0 100644
--- a/watch-library/shared/watch/watch_utility.c
+++ b/watch-library/shared/watch/watch_utility.c
@@ -26,7 +26,8 @@
#include "watch_utility.h"
const char * watch_utility_get_weekday(watch_date_time date_time) {
- static const char weekdays[7][3] = {"MO", "TU", "WE", "TH", "FR", "SA", "SU"};
+ static const char weekdays[7][3] = {"HI", "TU", "A ", "PA", "ME", "HO", "TA"};
return weekdays[watch_utility_get_iso8601_weekday_number(date_time.unit.year WATCH_RTC_REFERENCE_YEAR, date_time.unit.month, date_time.unit.day) - 1];
}
Rāhina, Rātu, Rāapa, Rāpare, Rāmere, Rāhoroi, Rātapu.
Hey, why's Rāapa just a single "A"? The original LCD doesn't have separately addressable segments for all of the shapes in the letter. If "AP" is displayed, the LCD shows "AF". Of the possible displays, I felt "A " was clearest and least wrong.
"AF" is amusing and I was tempted to keep it: Wednesday As Fuck. But, it wasn't what I wanted.
I also customised the selection of faces - currently I have simple clock, tomato, countdown (3min), moon phase, prefs, set time. Here's a link to my current custom ROM source.
The SensorWatch is a super cool board and the result is a customisation of a classic simple watch that I'm happy with. I'm really enjoying it and plan on ordering at least one more as a gift :)
It might be interesting to consider a custom face which supports localisation, or even introducing a localisation layer to the main ROM, for a more full featured support.
Update, next day: I'd popped into the Sensor Watch Discord channel at the end of October with a question, and shared my WIP at the time. After writing this post yesterday I see joeycastillo/Sensor-Watch#323 has been created by wesleyac, which brings in a compile-time setting for day language, with the initial options being English (default), Spanish, German and reo Māori. Neat!