Sensor Watch

A hackable ARM Cortex M0+ upgrade for a classic Casio wristwatch

Jan 20, 2022

Week Two: Your Questions, My Questions, and a Camping Trip

by Joey Castillo

Before we get started with the update, here’s a quick programming note: tomorrow, Friday, January 21st, I’ll be live-streaming a Teardown Session with Helen Leigh of Crowd Supply at 12:00 noon PST! That’s 3:00 PM EST or 9:00 PM CET. It will stream on Crowd Supply’s YouTube channel. We’ll talk watch stuff and community stuff, we’ll look at some new watch faces, and we might even sneak in a surprise or two!

What a whirlwind of a first week! As it stands right now, Sensor Watch has 425 backers. That’s a lot of folks who want to hack on a wristwatch! It’s been awesome to see the conversations happening in the Sensor Watch discussion forum, and I’ve enjoyed answering your questions — some of which I’ll share at the end of this post! But one backer question stands out as a good lead-in to this week’s update:

Question: Does the temperature sensor measure body temperature or ambient temperature? Is it able to do data logging of temperature as well?

The answer to this question is that the temperature sensor measures the temperature inside the watch case. If the watch is on your wrist, some heat will come from your body, and some will come from the ambient air. You’ll get an “in between” number that’s admittedly not particularly useful to log. But! Once you take it off your wrist, the watch will fairly quickly normalize to the ambient temperature, and that’s where it gets interesting. For example, you could strap the Sensor Watch to your bicycle handlebars to have time and temperature on a long bike ride.

Sensor Watch on bike handlebars, displaying the current temperature (40.3 ° F)

Sensor Watch on bike handlebars, displaying the current temperature (40.3 ° F)

Or you could take it camping.

Over the holidays, I drove out to the mountains of West Texas and camped for a few nights in Big Bend National Park. I had my trusty Sensor Watch with me, loaded up with useful watch faces like the Simple Clock, the Battery Monitor and, of course, the Temperature Log. This temperature logging watch face automatically measures the temperature once an hour and stores it in a rotating, 36-hour log. Each night before going to sleep, I would toss the watch outside my tent:

Sensor Watch on a rocky patch of ground at night

Sensor Watch on a rocky patch of ground at night

Sitting out there on the ground overnight, with no other heat source to affect it, the temperature inside the watch case quickly drops to match the ambient temperature. And then it sits there.

The thing of it is, while the watch sits there, there’s a surprising amount of stuff going on inside. First off: for most of the night, the CPU is fast asleep. It’s not doing anything. Instead, a tiny quartz crystal is oscillating 32,768 times per second, keeping alive just two peripherals inside of the microcontroller: the real-time clock (RTC) and the segment LCD driver. The RTC is using that signal to count seconds, while the segment LCD driver is using it to keep the screen on and show the time. In this mode, the watch is consuming just 0.01 milliamperes. For comparison, that’s one one-hundredth the current required to light up a red LED!

Once a minute, for a fraction of a second, the RTC wakes up the CPU in the watch, which checks in with each of the watch faces that are installed. It asks each of them one question: “Do you have anything to do in the background?” 59 times out of 60, each watch face says no, and the CPU goes right back to sleep. But once an hour, at the top of the hour, the Temperature Log watch face says “Yes, as a matter of fact, I do have a background task!” This keeps the CPU awake a fraction of a second longer — just long enough for the Temperature Log watch face to turn on the temperature sensor and quickly take a reading.

In the morning, I can scroll back through these hourly temperature readings to get a sense of the overnight conditions at my camp site, which is super useful! I like having this information to get a sense for how my gear held up against certain temperatures. It’s also nice to jot it down in my journal of travels; usually I just write down the low temperature, but there’s enough data there to make for a really cool graph:

Sensor Watch next to a graph of hourly temperatures, drawn in a notebook

Sensor Watch next to a graph of hourly temperatures, drawn in a notebook

The Temperature Log watch face embodies so much of what I think makes Sensor Watch special: it solves a problem by sensing some data and presenting it to the wearer right there on the screen. No syncing, no cloud; it’s just actionable information you can see with your eyes. I also love that it does all this while sipping mere microamperes of power, so it can do this month after month on a single coin cell.

Backer Questions

I’m also going to use these backer updates to answer some of the questions that come in each week.

There were a few from fans of Casio watches asking about other models:

Question: Can you please tell me if your new pcb will fit into the B640W case?

Answer: No, it will not. The Sensor Watch board was only designed to work with the F-91W and other Casio watches with F-91W in the model number (F-91WC, F-91WM, etc).

Question: I know its a long shot, but is there any chance you could make one for the AE1300?

Answer: At this time I don’t have plans for other watches. I’ve looked at a couple — the Data Bank and the Tough Solar in particular — and what I’ve found is that more complex LCD’s tend to require more pins to drive them than these small microcontrollers have available. The F-91W hits a sweet spot of having a simple enough LCD pinout, as well as enough segments on the LCD to show useful information.

Question: What kind of accuracy are you expecting on your new module? Does the microcontroller do some sort of count adjustment or temperature compensation?

Answer: The temperature sensor is there in the hopes that we can do temperature compensation in the future to improve accuracy. The SAM L22’s real-time clock has a frequency correction feature with a resolution of ~1ppm; the trick is going to be testing the RTC at different temperatures against an extremely accurate reference clock and developing a lookup table for these correction values. This work has not been done yet, but it is on my radar screen.

Other News of the Watch

Over the weekend, I started work on the Sunrise / Sunset watch face. So far it only displays values for London; I’m still working on a UI to allow the wearer to enter their location on the watch.

I also went on a fun wild goose chase trying to fit astronomical calculations for the solar system onto the watch. After a couple of days hacking on it, I realized that the library I had hoped to use hilariously doesn’t fit in the space available. My question for y’all: is there a Doctor of Astronomy in the house? Curious if anyone reading this knows of lightweight algorithms for calculating equatorial coordinates for planets and the moon. It’s a niche thing I’m sure, but personally I’d love to wear the solar system on my wrist.

Other than that, over on Twitter, I’ve been having some fun testing the water resistance of the F-91W post-Sensor-Watch-board-swap. These tests started in the washing machine and moved to the shower; now we’re asking: will it float?

Anyway, in next week’s update, we’ll talk about what it looks like to design your own watch face. Until then, thanks for your support! More soon.

- Joey


Sign up to receive future updates for Sensor Watch.

Sensor Watch is part of the Microchip Get Launched design competition!


Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects