This idea began in the summer of 2014 at the office for our small family business. My dad found a neat little round screen and immediately we wanted to use it in a project. As it turns out there really aren't any good products out there that are easy to program where the hardware design is all figured out for you. With that in mind, screen in hand, a Teensy 3.1, and a thousand ideas of things we could make/control with a development system on our wrist we set out to create the first easy to program watch that actually looks like a watch!
As of right now the hardware is in it's final design iterations and the libraries for the screen and the capacitive touch ring are completely functional (even though they are still rough around the edges).
Cortex M4 used in the Teensy 3.1
Contains the magical bootloader built by Paul Stoffregen
Bluetooth 4.0 module, also backwards compatible with bluetooth 2.1
Just saw Paul has a kickstarter out for his newest addition to the Teensy family. It looks awesome! Only a couple days left to get one https://www.kickstarter.com/projects/paulstoffregen/teensy-35-and-36. A real SDIO port for the sdcard and 4 times the RAM would make for a much speedier watch. Could possibly even handle one of the new 360x360 screens the latest and greatest smartwatches have been using... lots of possibilities.
Did a full run down of the battery with the watch recording voltage. This is super easy to do because the BC127 does all of the battery management. Most of this just involved writing the library routines to poll the bluetooth and I just now got the recording to a file and graphing part working good. Next up is battery stats and building a lookup table to turn the voltage curve into a more linear 0 - 100% capacity kind of number.
EDIT: Put in some min/max voltage numbers and you can see the whole charge cycle.
Addressable leds are a lot cooler when you can control them from your wrist! Controlling things with a combination of the touch ring and accelerometer is a pretty nice interface. I can imagine setting the color of a whole room in my house by holding the touch ring and twisting my wrist until I got the color I wanted. This was pretty simple to code but you can find the watch side of things on my GitHub repository in the _Round_DemoAndTesting program.
Fun fact: Because of the capacitive touch hardware in the chip that the Teensy 3.1 uses, all of the Pi touch pads go directly to pins on the microcontroller. This means their functions can be reconfigured on the fly!
In case you didn't know, the Teensy 3.1 has some great low power capabilities. Unfortunately USB is no longer an option under 24MHz. That means that if we wanted to put out debug info while running at 2MHz (and if you are switching between two clock speeds, and plan to remain sane, you are definitely going to want to put out debug) the only option is a UART. Thankfully there happens to be a UART brought out on two of the touch pads! There's also 4 PWM capable pins, an i2c port, 5 ADC pins and of course they are all GPIO pins that you could use for bitbanging SPI or the like. Here's the pinout.
Of course the whole reason for this is getting the low power stuff working. My first attempt was just a timeout before it goes into 2MHz mode and dims the backlight. This worked fine until I tried adding in clock updates so that it could keep writing the screen even in low power mode. In the end I found a few places (mostly in the Time library) relying on millis() which in turn relies on the CPU clock. Once I fixed those and few other bugs in my code it's running beautifully at 2Mhz on the clock screen. All of that should be up on my GitHub now for anyone who is curious.
This board was the first real PCB we put together, needless to say it took quite a few jumpers and a blown Cortex chip before we had it all straightened out! This is pretty much just the bare board with the screen, touch ring and sdcard on it. If you look at our second PCB revision you'll see it populated with most of these parts.
Well we are starting a bit behind so here's some history.
Who needs breadboards!?
This was the first real working example of the Pi Watch. You can see all of the elements here, the sdcard holder made from an old sd to microsd adapter, a bunch of sticky backed brass we cut up to resemble a slider, a connector that plugs into a develoment BC127 board and of course the Teensy 3.1 connected to the display. There also used to be a set of level shifters between the T3 and the display because the datasheet for the display said it needed to run at 2.8v and our T3 was running at 3.3v. The reason they aren't there now is because we were able to run the T3 down to 2.8v this means no buck boost converter when the battery is reaching the end of it's charge! (As I write this I'm also thinking that this could be the reason the Cortex was very much unhappy when we tried to overclock it to 168MHz at this voltage...)
The first real PCB!
To be continued... have to get up early and get to work on the faux carbon fiber watch tomorrow.