Skip to content
/ ZSWatch Public
forked from jakkra/ZSWatch

ZSWatch - the Open Source Zephyr™ based Smartwatch, including both HW and FW.

License

Notifications You must be signed in to change notification settings

ldab/ZSWatch

 
 

Repository files navigation

ZSWatch_gh_banner

License discord

ZSWatch v4 CNC:ed Stainless Steel (left), Clear Resin 3D print (right)


Smartwatch built from scratch, both hardware and software. Built on the Zephyr™ Project RTOS, hence the name ZSWatch - Zephyr Smartwatch.


UI and features

walkthrough_watch.mp4

Watch my presentation at Zephyr Developer Summit 2023

Building or getting one

Some things are still in progress:

I'll also build a few initial kits (assembled) for those who don't want or can build ZSWatch themselves.
In addition to the assembled ZSWatch and dock you will get the following compared to if you build it yourself:

  • A magnetic dock connector and cable. I got custom-ordered cables to fit the needs of ZSWatch.
  • Dock with onboard SEGGER J-Link OB debugger, which means you won't need an external debugger for ZSWatch development and flashing.
  • Possibly CNC:ed casing in Stainless steel.

If you are interested in a kit or want to get notified when the missing parts above are resolved, fill in your mail here (Google form) and I'll send a reminder when it's ready.

Or if you want to get notified for releases and when the missing parts are finished simply press the Watch button (next to Fork and Star) -> Custom -> Releases and you will see in your feed when it's officially released.

Table of content ZSWatch

Hardware features

  • nRF5340 BLE chip (u-blox NORA-B10 module).
    • 128 MHz Dual core.
    • 512 KB RAM.
    • 1 MB Flash.
    • 30 MHz SPI for display.
  • 240x240 round display with touch screen.
  • IMU Bosch BMI270, with this one it's possible to do many fancy things such as navigation using gestures and the typical smartwatch wakeup by moving the arm so the display is viewable.
  • Bosch BME688 Environmental sensor with AI.
  • Bosch BMP581 High performance pressure sensor accuracy in units of ~20cm's.
  • ST LIS2MDLTR Magnetometer.
  • Macronix MX25U51245GZ4I00 64 MB external flash.
  • Broadcom APDS-9306-065 Light Sensor for automatic brightness control.
  • Micro Crystal RV-8263-C8 RTC for time keeping and alarm functions.
  • Knowles SPK0641HT4H-1 I2S microphone for audio recording.
  • Nordic nPM1300 PMIC for power and system management
  • Texas Instruments TS3USB221A USB / SWD switch to provide a USB or SWD interface on the dock connector.
  • Option to not mount some sensors to save BOM cost.

Charger/Dock

Option with and without onboard SEGGER J-Link OB debugger.
As the debugger requires a license, this will only be available as part of a kit.

See more at https://github.com/jakkra/ZSWatch-Dock

Enclosure/Casing

3D printed casing with 3D printed buttons, option CNC:able casing in metal.

Software Features

Features and progress

There are almost endless possibilities for features that could be implemented, see here for full progress and in GitHub issues.

Watchfaces

watchfaces.mp4

Smartphone communication

Android phone communication

Fortunately, there is a great Android app called GadgetBridge that handles everything needed on the phone side, such as notifications management, music control and so much more... The ZSWatch right now pretends to be one of the supported Smart Watches in Gadgetbridge, following the same API as it does. In the future there may be a point in adding native support, we'll see.

Demo of doing HTTP requests over BLE through Gadgetbridge.

http_demo.mp4

Pairing

  • In the watch go to Settings -> Bluetooth -> Enable pairing
  • Now go reconnect to the watch from the Gadgetbridge app.
  • You should now be paired.

iOS device communication

Apple exposes Apple Notification Center Service GATT server which handles notifications management on the phone side, music control is done in the same fashion using Apple Media Service... The ZSWatch communicates straight to the iOS with no extra Apps.

Pairing

  • In the watch go to Settings -> Bluetooth -> Enable pairing
  • Now go to your device settings -> Bluetooth and choose "ZSWatch"
  • You should be prompted to pair and allow share notifications

PCB

A 4-layer board that measures 38mm in diameter is designed in KiCad.
More info here: https://github.com/jakkra/ZSWatch-HW

Environment, Compiling and running the code

See GETTING_STARTED.md

Writing apps for the Application Manager

See Wiki page about apps

Other tools

Visit https://jakkra.github.io/ZSWatch-Web-Dashboard to connect and view sensor data in a browser that supports Web Bluetooth (Source code)

Licence GPL-3.0

The main difference from MIT is now that if anyone wants to build something more with this, then they need to also open source their changes back to the project, which I think this is fair. This is so everyone can benefit from those improvements. If you think this is wrong free to contact me and I'm open to change the LICENCE.

Thanks

SEGGER for supporting SEGGER-OB licenses that make the dock a fully functional programmer and debugger for ZSWatch. Thanks to this the project will be much more approachable for persons without a J-Link debugger, letting them have full development and debugging capabilities.

About

ZSWatch - the Open Source Zephyr™ based Smartwatch, including both HW and FW.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 99.9%
  • Other 0.1%