Close
0%
0%

OSHWatch

An open-source "smart watch" that can be built from easily available parts, and assembled by hand. Designed for hackers

Similar projects worth following
Smart-watches are becoming the next big thing, but with increased miniaturization it is becoming impossible to build these sorts of devices yourself. This project aims to provide a "smart-watch" which can be built from readily available components (eg. from element14, digikey, etc.), and able to be soldered by hand. Of course, processing power must be sacrificed, but who needs a camera and 60FPS graphics on a *watch*???

You are welcome to contribute! just comment below or send me an e-mail (on my website)

I originally came up with the idea because I had an OLED display lying around, but no way to use it. So I turned it into a watch! I have been working on it for around a year now, and I have documented progress on my website: http://jared.geek.nz/2014/jul/oshw-oled-watch

 This project is also an entry in the Hackaday Prize!

The watch uses a PIC24F microcontroller and a 128x128 RGB OLED display, and features an accelerometer and magnetometer. The goal is to have Bluetooth 4.0 LE connectivity, enabling hands-free calendar and time synchronization with services such as Google Calendar. It will also eventually be able to pair with a smartphone to show various notifications such as e-mails and txt messages. 

I would also like to add NFC in the next hardware revision, allowing the watch to be used as an access card, though I still need to research this a bit more.

 Things that currently work:

  • Clock (Obvious requirement for a watch!)
  • Calendar (Shows upcoming events, eg. my university timetable)
  • USB-HID communications & programming
  • Custom pre-emptive RTOS with low-power sleep
  • Accelerometer graph view
  • Full colour graphics at approx 10FPS, with an optimized graphics library
  • USB battery charging

 Things I'm working on/would like to do:

  • Bluetooth 4.0 LE - The hardware is soldered and works, but I still need to write the drivers.
  • Magnetometer/Compass app
  • "Tap to wake" using the accelerometer
  • Alarm clock!
  • Improve the battery life (currently I get about a day's worth of life)
  • A revision 3 PCB that fixes all the issues I've found so far

I use this watch every day (and rely on it for my university timetable), so I can tell you that it does indeed work! There's still much to be done though before it could even be considered "consumer grade", but that wasn't the point of the project anyway.

And of course, all this is released under the Open Source Hardware(OSHW) license!

  • 1 × PIC24FJ256DA206 Microprocessors, Microcontrollers, DSPs / Microcontrollers (MCUs)
  • 1 × 128x128 RGB OLED Display
  • 1 × nRF8001 Bluetooth 4.0 LE Transceiver
  • 1 × MMA7455 Accelerometer
  • 1 × HMC5883L Magnetometer

View all 6 components

  • An Overdue Update

    Jared Sanson11/23/2014 at 04:57 0 comments

    Sorry for the lack of updates... I've been busy with University over the past month with end of year exams and such, but now that's finished I can turn my attention back to this project!

    I will now try to finish off the firmware to a stage where everything is more or less functional, and then I will begin creating a new hardware design based on e-ink technology and ultra-low power consumption electronics, and try to fit in some additional sensors. I may also revise the current OLED watch design to fix the issues with the current hardware, in case people would like to build the OLED version. I know a few people are attempting it!

    The next steps for now are:

    • Bluetooth 4.0 communications
    • Magnetometer driver (and compass application)
    • Tap-to-wake functionality
    • Alarm clock API and application
    • Better PC software for updating calendar, etc.

  • Semifinals Update

    Jared Sanson09/29/2014 at 06:48 0 comments

    It's been pretty hectic at uni, but I'd like to share my latest improvements to the watch so far:

    Where to from here?
    Well I would definitely like to implement the bluetooth 4.0 driver when I have time, so that I can implement wireless sync with my PC and phone instead of requiring a USB cable.

    I would also like to add gesture recognition for automatically waking up the display, a compass app using the built-in magnetometer, and a smart alarm clock that detects my sleeping patterns to determine the optimal time to wake me up at!

    And finally I would like to create a new PCB that fixes all the issues I've had so far.

    Of course, the entire project is available under the Open Source Hardware (OSHW) license, and I welcome any contributions. (I know one other person has tried building my design, with success!)

  • Progress Update

    Jared Sanson09/16/2014 at 03:46 0 comments

    It's been a bit of a hectic week with University projects as well as this, but I've been chipping away at my github issues slowly fixing all the bugs with the firmware! (https://github.com/jorticus/zeitgeber-firmware/issues)

    I've had quite a few interesting bugs to fix:

    • Systick overflow bugs causing the watch to reset
    • USB not detecting that the cable has been unplugged
    • Buffer overflows in the printf() library
    • Image buffer becoming corrupted when compiler optimizations are enabled

    On the upside, I've got a new UI prototype and events system under-way:

    New UI
    CPU Utilization
    Old UI

  • Bluetooth Update

    Jared Sanson09/04/2014 at 02:20 0 comments

    I finally got around to soldering in the nRF8001 bluetooth LE chip, and yes it does work! (I haven't yet tested the RF side of things, I only know it responds to commands)

    Also see my carefully soldered wires? This is why you should always add test points to your PCB!!! (The wires are connected to the SPI data/clock lines)

    Bonus picture: Blue Screen of Death!

    It now tells me something has gone wrong instead of just restarting. In this case my drawing code had some issues with pointers and near/far data addressing (Ah the joys of 16-bit processors)

  • UI Mockups

    Jared Sanson08/31/2014 at 02:28 0 comments

    Here are some of my UI mockups from earlier on in the project..

    You can probably tell it is somewhat inspired from the Android Holo theme, but I am also using aspects in my website's design too. The battery bar is inspired from an app you can get on the Android market, which I think provides nice simple visual feedback of the battery level.

    I wanted to keep it very minimalistic, partly for the asethetics, but also to keep power consumption down and to reduce visible ghosting artifacts which seem to be a problem with my display.

  • System Overview

    Jared Sanson08/21/2014 at 05:05 0 comments

    I've finally put together a short video for the competition:

    System Overview:

    Firmware Overview:

    Everything is available under the Open-Source Hardware license (OSHW).

  • Resetting Bug

    Jared Sanson08/18/2014 at 11:41 0 comments

    I have some further thoughts into this resetting bug; I've realised the watch doesn't actually report a brown-out reset, and it ONLY happens after leaving the watch in sleep mode for an extended amount of time (>1 hour). Furthermore, the scope trace appears identical for both when it works fine, and when it resets.

    Perhaps there's a bug in my RTOS? Maybe I should move to FreeRTOS instead!

  • Debugging

    Jared Sanson08/16/2014 at 05:06 0 comments

    So I've been tackling a rather tricky bug recently, where the whole watch would reset sometimes after waking up from sleep. I believe I have tracked the cause down to the voltage sagging too much and causing a brownout, as you can see in the following oscilloscope trace:

    Unfortunately I can't seem to fix it, I've tried adding an inductor in series with the MCU, along with a 20uF capacitor, but neither have any affect on the above trace. This is probably due to the fact the OLED draws up to 100mA on start up.

    I think the only way I can fix this is to disable the brown-out reset altogether, or perhaps I can figure out a way to soft-start the OLED.

    Also, my bluetooth chips are on their way, so hopefully I can solder them in soon!

  • Ordered Components

    Jared Sanson08/08/2014 at 21:59 0 comments

    I've finally got around to putting in an order for the nRF8001 bluetooth chip, so I will soon be able to test whether my PCB actually works or not! (I've never designed an RF layout before) 

    I should have it all soldered on in the next week or so.

    I have also ordered an EFM32 devboard so I can start prototyping my next watch design, which will feature much lower power components and an e-ink display instead of OLED.

    Interestingly, my OLED seems to have killed off a whole column of pixels, and they're stuck blue. ESD damage perhaps? Because I didn't stress the cable connection this time!

View all 9 project logs

Enjoy this project?

Share

Discussions

k1200s wrote 03/05/2019 at 01:54 point

Is there any availability preview for the Rev. 3?

That´s a great project, congratulations!

  Are you sure? yes | no

Krille Ellirk wrote 03/22/2017 at 19:09 point

Can you use the PIC24FJ256DA206 microcontroller to make an MP3 in the style of iPod Classic???

  Are you sure? yes | no

Austin Marandos wrote 01/30/2017 at 04:43 point

Hi, i was just wondering if you could give me the link to the OLED display that you used? I can't seem to find a link on this page

  Are you sure? yes | no

Jared Sanson wrote 01/30/2017 at 06:58 point

It was a generic SSD1351 1.5" OLED display. This is the one I got:  https://www.aliexpress.com/item/2pcs-1-5-inch-color-OLED-Display-screen-with-128x128-Resolution-SPI-Parallel-Interface-SSD1351-Controller/1461252182.html

You can also find them on Element14/Farnell, but they're like 4x the price.

  Are you sure? yes | no

Andrew Cassidy wrote 11/15/2016 at 18:26 point

Oops, Im making a smartwatch with the same name. Time for me to come up with a new one then

  Are you sure? yes | no

Radu Motisan wrote 07/15/2016 at 13:03 point

Love this Jared, how are things going with the project?

  Are you sure? yes | no

Jared Sanson wrote 07/26/2016 at 04:34 point

I've sort of halted development of this one, but I have plans to create a new version using completely different technologies :) Probably won't appear anytime soon though.

  Are you sure? yes | no

Radu Motisan wrote 08/05/2016 at 17:36 point

hope you do that, you're clearly good at what you're doing!

  Are you sure? yes | no

silvio biasiol wrote 04/14/2016 at 21:27 point

That's very cool! Bravissimo!

  Are you sure? yes | no

eric.kimei wrote 05/07/2015 at 17:51 point

wow cool sound interesting think gotta start learning about smart watches

  Are you sure? yes | no

Moritz Wenzel wrote 01/19/2015 at 10:54 point

Hey Jared, I found your project a few weeks ago and really like your watch! I'm also building my own 'Smartwatch' and it's nice to see how other people made it! :)
Thanks for sharing this with us!
~Moritz

  Are you sure? yes | no

chesterthehedgehog40 wrote 01/12/2015 at 22:29 point

Is your website still down, I can't access it.

  Are you sure? yes | no

Jared Sanson wrote 01/13/2015 at 09:03 point

Ah whoops something went wrong with my hosting, thanks for letting me know! It should be back up now.

  Are you sure? yes | no

zeevro wrote 10/21/2014 at 17:54 point
I would totally support this on Kickstarter!!

  Are you sure? yes | no

jaromir.sukuba wrote 09/29/2014 at 07:01 point
Nice project!
By the way, where can one buy the watch case? I tried to search through the project info/logs and somehow I can't find this info.

  Are you sure? yes | no

Jared Sanson wrote 09/29/2014 at 07:18 point

  Are you sure? yes | no

WΛLLTΞCH wrote 09/18/2014 at 00:08 point
Hi Jared! I'm working on my watch, and I'm really interested to know how you got hold of the battery percentage. I haven't come across a battery monitor IC that I've liked, and would like to know how you've done it. Also, what kind of battery life do you get? Thanks! -John

  Are you sure? yes | no

Jared Sanson wrote 09/19/2014 at 05:51 point
Hey, I'm actually just using a voltage divider + ADC to measure the battery voltage. Not very accurate but useful enough! (0% = 3.6V, 100% = 4.15V) I think there's a way to calculate actual capacity if you can also measure current (though that's a bit harder to do).

I'm currently getting about a day's worth of battery life, the trick is to put everything into sleep mode as much as possible.

Keep up the good work on your project! You're making great progress!

  Are you sure? yes | no

peter jansen wrote 08/24/2014 at 21:54 point
This is a great project, and really impressive! I really like your font library, and the variation of fonts that it has!

I think we're using the same display in our projects, and I was surprised how much juice it uses -- the +13V line can draw nearly 300ma when the display is on full-white, which requires it to have a decent sized battery. I think the protocol for the OLED initialization specifies that the OLED +13V should be disabled until the controller is enabled, which might be where the resetting bug is coming from, if there's too much current draw? For some different (much larger) OLEDs I've noticed that they would draw /a lot/ of juice and heat up substantially if the OLED voltage was enabled before the controller was initialized, so there might be something similar going on here, just briefly? It might not be something folks would notice unless their projects were battery powered.

  Are you sure? yes | no

Jared Sanson wrote 08/26/2014 at 09:00 point
Yeah I was also suprised at how much current it drew (mine used at least 100mA).
Thanks for the tips, I did try adding a delay between +12 power on and enabling the controller, but I don't think that fixed the problem. Maybe I'll try again just in case!

  Are you sure? yes | no

Christian wrote 08/20/2014 at 17:00 point
I really like what you have done. I've been working on my own watch project for a while now (too long actually), but yours beats mine out IMO. How hard was it to program for your OLED? The one I am using uses a simple serial interface, but I like the amount of control you seem to have with yours. Also, what kind of peizo are you using? I've been having a hard time finding a small surface mount one.

  Are you sure? yes | no

Jared Sanson wrote 08/20/2014 at 22:24 point
Ah well don't let me put you of your design, half the fun is doing it yourself! GPS is a pretty cool idea too

The OLED is actually pretty easy, it just takes a bit more work. Basically I have a 128x128 image buffer on the PIC, and that just gets written straight out to the OLED through an 8-bit data bus. I have my own drawing functions for drawing text/images/lines to that image buffer, but there are open-source libraries for that. The trickiest thing is the commands you need to send the display on start-up, but there's lots of code around on the internet for that. Also you have to make sure your microcontroller's got enough RAM for the buffer! 128x128x(2 bytes per colour)=32kiB of RAM!

As for the peizo, it's just something ripped out of an old watch soldered to wires...

  Are you sure? yes | no

Mark Jeronimus wrote 08/19/2014 at 18:08 point
I LOVE THIS. I was searching for smart watches that I can program on and came back empty every time. The Pebble doesn't multitask, the TI doesn't have matrix display, the WIMM, Sony, i'm Watch and others don't have enough buttons, are Android (overkill) or don't last long (not to mention that I can't verify my specific requirements without hands-on experience)

I want a wrist-device with RTC (doh), matrix display that's always on (even when stationary), easily programmable, lasts 20 hours on a charge, and at least four buttons (for up, down, enter and back). Will yours be able to do this once finished?

  Are you sure? yes | no

Jared Sanson wrote 08/20/2014 at 00:00 point
I'm glad you like it!

The current design uses an OLED, which in retrospect isn't that great for a watch because of the simple fact that it uses a lot of power, thus you can't have it on all the time if you want it to last an appreciable amount of time.

That's why I'm looking at e-ink for my next design, though that will be quite a few months away yet. With e-ink I expect battery life to be weeks or even months!

FYI another hacker has developed a smart-watch using "memory LCD" technology which is similar to e-ink: https://github.com/hairykiwi/OTM-02

  Are you sure? yes | no

drsmith900 wrote 08/06/2014 at 23:32 point
This looks great! I've been mulling over this sort of idea myself and I reckon you could probably get good results controlling the watch using tap/double tap on the accelerometer, if you have a simple UI

  Are you sure? yes | no

Jared Sanson wrote 08/07/2014 at 03:48 point
Yeah I've been meaning to implement that sort of UI for my current OLED prototype, but for now buttons work well enough. I know the accelerometer I'm currently using has a "tap detect" function which can generate an external interrupt, thus saving the MCU from having to continually sample it, which wouldn't be terribly great for battery life.

  Are you sure? yes | no

Adam Fabio wrote 08/06/2014 at 04:37 point
As a fellow watch designer, I'm watching this one - (pun intended). Gecko power is a great choice - plenty of processor, and low power.
I'm curious how the e-ink display will handle things like scrolling or sweep second hands.

  Are you sure? yes | no

Jared Sanson wrote 08/06/2014 at 21:40 point
I did some limited testing with the e-ink, I can get about 1-2FPS with a full refresh every frame, so it probably isn't quite fast enough for drawing a seconds hand or doing any scrolling. I am going to try some more experiments and see how much I can do with it though!

I have seen the Sharp Memory LCD "ePaper" used in another watch which has a higher framerate, but personally I like the look of eInk.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates